前言

“想开发 AI 应用,每次都要调用云端 API?免费额度用完还得付费?跑个 demo 都要担心成本?”

这是很多 AI 应用开发者遇到的痛点。阿里百炼、智谱 AI、OpenAI 等平台虽然提供免费额度,但用完就得付费。而且在开发调试阶段,频繁调用 API 不仅费钱,网络延迟也影响体验。

更好的方案是:本地部署大模型,开发测试随便用,无需担心额度和费用

今天这篇文章,我会带你用 Docker + Ollama 搭建一个本地 AI 开发环境,让你在开发 AI 应用时,可以快速调用本地模型进行测试。


Ollama 是什么?

Ollama 是一个开源的本地大模型运行工具,让你能够像使用 Docker 管理容器一样,轻松管理和运行各种开源大模型。

核心能力

  • 一键拉取模型:类似 docker pull,用 ollama pull qwen2.5:7b 即可下载模型
  • 本地推理运行:在本地机器上运行模型,无需联网
  • OpenAI 兼容 API:提供标准的 HTTP API,与 OpenAI 接口兼容
  • 多模型支持:支持 Llama、Qwen、DeepSeek、Mistral 等主流开源模型

工业生产中的定位

场景 推荐方案 原因
开发测试 Ollama 部署简单、API 兼容、快速迭代
个人/小团队 Ollama 资源占用低、开箱即用
生产环境 vLLM / 云端 API 高并发、高吞吐、稳定可靠
企业私有化 vLLM + K8s 可扩展、可监控、高可用

总结:Ollama 的定位是本地开发测试工具,而不是生产级推理引擎。如果你需要支撑高并发线上服务,应该考虑 vLLM 等专业方案。

竞品对比

工具 特点 适用场景
Ollama 上手最简单,类 Docker 体验 开发测试、个人使用
vLLM 高性能推理引擎,支持 PagedAttention 生产环境、高并发
LM Studio 图形界面,适合非技术用户 个人体验、无代码场景
LocalAI OpenAI API 完全兼容,功能丰富 需要完整 OpenAI 替代方案
llama.cpp 底层推理库,性能极致 需要深度定制、嵌入式场景

为什么开发阶段选 Ollama?

  • 安装最简单:一条命令搞定
  • 模型管理方便:拉取、切换、删除都很直观
  • API 兼容好:直接用 OpenAI SDK 调用
  • 资源占用低:适合日常开发机器运行

本地开发 vs 云端 API

先看下两种方案的对比:

对比项 云端 API(百炼/OpenAI) 本地 Ollama
调用方式 HTTP API HTTP API(兼容 OpenAI 格式)
费用 免费额度用完需付费 完全免费
网络 依赖网络,有延迟 本地调用,毫秒级响应
隐私 数据上传云端 数据完全本地
模型选择 平台限定 自由选择任意模型
适用场景 生产环境 开发测试、跑 Demo

核心价值:本地 Ollama 提供 OpenAI 兼容的 API 接口,你的代码几乎不用改,只需要换一下 base_url,就能无缝切换。


第一步:安装 Docker Desktop

1. 下载安装

访问 Docker 官网下载安装包:

https://www.docker.com/products/docker-desktop/

根据你的操作系统选择对应版本(Windows / macOS / Linux 都支持)。

2. 验证安装

打开终端,执行:

docker --version
docker run hello-world

看到 “Hello from Docker!” 说明安装成功。


第二步:部署 Ollama 容器

1. 创建挂载目录

macOS 用户

mkdir -p /Users/$(whoami)/docker/ollama

Linux 用户

sudo mkdir -p /home/docker/ollama
sudo chmod 777 /home/docker/ollama

说明:macOS 的用户目录是 /Users/用户名,而 Linux 是 /home/用户名。macOS 的 /home 是受保护的系统目录,无法写入。

2. 启动容器

macOS 用户

docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v /Users/$(whoami)/docker/ollama:/root/.ollama \
  ollama/ollama

Linux 用户

docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v /home/docker/ollama:/root/.ollama \
  ollama/ollama

参数说明

  • -p 11434:11434:暴露 API 端口,供本地应用调用
  • -v <宿主机目录>:/root/.ollama:挂载宿主机目录,模型数据持久化保存

2. 验证服务

curl http://localhost:11434

返回 Ollama is running 即成功。


第三步:拉取开发测试用模型

进入容器:

docker exec -it ollama bash

推荐模型

开发测试推荐轻量级模型(响应快,资源占用低):

# 中文场景推荐
ollama pull qwen2.5:7b          # 通义千问,中文能力强
ollama pull qwen2.5:1.5b        # 更轻量,快速测试用

# 推理场景推荐
ollama pull deepseek-r1:7b      # DeepSeek R1,推理能力强
ollama pull deepseek-r1:1.5b    # 轻量版

# 英文场景推荐
ollama pull llama3.2:3b         # Llama 3.2,平衡性能和速度
ollama pull llama3.1:8b         # 经典版本

常用命令

ollama list          # 查看已下载模型
ollama ps            # 查看运行中的模型
ollama rm <模型名>   # 删除模型

第四步:在代码中调用本地模型

Ollama 提供 OpenAI 兼容的 API,这意味着你可以直接复用现有代码,只需修改 base_url。

