Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
spring-study
提交
97f61cff
S
spring-study
项目概览
檀越@新空间
/
spring-study
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-study
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
97f61cff
编写于
3月 22, 2023
作者:
檀越@新空间
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:使用chatgpt接口调用
上级
7506ade4
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
245 addition
and
23 deletion
+245
-23
pom.xml
pom.xml
+17
-0
src/main/java/com/kwan/spring5/pojo/ChoiceMessage.java
src/main/java/com/kwan/spring5/pojo/ChoiceMessage.java
+22
-0
src/main/java/com/kwan/spring5/pojo/Choices.java
src/main/java/com/kwan/spring5/pojo/Choices.java
+25
-0
src/main/java/com/kwan/spring5/pojo/CompletionChatRequest.java
...ain/java/com/kwan/spring5/pojo/CompletionChatRequest.java
+41
-0
src/main/java/com/kwan/spring5/pojo/CompletionChatResponse.java
...in/java/com/kwan/spring5/pojo/CompletionChatResponse.java
+41
-0
src/main/java/com/kwan/spring5/utils/OpenAIChatGpt.java
src/main/java/com/kwan/spring5/utils/OpenAIChatGpt.java
+99
-0
target/classes/spring1.xml
target/classes/spring1.xml
+0
-4
target/classes/spring23.xml
target/classes/spring23.xml
+0
-19
未找到文件。
pom.xml
浏览文件 @
97f61cff
...
...
@@ -88,5 +88,22 @@
<artifactId>
guava
</artifactId>
<version>
31.1-jre
</version>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.26
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.theokanning.openai-gpt3-java/service -->
<dependency>
<groupId>
com.theokanning.openai-gpt3-java
</groupId>
<artifactId>
service
</artifactId>
<version>
0.11.0
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.theokanning.openai-gpt3-java/client -->
<dependency>
<groupId>
com.theokanning.openai-gpt3-java
</groupId>
<artifactId>
client
</artifactId>
<version>
0.11.1
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
src/main/java/com/kwan/spring5/pojo/ChoiceMessage.java
0 → 100644
浏览文件 @
97f61cff
package
com.kwan.spring5.pojo
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public
class
ChoiceMessage
{
/**
* 角色
*/
String
role
;
/**
* 具体内容
*/
String
content
;
}
src/main/java/com/kwan/spring5/pojo/Choices.java
0 → 100644
浏览文件 @
97f61cff
package
com.kwan.spring5.pojo
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public
class
Choices
{
/**
* 内容对象
*/
private
ChoiceMessage
message
;
/**
* 结束原因
*/
private
String
finish_reason
;
/**
* 索引位置
*/
private
Integer
index
;
}
src/main/java/com/kwan/spring5/pojo/CompletionChatRequest.java
0 → 100644
浏览文件 @
97f61cff
package
com.kwan.spring5.pojo
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Map
;
/**
* 请求参数
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/3/22 21:00
*/
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public
class
CompletionChatRequest
{
String
model
;
List
<
Object
>
messages
;
Integer
maxTokens
;
Double
temperature
;
Double
topP
;
Integer
n
;
Boolean
stream
;
Integer
logprobs
;
Boolean
echo
;
List
<
String
>
stop
;
Double
presencePenalty
;
Double
frequencyPenalty
;
Integer
bestOf
;
Map
<
String
,
Integer
>
logitBias
;
String
user
;
}
src/main/java/com/kwan/spring5/pojo/CompletionChatResponse.java
0 → 100644
浏览文件 @
97f61cff
package
com.kwan.spring5.pojo
;
import
com.theokanning.openai.Usage
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public
class
CompletionChatResponse
{
/**
* id
*/
String
id
;
/**
* chat.completion
*/
String
object
;
/**
* 创建时间
*/
long
created
;
/**
* 模型
*/
String
model
;
/**
* 结果集
*/
List
<
Choices
>
choices
;
/**
* 使用情况
*/
Usage
usage
;
}
src/main/java/com/kwan/spring5/utils/OpenAIChatGpt.java
0 → 100644
浏览文件 @
97f61cff
package
com.kwan.spring5.utils
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson2.JSON
;
import
com.kwan.spring5.pojo.ChoiceMessage
;
import
com.kwan.spring5.pojo.Choices
;
import
com.kwan.spring5.pojo.CompletionChatRequest
;
import
com.kwan.spring5.pojo.CompletionChatResponse
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* chatgpt-api
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/3/22 20:40
*/
public
class
OpenAIChatGpt
{
/**
* 请求地址
*/
final
static
private
String
chatCompletionUrl
=
"https://api.openai.com/v1/chat/completions"
;
/**
* 模型
*/
final
static
private
String
model
=
"gpt-3.5-turbo"
;
/**
* 这里使用你自己的认证信息
*/
final
static
private
String
Authorization
=
"Bearer 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"
;
public
static
void
main
(
String
[]
args
)
{
String
question
=
"默写静夜思"
;
//这里是我根据模型请求封装的模型实体
CompletionChatRequest
completionChatRequest
=
new
CompletionChatRequest
();
//封装http请求
HttpRequest
post
=
HttpUtil
.
createPost
(
chatCompletionUrl
).
timeout
(
300000
);
Map
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"Authorization"
,
Authorization
);
post
.
addHeaders
(
headers
);
post
.
contentType
(
"application/json;charset=UTF-8"
);
completionChatRequest
.
setModel
(
model
);
ChoiceMessage
message
=
new
ChoiceMessage
(
"user"
,
question
);
List
<
Object
>
messages
=
new
ArrayList
<>();
messages
.
add
(
message
);
completionChatRequest
.
setMessages
(
messages
);
post
.
body
(
JSON
.
toJSONString
(
completionChatRequest
));
String
body
=
post
.
execute
().
body
();
CompletionChatResponse
completionChatResponse
=
JSON
.
parseObject
(
body
,
CompletionChatResponse
.
class
);
final
List
<
Choices
>
choices
=
completionChatResponse
.
getChoices
();
for
(
Choices
choice
:
choices
)
{
final
ChoiceMessage
message1
=
choice
.
getMessage
();
final
String
content
=
message1
.
getContent
();
System
.
out
.
println
(
content
);
}
System
.
out
.
println
(
"成功"
);
}
// public static CompletionChatResponse chatCompletion(String prompt) {//prompt即要将要发送至gtp的内容
// //这里我把用户发送和机器人返回的20条内容内容存在了redis中,用于关联对话上下文场景,如果不需要,注释掉即可,直接new一个ArrayList
// List<Object> messages = getUserCacheMessages();
// int size = messages.size();
//
// if (size > 19) {
// messages.remove(0);
// }
//
// messages.add(message);
// setUserCacheMessages(messages);//把新的放到redis
// completionChatRequest.setMessages(messages);
// post.body(JSON.toJSONString(completionChatRequest));
// String body = post.execute().body();
// CompletionChatResponse completionChatResponse = JSON.parseObject(body, CompletionChatResponse.class);
// return completionChatResponse;
// }
//
// public static List<Object> getUserCacheMessages(){
// RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
// List<Object> cacheMessages = redisCache.getCacheObject(JwtTokenUtil.getUserId + ":messages");
// if (StringUtils.isEmpty(cacheMessages)){
// cacheMessages= new ArrayList<>();
// }
// return cacheMessages;
// }
//
// public static void setUserCacheMessages(List<Object> messages){
// while(messages.size()>20){
// messages.remove(0);
// }
// RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
// redisCache.setCacheObject(JwtTokenUtil.getUserId + ":messages", messages, 30, TimeUnit.MINUTES);
// }
}
target/classes/spring1.xml
浏览文件 @
97f61cff
...
...
@@ -9,7 +9,6 @@
<context:annotation-config/>
<!--注入user类-->
<bean
id=
"user"
class=
"com.kwan.spring5.User"
></bean>
<!--spring方式: set方法注入属性-->
<bean
id=
"book"
class=
"com.kwan.spring5.Book"
>
<!--使用property完成属性注入
...
...
@@ -19,12 +18,9 @@
<property
name=
"bname"
value=
"Hello"
></property>
<property
name=
"bauthor"
value=
"World"
></property>
</bean>
<!--(2)spring方式:有参数构造注入属性-->
<bean
id=
"orders"
class=
"com.kwan.spring5.Orders"
>
<constructor-arg
name=
"oname"
value=
"Hello"
></constructor-arg>
<constructor-arg
name=
"address"
value=
"China!"
></constructor-arg>
</bean>
</beans>
\ No newline at end of file
target/classes/spring23.xml
已删除
100644 → 0
浏览文件 @
7506ade4
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context=
"http://www.springframework.org/schema/context"
xmlns:aop=
"http://www.springframework.org/schema/aop"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd"
>
<!-- 开启注解扫描 -->
<context:component-scan
base-package=
"com.kwan"
></context:component-scan>
<!-- 开启Aspect生成代理对象-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录