
1、pom
<properties>
<java.version>17</java.version>
<spring-ai.version>2.0.0-M7</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-openai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc-test</artifactId>
<scope>test</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>
2、application.yml
2.1
${OPENAI_API_KEY}

2.2
ollama docker容器
宿主机:192.168.91.164

容器ollama启动模型qwen2.5:0.5b

访问宿主机模型
http://192.168.91.164:11434/

spring:
application:
name: dashscope18088
ai:
openai:
api-key: ${OPENAI_API_KEY}
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
chat:
model: qwen3.6-plus
# chat:
# model: qwen3.6-plus
# 可选:超时/重试配置
ollama:
base-url: http://192.168.91.164:11434
chat:
model: qwen2.5:0.5b
# options:
# temperature: 0.7
# max-tokens: 2000
server:
port: 18088
3、config
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AiConfiguration {
@Bean
public ChatClient chatClient(OpenAiChatModel model){
return ChatClient
.builder(model) // 绑定OpenAiChatModel模型
.build(); // 构建ChatClient实例
}
@Bean
public ChatClient chatClient2(OllamaChatModel model){
return ChatClient
.builder(model) // 绑定OllamaChatModel模型
.build(); // 构建ChatClient实例
}
}
4、controller
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RestController
public class MyAiChatController {
@Autowired
private ChatClient chatClient;
@Autowired
private ChatClient chatClient2;
@RequestMapping("/ai")
public String ai(String question){
return chatClient.prompt() // 创建 Prompt 对象,用于构建聊天请求
.user(question) // 设置用户输入
.call() // 调用模型,返回结果
.content(); // 获取结果内容
}
/**
* ollama
* @param question
* @return
*/
@RequestMapping("/ai2")
public String ai2(String question){
return chatClient2.prompt() // 创建 Prompt 对象,用于构建聊天请求
.user(question) // 设置用户输入
.call() // 调用模型,返回结果
.content(); // 获取结果内容
}
/**
* ollama
* @param question
* @return
*/
@RequestMapping(value = "/ai3",produces = "text/html;charset=UTF-8")
public Flux<String> ai3(String question){
return chatClient2.prompt() // 创建 Prompt 对象,用于构建聊天请求
.user(question) // 设置用户输入
.stream() // 流式响应输出
.content(); // 获取结果内容
}
}
5、访问
调用ollam模型
http://localhost:18088/ai2?question=你是谁?

流式
http://localhost:18088/ai3?question=你是谁?

浙公网安备 33010602011771号