API 端点

Base URL: http://localhost:11434/v1
API Key: ollama(随便填,本地不需要验证)

Python 示例

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # 本地部署,随便填
)

response = client.chat.completions.create(
    model="qwen2.5:1.5b",
    messages=[
        {"role": "user", "content": "你好,介绍一下你自己"}
    ]
)

print(response.choices[0].message.content)

JavaScript/Node.js 示例

import OpenAI from 'openai';

const client = new OpenAI({
    baseURL: 'http://localhost:11434/v1',
    apiKey: 'ollama'
});

const response = await client.chat.completions.create({
    model: 'qwen2.5:1.5b',
    messages: [
        { role: 'user', content: '你好,介绍一下你自己' }
    ]
});

console.log(response.choices[0].message.content);

cURL 测试

curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5:1.5b",
    "messages": [{"role": "user", "content": "你好"}]
  }'


第五步:Spring Boot 集成 Spring AI

如果你是 Java 开发者,Spring AI 对 Ollama 有原生支持,通过 OllamaChatModel 可以直接注入使用。

1. 添加依赖

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama</artifactId>
    <version>1.1.0</version>
</dependency>

2. 添加自动配置 Starter

踩坑提醒:网上很多教程推荐使用 spring-ai-ollama-spring-boot-starter,但它的最新版是 1.0.0-M6。如果你的项目中 Spring AI 版本较新(如 1.1.0),直接引入会导致启动报错。

原因:Spring AI 新版本将 spring-ai-spring-boot-autoconfigure 拆分成了多个模块,而旧的 starter 依赖的自动配置类与新版本存在 Bean 冲突。

解决方案:使用新版单独的自动配置模块:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-autoconfigure-model-ollama</artifactId>
    <version>1.1.0</version>
</dependency>

3. 配置 application.yml

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:7b

4. 注入 OllamaChatModel

配置完成后,可以直接注入 ollamaChatModel

@Autowired
@Qualifier("ollamaChatModel")
private ChatModel ollamaChatModel;

5. 完整调用示例

@RestController
@RequestMapping("/ai/ollama")
public class OllamaChatController {

    @Autowired
    @Qualifier("ollamaChatModel")
    private ChatModel ollamaChatModel;

    @GetMapping("/stream/chat")
    public Flux<String> streamChat(HttpServletResponse response) {
        response.setCharacterEncoding("UTF-8");
        Flux<ChatResponse> stream = ollamaChatModel.stream(new Prompt("你是谁?"));
        return stream.map(resp -> resp.getResult().getOutput().getText());
    }
}

启动应用后,访问这个接口,就能调用到本地部署的 DeepSeek 模型了。


开发工作流建议

推荐的开发流程

1. 本地开发 → 调用 Ollama(localhost:11434)
2. 本地测试 → 继续用 Ollama,快速迭代
3. 部署上线 → 切换到云端 API(阿里百炼/智谱/OpenAI)

切换只需改配置

# 开发环境
spring.ai.ollama.base-url: http://localhost:11434

# 生产环境
spring.ai.openai.base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
spring.ai.openai.api-key: ${DASHSCOPE_API_KEY}

常见问题

Q1:模型响应太慢?

选择更小的模型参数,如 qwen2.5:1.5bdeepseek-r1:1.5b,响应速度会快很多。

Q2:内存不够?

8GB 内存建议用 7B 以下的模型,16GB 可以尝试 14B 模型。

Q3:如何查看 API 是否正常?

curl http://localhost:11434/v1/models

返回模型列表即正常。

Q4:容器重启后模型还在吗?

是的,模型存储在挂载的宿主机目录中(macOS: /Users/用户名/docker/ollama,Linux: /home/docker/ollama),容器重启或重建都不会丢失。


总结

搭建本地 AI 开发环境,核心就三步:

  1. 安装 Docker Desktop → 容器运行环境
  2. 部署 Ollama 容器 → 本地模型服务
  3. 代码中调用 API → OpenAI 兼容接口

核心价值

  • 开发调试阶段,无需担心 API 额度和费用
  • 本地调用,毫秒级响应,迭代更快
  • OpenAI 兼容接口,代码几乎不用改
  • 部署上线时,只需切换 base_url 即可

参考资料

  • Ollama 官方文档:
    https://ollama.com/docs
  • Ollama OpenAI 兼容 API:
    https://github.com/ollama/ollama/blob/main/docs/openai.md
  • Spring AI 文档:
    https://docs.spring.io/spring-ai/reference/

欢迎关注公众号 FishTech Notes,一块交流使用心得!
→ 本地模型服务
3. 代码中调用 API → OpenAI 兼容接口

核心价值

  • 开发调试阶段,无需担心 API 额度和费用
  • 本地调用,毫秒级响应,迭代更快
  • OpenAI 兼容接口,代码几乎不用改
  • 部署上线时,只需切换 base_url 即可

参考资料

  • Ollama 官方文档:
    https://ollama.com/docs
  • Ollama OpenAI 兼容 API:
    https://github.com/ollama/ollama/blob/main/docs/openai.md
  • Spring AI 文档:
    https://docs.spring.io/spring-ai/reference/

欢迎关注公众号 FishTech Notes,一块交流使用心得!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