Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Maynor996
问数
提交
22b623b1
问
问数
项目概览
Maynor996
/
问数
与 Fork 源项目一致
Fork自
知源笔记 / 问数
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
问
问数
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
22b623b1
编写于
10月 09, 2023
作者:
X
xianyu120
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Mon Oct 9 11:18:00 CST 2023 inscode
上级
65666f2c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
84 addition
and
9 deletion
+84
-9
src/main/java/org/enthusa/askdata/Application.java
src/main/java/org/enthusa/askdata/Application.java
+19
-3
src/main/java/org/enthusa/askdata/ext/inscode/GptClient.java
src/main/java/org/enthusa/askdata/ext/inscode/GptClient.java
+23
-3
src/main/java/org/enthusa/askdata/ext/inscode/GptRequest.java
...main/java/org/enthusa/askdata/ext/inscode/GptRequest.java
+42
-3
未找到文件。
src/main/java/org/enthusa/askdata/Application.java
浏览文件 @
22b623b1
...
...
@@ -11,19 +11,35 @@ import org.springframework.web.servlet.ModelAndView;
import
javax.annotation.Resource
;
/**
* @author henry
* @date 2023/6/22
* Application类是应用程序的入口类
* 包含了main方法和处理主页请求的方法
* 该类还注入了GlobalSetting对象
*
* author henry
* date 2023/6/22
*/
@Controller
@SpringBootApplication
public
class
Application
{
/**
* main方法是应用程序的入口方法
* @param args 命令行参数
*/
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Application
.
class
,
args
);
}
/**
* globalSetting属性表示全局设置对象
*/
@Resource
private
GlobalSetting
globalSetting
;
/**
* 处理主页请求的方法
* @param model 视图模型对象
* @return ModelAndView对象
*/
@GetMapping
(
"/"
)
public
ModelAndView
home
(
ModelAndView
model
)
{
String
url
=
String
.
format
(
"http://xiyu.zhiyuanbiji.cn/api/askdata?env=%s"
,
globalSetting
.
getEnv
());
...
...
@@ -32,4 +48,4 @@ public class Application {
model
.
setViewName
(
"main"
);
return
model
;
}
}
}
\ No newline at end of file
src/main/java/org/enthusa/askdata/ext/inscode/GptClient.java
浏览文件 @
22b623b1
...
...
@@ -13,13 +13,17 @@ import java.util.concurrent.TimeUnit;
import
java.util.stream.Collectors
;
/**
*
@author henry
*
@date 2023/7/1
*
GptClient类用于与GPT模型进行交互
*
通过发送请求与GPT模型进行对话完成
*/
@Slf4j
public
class
GptClient
{
private
OkHttpClient
httpClient
;
/**
* GptClient的构造函数
* @param builder GptClient的构造器
*/
private
GptClient
(
Builder
builder
)
{
httpClient
=
new
OkHttpClient
.
Builder
()
.
connectTimeout
(
10
,
TimeUnit
.
SECONDS
)
...
...
@@ -28,16 +32,32 @@ public class GptClient {
.
build
();
}
/**
* 创建GptClient的构造器
* @return GptClient的构造器
*/
public
static
Builder
builder
()
{
return
new
Builder
();
}
/**
* GptClient的构造器类
*/
public
static
final
class
Builder
{
/**
* 构建GptClient对象
* @return GptClient对象
*/
public
GptClient
build
()
{
return
new
GptClient
(
this
);
}
}
/**
* 与GPT模型进行对话完成
* @param completion GptRequest对象,包含对话的请求信息
* @return 对话完成后的文本
*/
public
String
chatCompletion
(
GptRequest
completion
)
{
String
json
=
JSON
.
toJSONString
(
completion
);
log
.
debug
(
"GptRequest: {}"
,
json
);
...
...
@@ -65,4 +85,4 @@ public class GptClient {
}
return
""
;
}
}
}
\ No newline at end of file
src/main/java/org/enthusa/askdata/ext/inscode/GptRequest.java
浏览文件 @
22b623b1
...
...
@@ -10,11 +10,18 @@ import java.util.ArrayList;
import
java.util.List
;
/**
* GptRequest类用于表示GPT请求
* 包含了消息列表、温度、停止列表和API密钥等属性
* 该类还包含了添加用户消息和助手消息的方法,以及创建新请求的静态方法
*
* @author henry
* @date 2023/7/1
*/
@Data
public
class
GptRequest
{
/**
* Role枚举表示消息的角色,包括System、Assistant和User
*/
private
enum
Role
{
System
,
Assistant
,
User
}
...
...
@@ -23,25 +30,40 @@ public class GptRequest {
private
List
<
Message
>
messages
;
/**
* 在0和2之间使用什么采样温度?较高的值如0.8会使输出更随机,而较低的值如0.2会使其更加集中和确定性。
* 默认值: 1
* temperature属性表示在0和2之间使用的采样温度
* 较高的值如0.8会使输出更随机,而较低的值如0.2会使其更加集中和确定性
* 默认值为1
*/
@Setter
@Getter
private
Double
temperature
;
/**
* stop属性表示停止列表,用于指定生成文本的终止条件
*/
@Setter
@Getter
private
List
<
String
>
stop
;
/**
* apiKey属性表示API密钥
*/
@JsonProperty
(
"apikey"
)
@JSONField
(
name
=
"apikey"
)
private
String
apiKey
;
/**
* 构造方法,初始化消息列表
*/
private
GptRequest
()
{
messages
=
new
ArrayList
<>();
}
/**
* 根据角色和消息内容添加消息到消息列表中
* @param role 消息的角色
* @param query 消息的内容
*/
private
void
addQueryWithRole
(
Role
role
,
String
query
)
{
Message
msg
=
new
Message
();
msg
.
setRole
(
role
.
name
().
toLowerCase
());
...
...
@@ -49,23 +71,40 @@ public class GptRequest {
messages
.
add
(
msg
);
}
/**
* 添加用户消息到消息列表中
* @param msg 用户消息内容
*/
public
void
addUserMsg
(
String
msg
)
{
addQueryWithRole
(
Role
.
User
,
msg
);
}
/**
* 添加助手消息到消息列表中
* @param msg 助手消息内容
*/
public
void
addAssistantMsg
(
String
msg
)
{
addQueryWithRole
(
Role
.
Assistant
,
msg
);
}
/**
* 创建新的GptRequest对象,并添加系统描述消息到消息列表中
* @param systemDesc 系统描述消息内容
* @return 新的GptRequest对象
*/
public
static
GptRequest
newRequest
(
String
systemDesc
)
{
GptRequest
request
=
new
GptRequest
();
request
.
addQueryWithRole
(
Role
.
System
,
systemDesc
);
return
request
;
}
/**
* Message类用于表示消息
* 包含了角色和内容属性
*/
@Data
public
static
class
Message
{
private
String
role
;
private
String
content
;
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录