【AI】——SpringAI通过Ollama本地部署的Deepseek模型实现一个对话机器人(一)
Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。

🎼个人主页:【Y小夜】
😎作者简介:一位双非学校的大三学生,编程爱好者,
专注于基础和实战分享,欢迎私信咨询!
🎆入门专栏:🎇【MySQL,Javaweb,Rust,python】
🎈热门专栏:🎊【Springboot,Redis,Springsecurity,Docker,AI】
感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录
🎊SpringAI对话机器人
🎈SpringAI简介
Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。
🎈基础构建
🍕引入依赖
首先自己可以先建立一个基础的springboot工程,然后进行后续的操作。
这里我们先以Moonshot API作为例子
建立工程之后,引入依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
和
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-moonshot-spring-boot-starter</artifactId>
</dependency>
使用上述的依赖的时候,maven官方还未将上述使用的依赖录入,所以我们需要重新配置一个仓库地址。先把以前setting文件中的配置的镜像给删除。

然后再在pom.xml文件中,引入
<repositories>
<!--这里使用的是快照版本-->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
然后clean一下,重新编译,就可以将这两个依赖成功引入了 。
🍕Key的申请
点击用户中心:

然后点击API-Key管理,点击新建

将秘钥复制下来。
🍕基础配置
spring:
ai:
moonshot:
api-key: 刚刚创建的秘钥
chat:
options:
model: moonshot-v1-8k
temperature: 0.7
🍕编写基础开发类
🎊创建一个Init类
主要是为了将模型初始化,这里我们使用moonshot模型
package com.yan.springai;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.moonshot.MoonshotChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class Init {
//要使用的模型
final MoonshotChatModel model;
@Bean
public ChatClient chatClient(){
return ChatClient.builder(model).build();
}
}
🎊编写ChatAPI类
package com.yan.springai;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
public class ChatAPI {
final ChatClient chatClient;
@GetMapping("/ai/chat")
public String chat(@RequestParam(value ="message") String message){
return chatClient.prompt().user(message).call().content();
}
}
然后我们启动一下项目,如果发现这个报错的话

需要引入web依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
然后我们运行一下地址:


控制台上就输出了一些内容:

说明我们就已经调用成功了。
🍕为AI设计角色和场景
我们现在为AI赋一下他的角色,修改一下Initl类
package com.yan.springai;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.moonshot.MoonshotChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class Init {
//要使用的模型
final MoonshotChatModel model;
@Bean
public ChatClient chatClient(){
return ChatClient.builder(model)
.defaultSystem("假如你是特朗普,接下来的对话你必须以特朗普的语气来进行?")
.build();
}
}
再次运行一下,看一下输出结果

🎈增加记忆能力
我们通过调用,会发现,我们的AI是没有记忆的。
会有会话能力的AI一般就是将第一次的回答,和后面的问题拼接到一起,产生记忆能力:
我们修改一下Init类
package com.yan.springai;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.ai.moonshot.MoonshotChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class Init {
//要使用的模型
final MoonshotChatModel model;
@Bean
public ChatClient chatClient(ChatMemory chatMemory){
return ChatClient.builder(model)
.defaultSystem("假如你是特朗普,接下来的对话你必须以特朗普的语气来进行?")
.defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory))//这里主要负责拼接
.build();
}
@Bean
public ChatMemory chatMemory(){
//负责存和读
return new InMemoryChatMemory();
}
}
然后我们在运行一下这个,再次提问问题




可以看出来,AI已经产生了记忆。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)