SpringAI与Ollama大模型实战集成
·
Ollama 大模型与 Spring AI 集成方案
环境准备 Ollama 需本地安装并启动服务,默认端口为 11434。确保已下载所需大模型(如 llama2 或 mistral),可通过命令 ollama pull <model-name> 获取。
Spring Boot 后端配置 pom.xml 添加 Spring AI Ollama 依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
<version>0.8.1</version>
</dependency>
application.yml 配置:
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: llama2
temperature: 0.7
核心代码实现 创建 ChatController:
@RestController
@RequestMapping("/api/chat")
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@PostMapping
public String generate(@RequestBody String prompt) {
return chatClient.call(prompt);
}
}
Vue 前端交互实现
Axios 请求封装
import axios from 'axios';
const chatAPI = {
sendMessage: (message) => {
return axios.post('/api/chat', message, {
headers: { 'Content-Type': 'text/plain' }
});
}
};
组件示例
<template>
<div>
<textarea v-model="inputText"></textarea>
<button @click="sendMessage">发送</button>
<div>{{ response }}</div>
</div>
</template>
<script>
export default {
data() {
return {
inputText: '',
response: ''
};
},
methods: {
async sendMessage() {
const res = await chatAPI.sendMessage(this.inputText);
this.response = res.data;
}
}
};
</script>
高级功能扩展
流式响应处理 后端修改为流式接口:
@GetMapping("/stream")
public Flux<String> streamChat(@RequestParam String message) {
return chatClient.stream(message);
}
前端使用 SSE 接收:
const eventSource = new EventSource(`/api/chat/stream?message=${encodeURIComponent(inputText)}`);
eventSource.onmessage = (e) => {
this.response += e.data;
};
对话历史管理 Spring 端可注入 ChatMemory 组件:
@Bean
ChatMemory chatMemory() {
return new InMemoryChatMemory();
}
部署注意事项
跨域配置 Spring Boot 添加配置类:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("*");
}
}
性能优化建议
- 设置合理的超时时间
- 对 Ollama 响应做缓存处理
- 前端实现消息节流控制
常见问题解决
模型加载失败 检查 Ollama 日志确认模型是否存在:
ollama list
长响应截断 调整 Ollama 启动参数:
OLLAMA_MAX_KEEP_ALIVE=60m ollama serve
中文支持问题 选用支持中文的模型如 qwen:
spring:
ai:
ollama:
chat:
model: qwen:7b
更多推荐


所有评论(0)