提交 22b623b1 编写于 作者: X xianyu120

Mon Oct 9 11:18:00 CST 2023 inscode

上级 65666f2c
...@@ -11,19 +11,35 @@ import org.springframework.web.servlet.ModelAndView; ...@@ -11,19 +11,35 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource; import javax.annotation.Resource;
/** /**
* @author henry * Application类是应用程序的入口类
* @date 2023/6/22 * 包含了main方法和处理主页请求的方法
* 该类还注入了GlobalSetting对象
*
* author henry
* date 2023/6/22
*/ */
@Controller @Controller
@SpringBootApplication @SpringBootApplication
public class Application { public class Application {
/**
* main方法是应用程序的入口方法
* @param args 命令行参数
*/
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(Application.class, args); SpringApplication.run(Application.class, args);
} }
/**
* globalSetting属性表示全局设置对象
*/
@Resource @Resource
private GlobalSetting globalSetting; private GlobalSetting globalSetting;
/**
* 处理主页请求的方法
* @param model 视图模型对象
* @return ModelAndView对象
*/
@GetMapping("/") @GetMapping("/")
public ModelAndView home(ModelAndView model) { public ModelAndView home(ModelAndView model) {
String url = String.format("http://xiyu.zhiyuanbiji.cn/api/askdata?env=%s", globalSetting.getEnv()); String url = String.format("http://xiyu.zhiyuanbiji.cn/api/askdata?env=%s", globalSetting.getEnv());
......
...@@ -13,13 +13,17 @@ import java.util.concurrent.TimeUnit; ...@@ -13,13 +13,17 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @author henry * GptClient类用于与GPT模型进行交互
* @date 2023/7/1 * 通过发送请求与GPT模型进行对话完成
*/ */
@Slf4j @Slf4j
public class GptClient { public class GptClient {
private OkHttpClient httpClient; private OkHttpClient httpClient;
/**
* GptClient的构造函数
* @param builder GptClient的构造器
*/
private GptClient(Builder builder) { private GptClient(Builder builder) {
httpClient = new OkHttpClient.Builder() httpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS)
...@@ -28,16 +32,32 @@ public class GptClient { ...@@ -28,16 +32,32 @@ public class GptClient {
.build(); .build();
} }
/**
* 创建GptClient的构造器
* @return GptClient的构造器
*/
public static Builder builder() { public static Builder builder() {
return new Builder(); return new Builder();
} }
/**
* GptClient的构造器类
*/
public static final class Builder { public static final class Builder {
/**
* 构建GptClient对象
* @return GptClient对象
*/
public GptClient build() { public GptClient build() {
return new GptClient(this); return new GptClient(this);
} }
} }
/**
* 与GPT模型进行对话完成
* @param completion GptRequest对象,包含对话的请求信息
* @return 对话完成后的文本
*/
public String chatCompletion(GptRequest completion) { public String chatCompletion(GptRequest completion) {
String json = JSON.toJSONString(completion); String json = JSON.toJSONString(completion);
log.debug("GptRequest: {}", json); log.debug("GptRequest: {}", json);
......
...@@ -10,11 +10,18 @@ import java.util.ArrayList; ...@@ -10,11 +10,18 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* GptRequest类用于表示GPT请求
* 包含了消息列表、温度、停止列表和API密钥等属性
* 该类还包含了添加用户消息和助手消息的方法,以及创建新请求的静态方法
*
* @author henry * @author henry
* @date 2023/7/1 * @date 2023/7/1
*/ */
@Data @Data
public class GptRequest { public class GptRequest {
/**
* Role枚举表示消息的角色,包括System、Assistant和User
*/
private enum Role { private enum Role {
System, Assistant, User System, Assistant, User
} }
...@@ -23,25 +30,40 @@ public class GptRequest { ...@@ -23,25 +30,40 @@ public class GptRequest {
private List<Message> messages; private List<Message> messages;
/** /**
* 在0和2之间使用什么采样温度?较高的值如0.8会使输出更随机,而较低的值如0.2会使其更加集中和确定性。 * temperature属性表示在0和2之间使用的采样温度
* 默认值: 1 * 较高的值如0.8会使输出更随机,而较低的值如0.2会使其更加集中和确定性
* 默认值为1
*/ */
@Setter @Setter
@Getter @Getter
private Double temperature; private Double temperature;
/**
* stop属性表示停止列表,用于指定生成文本的终止条件
*/
@Setter @Setter
@Getter @Getter
private List<String> stop; private List<String> stop;
/**
* apiKey属性表示API密钥
*/
@JsonProperty("apikey") @JsonProperty("apikey")
@JSONField(name = "apikey") @JSONField(name = "apikey")
private String apiKey; private String apiKey;
/**
* 构造方法,初始化消息列表
*/
private GptRequest() { private GptRequest() {
messages = new ArrayList<>(); messages = new ArrayList<>();
} }
/**
* 根据角色和消息内容添加消息到消息列表中
* @param role 消息的角色
* @param query 消息的内容
*/
private void addQueryWithRole(Role role, String query) { private void addQueryWithRole(Role role, String query) {
Message msg = new Message(); Message msg = new Message();
msg.setRole(role.name().toLowerCase()); msg.setRole(role.name().toLowerCase());
...@@ -49,20 +71,37 @@ public class GptRequest { ...@@ -49,20 +71,37 @@ public class GptRequest {
messages.add(msg); messages.add(msg);
} }
/**
* 添加用户消息到消息列表中
* @param msg 用户消息内容
*/
public void addUserMsg(String msg) { public void addUserMsg(String msg) {
addQueryWithRole(Role.User, msg); addQueryWithRole(Role.User, msg);
} }
/**
* 添加助手消息到消息列表中
* @param msg 助手消息内容
*/
public void addAssistantMsg(String msg) { public void addAssistantMsg(String msg) {
addQueryWithRole(Role.Assistant, msg); addQueryWithRole(Role.Assistant, msg);
} }
/**
* 创建新的GptRequest对象,并添加系统描述消息到消息列表中
* @param systemDesc 系统描述消息内容
* @return 新的GptRequest对象
*/
public static GptRequest newRequest(String systemDesc) { public static GptRequest newRequest(String systemDesc) {
GptRequest request = new GptRequest(); GptRequest request = new GptRequest();
request.addQueryWithRole(Role.System, systemDesc); request.addQueryWithRole(Role.System, systemDesc);
return request; return request;
} }
/**
* Message类用于表示消息
* 包含了角色和内容属性
*/
@Data @Data
public static class Message { public static class Message {
private String role; private String role;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册