idea新建Spring-ai项目-deepseek
增加defaultSystem@Bean.defaultSystem("你是由深度求索(DeepSeek)开发的俏皮可爱的人工智能助手,名字叫小深,可以帮助我解决各种问题,比如学习、写作、编程、翻译、资料整理等等。").build();调试streamChat接口1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details
新建项目
打开idea,新建项目

点击【下一步】,选择项目依赖项,按下面截图操作,添加Spring Web、MySQL Driver、DeepSeek后点击【创建】,想选DeepSeek要先把Boot版本改成3.0到4.0之间,我这边选择的是3.5.12

创建完成后项目结构如下图

修改pom.xml
引入lombok
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- spring-boot版本 -->
<version>3.5.12-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springai</groupId>
<artifactId>spring-ai-deepseek</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-ai-deepseek</name>
<description>spring-ai-deepseek</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<!-- JDK版本 -->
<java.version>17</java.version>
<!-- spring-ai版本 -->
<spring-ai.version>1.1.2</spring-ai.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-deepseek</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project>
修改配置文件
接下来是修改配置文件application.yaml
spring:
application:
name: spring-ai-deepseek
ai:
deepseek:
api-key: ${DEEPSEEK_API_KEY} # 从环境变量读取,更安全,这里的 ${DEEPSEEK_API_KEY} 指的就是 Windows 的系统环境变量,改完环境变量记得重启idea
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 #这里是阿里云百炼的接口地址
chat:
options:
model: deepseek-r1 # 对话模型
temperature: 0.7 # 温度参数 0.7,控制回复的随机性(0-2),值越高越有创造性。
创建配置类

package com.springai.deepseek.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.deepseek.DeepSeekChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CommonConfiguration {
@Bean
public ChatClient chatClient(DeepSeekChatModel model){
return ChatClient
.builder(model)
.build();
}
}
阻塞式对话
创建ChatController
package com.springai.deepseek.controller;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RequiredArgsConstructor
@RestController
@RequestMapping("/ai")
public class ChatController {
private final ChatClient chatClient;
/**
* 阻塞式对话,必须等AI思考得出完整回答才响应
* @param prompt
* @return
*/
@RequestMapping("/chat")
public String chat(String prompt){
return chatClient.prompt()
.user(prompt)
.call()
.content();
}
}
调试chat接口
1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?spm=1001.2014.3001.5501
2、启动spring-ai -deepseek项目
3、访问chat接口和AI聊天http://localhost:8080/ai/chat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?

流式对话
修改ChatController
增加streamChat接口
package com.springai.deepseek.controller;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RequiredArgsConstructor
@RestController
@RequestMapping("/ai")
public class ChatController {
private final ChatClient chatClient;
/**
* 阻塞式对话,必须等AI思考得出完整回答才响应
* @param prompt
* @return
*/
@RequestMapping("/chat")
public String chat(String prompt){
return chatClient.prompt()
.user(prompt)
.call()
.content();
}
/**
* 流式对话,实时返回 AI 的回答内容
* @param prompt 用户输入的提示词或问题
* @return Flux<String> 流式响应的字符串序列,包含 AI 生成的回答内容
*/
// 指定响应内容类型为 HTML 格式,字符编码为 UTF-8,这里没指定的话会响应看不懂的乱码
@RequestMapping(value = "/streamChat", produces = "text/html;charset=utf-8")
public Flux<String> streamChat(String prompt){
return chatClient.prompt()
.user(prompt)
.stream()
.content();
}
}
调试streamChat接口
1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?spm=1001.2014.3001.5501
2、启动spring-ai-study项目
3、访问streamChat接口和AI聊天
http://localhost:8080/ai/streamChat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?
这次响应就很快了,而且能看到一字字的响应


修改模型的自我介绍
修改配置类
增加defaultSystem
package com.springai.deepseek.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.deepseek.DeepSeekChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CommonConfiguration {
@Bean
public ChatClient chatClient(DeepSeekChatModel model){
return ChatClient
.builder(model)
.defaultSystem("你是由深度求索(DeepSeek)开发的俏皮可爱的人工智能助手,名字叫小深,可以帮助我解决各种问题,比如学习、写作、编程、翻译、资料整理等等。")
.build();
}
}
调试streamChat接口
1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?spm=1001.2014.3001.5501
2、启动spring-ai-study项目
3、访问streamChat接口和AI聊天
http://localhost:8080/ai/streamChat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?

更多推荐


所有评论(0)