SpringBoot 3.5 + LangChain4j 1.6 极速集成指南:5分钟构建本地Llama智能对话API
当Java开发者想要在现有项目中快速集成大语言模型时,往往面临复杂的配置和漫长的调试过程。本文将展示如何利用SpringBoot 3.5和LangChain4j 1.6,配合本地运行的Ollama服务,在5分钟内打造一个具备记忆功能的智能对话接口。整个过程无需云端API密钥,全部计算在本地完成。
1. 环境准备与极简配置
开始前确保已安装Java 17+和Ollama服务。Ollama的安装只需一行命令(Mac/Linux):
curl -fsSL https://ollama.com/install.sh | sh接着下载Llama3基础模型:
ollama pull llama3在SpringBoot项目中添加关键依赖(Maven配置):
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-ollama</artifactId> <version>1.6.0</version> </dependency>配置文件application.yml精简到极致:
langchain4j: ollama: base-url: http://localhost:11434 model-name: llama3 timeout: 120s2. 核心代码实现
创建聊天服务类,封装LangChain4j的核心操作:
@Service @RequiredArgsConstructor public class ChatService { private final OllamaChatModel chatModel; private final ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(20); public String chat(String message) { UserMessage userMessage = UserMessage.from(message); chatMemory.add(userMessage); AiMessage aiMessage = chatModel.generate(chatMemory.messages()).content(); chatMemory.add(aiMessage); return aiMessage.text(); } }暴露REST接口的控制器代码同样简洁:
@RestController @RequestMapping("/api/chat") @RequiredArgsConstructor public class ChatController { private final ChatService chatService; @GetMapping public String chat(@RequestParam String q) { return chatService.chat(q); } }3. 关键优化技巧
3.1 性能调优参数
在application.yml中添加这些参数可显著提升响应速度:
langchain4j: ollama: temperature: 0.3 # 降低随机性 top-p: 0.9 # 提高回答质量 num-ctx: 2048 # 上下文长度3.2 异常处理增强
为应对模型加载慢的问题,添加重试机制:
@Retryable(maxAttempts = 3, backoff = @Backoff(delay = 1000)) public String chatWithRetry(String message) { return chatService.chat(message); }4. 进阶功能扩展
4.1 多模态支持
若要处理图片输入,修改配置启用vision模型:
model-name: llama3-vision然后使用多模态消息构建:
UserMessage message = UserMessage.from( TextContent.from("描述这张图片"), ImageContent.from(new File("photo.jpg")) );4.2 对话历史持久化
集成Redis保存聊天记录:
@Bean public ChatMemory chatMemory(RedisTemplate<String, Object> redisTemplate) { return new RedisChatMemory(redisTemplate, "chat-session:"); }5. 常见问题解决方案
遇到模型不响应时,检查Ollama服务状态:
ollama list # 确认模型已加载 ollama ps # 查看运行状态若出现超时错误,尝试以下命令重启服务:
ollama serve > /dev/null 2>&1 &对于内存不足的情况,改用轻量级模型:
model-name: llama3-8b-instruct6. 测试与验证
启动应用后,用cURL测试接口:
curl "http://localhost:8080/api/chat?q=用中文解释量子计算"预期会得到类似这样的响应:
量子计算是一种利用量子力学原理(如叠加和纠缠)进行信息处理的新型计算范式...要验证记忆功能,可连续发送相关问题:
curl "http://localhost:8080/api/chat?q=刚才说的量子比特是什么"系统应该能正确引用之前的对话上下文。