将 Ollama 服务(http://localhost:11434)转换为 Anthropic API 格式(http://localhost:8000),让任何支持 Anthropic API 的工具都能使用 Ollama 的本地或远程模型。
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 使用 Anthropic │ │ 本代理服务 │ │ Ollama 服务 │
│ API 的客户端工具 │ ───▶ │ (localhost:8000) │ ───▶ │ (localhost:11434) │
│ │ │ │ │ │
│ Anthropic API 格式 │ │ 协议转换 + 模型映射 │ │ Ollama API 格式 │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│
┌─────────────────────────┴─────────────────────────┐
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ 本地模型 │ │ 远程模型 (Cloud) │
│ gemma3:4b, etc. │ │ deepseek-v3.1:671b │
└─────────────────────┘ └─────────────────────┘
访问 https://ollama.ai 下载并安装 Ollama。
# 确认 Ollama 服务运行
ollama serve
# 查看可用模型
ollama listOllama 默认监听 http://localhost:11434。
python anthropic_ollama_proxy.py代理将启动在 http://localhost:8000。
设置以下环境变量:
| 环境变量 | 说明 | 示例值 |
|---|---|---|
ANTHROPIC_BASE_URL |
代理服务地址 | http://localhost:8000 |
ANTHROPIC_API_TOKEN |
API 密钥(任意字符即可,代理不验证) | local |
ANTHROPIC_MODEL |
模型名称(见下文映射说明) | gemma3:4b |
macOS/Linux:
export ANTHROPIC_BASE_URL=http://localhost:8000
export ANTHROPIC_API_TOKEN=local
export ANTHROPIC_MODEL=gemma3:4b
# 然后启动你的工具Windows PowerShell:
$env:ANTHROPIC_BASE_URL="http://localhost:8000"
$env:ANTHROPIC_API_TOKEN="local"
$env:ANTHROPIC_MODEL="gemma3:4b"Windows CMD:
set ANTHROPIC_BASE_URL=http://localhost:8000
set ANTHROPIC_API_TOKEN=local
set ANTHROPIC_MODEL=gemma3:4bANTHROPIC_MODEL 决定了代理收到什么模型名:
ANTHROPIC_MODEL=gemma3:4b (你设置的环境变量)
↓
客户端发送: { "model": "gemma3:4b", ... }
↓
代理收到 "gemma3:4b"
↓
查 MODEL_MAPPING 找到映射 → 转发给 Ollama
编辑 anthropic_ollama_proxy.py 中的 MODEL_MAPPING:
MODEL_MAPPING = {
# Anthropic 风格名称 → Ollama 模型名
"claude-sonnet-4-6": "gemma3:4b",
"claude-opus-4-6": "gemma3:4b",
"claude-haiku-4-5": "gemma3:4b",
# 直接映射(环境变量设置什么,Ollama 就用什么)
"gemma3:4b": "gemma3:4b",
"deepseek-v3.1:671b-cloud": "deepseek-v3.1:671b-cloud",
}
DEFAULT_MODEL = "gemma3:4b" # 未匹配时的默认模型ANTHROPIC_MODEL 环境变量
│
▼
┌─────────────────┐
│ 是否在 MODEL_MAPPING 中? │
└─────────────────┘
│ │
是 否
│ │
▼ ▼
使用映射值 使用 DEFAULT_MODEL
│ │
└───────┬───┘
▼
转发给 Ollama
直接透传模式:
"qwen2.5-coder:14b": "qwen2.5-coder:14b"环境变量:ANTHROPIC_MODEL=qwen2.5-coder:14b
别名映射模式:
"my-model": "gemma3:4b"环境变量:ANTHROPIC_MODEL=my-model
实际运行:gemma3:4b
Ollama 直接下载运行的模型:
ollama pull gemma3:4b
ollama pull qwen2.5-coder:7b
ollama pull qwen2.5-coder:14bOllama 配置的远程 API 模型,例如:
deepseek-v3.1:671b-cloud
代理不关心模型实际在哪里运行,只负责转发请求。
| Anthropic API | Ollama API | 说明 |
|---|---|---|
thinking 参数 |
移除 | Ollama 不支持 |
system (数组) |
提取第一条 | 格式转换 |
content (数组) |
拼接为字符串 | 提取 text 内容 |
beta 查询参数 |
忽略 | 不支持 |
| SSE 流式响应 | 兼容转换 | 实时流式输出 |
# 查看 Ollama 是否运行
curl http://localhost:11434/api/tags
# 查看具体模型信息
ollama show gemma3:4b# 测试代理健康状态
curl http://localhost:8000/health
# 测试聊天接口
curl -X POST http://localhost:8000/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: local" \
-d '{"model":"gemma3:4b","messages":[{"role":"user","content":"hello"}]}'# 启动代理
python anthropic_ollama_proxy.py
# 后台运行
Start-Process python -ArgumentList "anthropic_ollama_proxy.py" -NoNewWindow- 模型必须在 Ollama 中可用
- 修改映射后重启代理生效
- 确保 8000 端口未被占用
- 远程模型需要 Ollama 配置支持
MIT License