轻松入门SpringAI-SpringAI调用Ollama

轻松入门 Spring AI 调用 Ollama
(2025-2026 最新最实用写法)

目前使用 Spring AI + Ollama 最推荐的几种组合方式(按推荐顺序):

排名方式优点缺点/限制适合场景推荐度
1Spring AI Ollama ChatClient配置最少、写法最自然、生态最好需要 Ollama 已经在运行绝大多数日常开发★★★★★
2使用 OllamaChatModel 手动创建更灵活,可精细控制参数代码稍微多一点需要特殊参数或实验★★★★
3AiServices + Ollama适合做工具调用/结构化输出/Agent学习曲线稍高中高级用法★★★★
4直接用 Ollama Java 官方客户端不依赖 Spring AI,完全独立失去 Spring AI 所有高级抽象极致轻量/非 Spring 项目★★

最推荐写法(99% 场景都够用)

1. 依赖(使用最新稳定版)

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
    <version>1.0.0-M6  或  1.0.0.RELEASE(看你用的 spring boot 版本)</version>
</dependency>
<!-- 如果你用的是快照版或 milestone,可能需要添加仓库 -->

2. application.yml 最简配置

spring:
  ai:
    ollama:
      base-url: http://localhost:11434           # 默认就是这个,几乎不用改
      chat:
        options:
          model: qwen2.5:7b-instruct             # ← 改这里就切换模型
          # 常用推荐模型(2026年初):
          # qwen2.5:7b-instruct
          # deepseek-r1:7b
          # llama3.2:3b
          # phi4:14b
          # gemma2:9b
          temperature: 0.75
          top-p: 0.9
          max-tokens: 4096

3. 最常用代码模板(ChatClient 方式)

@RestController
@RequestMapping("/ollama")
@RequiredArgsConstructor
public class OllamaSimpleController {

    private final ChatClient chatClient;  // Spring AI 自动注入

    // 1. 普通调用
    @GetMapping("/chat")
    public String simpleChat(@RequestParam String msg) {
        return chatClient.prompt()
                .user(msg)
                .call()
                .content();
    }

    // 2. 流式输出(前端打字机效果)
    @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> streamChat(@RequestParam String msg) {
        return chatClient.prompt()
                .user(msg)
                .stream()
                .content();
    }

    // 3. 带系统提示 + 记忆(最实用组合)
    private final ChatMemory chatMemory = new MessageWindowChatMemory(10);

    @GetMapping("/memory")
    public String chatWithMemory(
            @RequestParam String sessionId,
            @RequestParam String message) {

        return chatClient.prompt()
                .system("""
                        你是一位说话很幽默、接地气、喜欢用表情的资深程序员
                        用中文回答,尽量使用 markdown 格式
                        """)
                .user(message)
                .advisors(
                    MessageChatMemoryAdvisor.builder()
                        .chatMemory(chatMemory)
                        .sessionId(sessionId)
                        .build()
                )
                .call()
                .content();
    }
}

快速上手检查清单(按顺序做)

步骤命令/操作预期结果
  1. 安装并启动 Ollama | ollama serve | 看到 http://localhost:11434
  2. 拉取一个常用模型 | ollama pull qwen2.5:7b-instruct | 模型下载完成
  3. 命令行简单测试 | ollama run qwen2.5:7b-instruct | 可以正常对话
  4. 启动 Spring Boot 项目 | 正常启动 | 无报错
  5. 浏览器访问 | /ollama/chat?msg=你好啊 | 得到中文回答
  6. 测试流式 | /ollama/stream?msg=讲个程序员笑话 | 看到逐字出现效果

常见问题速查表(2026年初常见坑)

问题原因解决方案
连接超时/拒绝连接Ollama 没启动先运行 ollama serve
模型找不到模型名写错了ollama list 查看已下载模型名
中文回答很差/乱码用了不擅长中文的模型换 qwen2.5 / deepseek-r1 / glm4 等
流式输出不工作模型本身不支持 streaming部分小模型不支持,换大一点的模型
显存爆了/启动很慢模型太大,显卡不够换 3b/7b 量级模型,或加 --num-gpu 0 只用 CPU

一句话总结目前(2026年1月)最舒服的本地组合:

Spring Boot 3.3.x + Spring AI 1.0.x
+ Ollama + qwen2.5:7b-instruct 或 deepseek-r1:7b
+ ChatClient 流式 + 记忆 + 系统提示

祝你本地玩得开心,早日做出自己的小 AI 玩具~ 🚀

需要我帮你把某个特定模型(比如 deepseek-r1 / phi4 / gemma2)的配置和表现做更详细对比吗?

文章已创建 3855

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部