API 简介

Ollama 提供了一套 RESTful API,让你可以通过 HTTP 请求来调用模型的各种功能。这一章我们先来整体了解一下这套 API。

API 是什么?

简单来说,Ollama API 就是一个 HTTP 服务。你发送 HTTP 请求,它返回结果。跟调用任何 Web API 没什么本质区别。

默认情况下,Ollama 启动后会在本地监听 11434 端口:

http://localhost:11434

你可以用 curl、Postman,或者任何能发 HTTP 请求的工具来调用。

快速体验

先来个最简单的例子,检查服务是否正常运行:

curl http://localhost:11434/api/version

返回:

{
  "version": "0.1.27"
}

看到版本号就说明服务正常。

再试一个生成文本的请求:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "说一句问候语"
}'

模型会返回类似这样的结果:

{
  "model": "llama3.2",
  "created_at": "2024-01-15T10:00:00Z",
  "response": "你好!很高兴见到你!",
  "done": true
}

API 架构

Ollama 的 API 设计比较简洁,主要分几个模块:

模块端点前缀功能
生成/api/generate文本生成
聊天/api/chat多轮对话
嵌入/api/embeddings文本向量化
模型管理/api/tags, /api/show 等模型 CRUD
系统信息/api/version, /api/ps状态查询

请求格式

大多数 API 接受 JSON 格式的请求体:

curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {"role": "user", "content": "你好"}
  ]
}'

响应格式

响应也是 JSON:

{
  "model": "llama3.2",
  "created_at": "2024-01-15T10:00:00Z",
  "message": {
    "role": "assistant",
    "content": "你好!有什么可以帮你的吗?"
  },
  "done": true
}

核心功能概览

文本生成

最基础的功能,给一个提示词,模型生成后续内容:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Python 的优点有哪些?"
}'

聊天对话

支持多轮对话,保持上下文:

curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {"role": "user", "content": "我叫小明"},
    {"role": "assistant", "content": "你好小明!"},
    {"role": "user", "content": "我叫什么名字?"}
  ]
}'

文本嵌入

将文本转换为向量,用于相似度计算、RAG 等场景:

curl http://localhost:11434/api/embeddings -d '{
  "model": "llama3.2",
  "prompt": "这是一段需要向量化的文本"
}'

模型管理

通过 API 管理模型:

# 列出已安装的模型
curl http://localhost:11434/api/tags

# 拉取新模型
curl http://localhost:11434/api/pull -d '{
  "name": "mistral:7b"
}'

为什么用 API?

你可能会问,直接用命令行 ollama run 不是更简单吗?

确实,如果只是自己用,命令行够用了。但在这些场景下,API 更合适:

应用集成

你开发了一个应用,需要调用 AI 能力。通过 API,可以把 Ollama 当作后端服务。

多用户场景

多个用户同时使用,需要管理并发、会话等。API 层可以做这些控制。

服务化部署

把 Ollama 部署在服务器上,客户端通过网络调用。这在生产环境很常见。

与其他系统集成

比如接入 LangChain、LlamaIndex 这类框架,它们都通过 API 与模型交互。

与 OpenAI API 的关系

Ollama 提供了 OpenAI 兼容接口,这意味着:

  • 用 OpenAI SDK 写的代码,改个 base_url 就能对接 Ollama
  • 支持 OpenAI 的应用,配置一下就能用本地模型

兼容接口地址:

http://localhost:11434/v1

后面会专门讲这个兼容层怎么用。

基础配置

服务地址

默认监听本地:

http://127.0.0.1:11434

可以通过环境变量修改:

OLLAMA_HOST=0.0.0.0:11434 ollama serve

这样其他机器也能访问。

跨域设置

如果要从网页调用 API,需要配置 CORS:

OLLAMA_ORIGINS="*" ollama serve

或者指定允许的域名:

OLLAMA_ORIGINS="https://example.com" ollama serve