
【无标题】基于deepseek-chat模型实现根据对话调数据库查询数据并返回给用户
先看数据库中数据库中有一条数据,现在我们让ai去取数据并返回在看控制台我们可以看到查询的bean启动了,完成最后为什么bean要起的见名之意这个是springboot官网回答,我之前没有把bean的名字起的见名之意,一直发现无法启动,浪费了不少米,我真的哭死,还有就是硅基流动的免费模型用不了,我测试过,它一直说我们没有链接数据库,只能胡乱编数据,这个我还尝试了3个小时,以为我的问题,真的我哭死了。
·
文章目录
-
- 基本准备
- 具体实现
- 小结
基本准备
第一步:
去deepseek开放平台 注册并申请key这个需要充钱,我就冲了2元够用就行了
第二步:
引入依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
配置文件中配置:
key大家用自己的
具体实现
private final ITbUserService tbUserService;
//下面这个是一个密封类,jdk17以后支持
public record queryInfo(Long id) {
}
@Bean
@Description("查询用户信息")
public Function<queryInfo, TbUser> getByIdUser() {
return r->{
LambdaQueryWrapper<TbUser> set= new LambdaQueryWrapper<TbUser>()
.eq(TbUser::getId, r.id)
.ne(TbUser::getDeleted, 1);
return tbUserService.getOne(set);
};
}
@Bean
public ChatClient ChatClient(ChatClient.Builder chatClient, ChatMemory chatMemory) {
return chatClient
.defaultSystem(
"""
你非常会追女孩,是一个情场高手,
当问你如何追女孩,你会从,饮食,娱乐
,游戏,聊天方式进行分析,而且最后会说
今天是 {data}.如果开头说了,就不说了,
游戏你会推荐玩王者荣耀
"""
)
.defaultAdvisors(
// new QuestionAnswerAdvisor(SimpleVectorStore, SearchRequest.builder().build()),
new PromptChatMemoryAdvisor(chatMemory)
)
.defaultTools("getByIdUser")
.build();
}
编写controller代码
public Flux<String> chat(@RequestBody promptEntity prompt) {
return chatClient
.prompt()
.user(prompt.getPrompt())
.system(s->s.param("data", LocalDate.now()))
.stream()
.content();
}
tool中的bean名字一定要起的跟功能有关系,不然模型无法调用
结果展示
先看数据库中
数据库中有一条数据,现在我们让ai去取数据并返回
在看控制台
我们可以看到查询的bean启动了,完成
最后为什么bean要起的见名之意
这个是springboot官网回答,我之前没有把bean的名字起的见名之意,一直发现无法启动,浪费了不少米,我真的哭死,还有就是硅基流动的免费模型用不了,我测试过,它一直说我们没有链接数据库,只能胡乱编数据,这个我还尝试了3个小时,以为我的问题,真的我哭死了。
更多推荐
所有评论(0)