新建项目
打开idea,新建项目

点击【下一步】,选择项目依赖项,按下面截图操作,添加Spring Web、MySQL Driver、Ollama后点击【创建】




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

修改pom.xml
引入lombok
XML
<?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>4.0.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springai</groupId>
<artifactId>spring-ai-study</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-ai-study</name>
<description>spring-ai-study</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>2.0.0-M2</spring-ai.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</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-webmvc-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</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>
</project>
修改配置文件
接下来是修改配置文件application.yaml
XML
spring:
application:
name: spring-ai-study
ai:
ollama:
# 默认就是http://localhost:11434 所以不配也可以
base-url: http://localhost:11434
chat:
# 对话模型
model: deepseek-r1:8b
创建配置类

java
package com.springai.study.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CommonConfiguration {
@Bean
public ChatClient chatClient(OllamaChatModel model) {
return ChatClient
.builder(model)
.build();
}
}
阻塞式对话
创建ChatController
java
package com.springai.study.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;
@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-study项目
3、访问chat接口和AI聊天http://localhost:8080/ai/chat?prompt=%E4%BD%A0%E6%98%AF%E8%B0%81?

流式对话
修改ChatController
增加streamChat接口
java
package com.springai.study.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
java
package com.springai.study.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CommonConfiguration {
@Bean
public ChatClient chatClient(OllamaChatModel 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?
