Ollama 本地模型接入
历史主题来源:在 Ollama 运行 DeepSeek / Qwen / Llama。
本页重点:业务代码尽量不改,只替换模型后端。
1. 基础配置
ai:
ollama:
base-url: http://127.0.0.1:11434
2. 获取本地模型服务
IChatService chatService = aiService.getChatService(PlatformType.OLLAMA);
3. 非流式调用
ChatCompletion req = ChatCompletion.builder()
.model("qwen2.5:7b")
.message(ChatMessage.withUser("给我一些 Java 线程池最佳实践"))
.build();
ChatCompletionResponse resp = chatService.chatCompletion(req);
System.out.println(resp.getChoices().get(0).getMessage().getContent());
4. 流式调用
chatService.chatCompletionStream(req, new SseListener() {
@Override
protected void send() {
if (!getCurrStr().isEmpty()) {
System.out.print(getCurrStr());
}
}
});
5. 工具调用兼容性
- 工具声明方式可与 OpenAI 兼容链路保持一致。
- 但不同本地模型在 function-calling 稳定性上差异很大。
- 建议准备“解析失败兜底策略”:
- 规则解析
- 重试一次
- 回退普通回答
6. 性能与稳定性建议
- 首次请求会包含模型预热成本,压测要忽略冷启动样本。
- 对大模型建议设置并发上限,避免内存挤兑。
- 流式场景优先传短问题,验证链路后再上复杂任务。
7. 与云端模型混用策略
推荐“分层路由”思路:
- 高频低风险任务 -> 本地模型
- 高复杂/高准确任务 -> 云端模型
在 Agent 场景中,可把模型选择逻辑放到路由节点(StateGraphWorkflow)。