OpenAI 兼容 API 搭建教程:让本地模型接入现有应用
OpenAI 兼容 API 搭建教程:用 Ollama 或 LM Studio 把本地部署的大模型伪装成 OpenAI 接口,让依赖 OpenAI SDK 的应用无需修改代码即可切换到本地模型。
这篇教程适合你吗
你已经在本地部署了大模型(比如用 Ollama 或 LM Studio),但你的应用代码用的是 OpenAI SDK。你想让应用直接用本地模型,而不想重写所有 API 调用代码。OpenAI 兼容 API 就是解决方案。
前置知识:已了解本地大模型部署,可参考 Ollama 本地部署教程 或本地部署大模型指南。 最终产物:一个运行在本地、接口格式和 OpenAI 完全一致的 API 服务。为什么需要兼容 API
大多数 AI 应用和框架(LangChain、Dify、各种 ChatGPT 客户端)都用 OpenAI SDK 调用模型。它们的代码长这样:
from openai import OpenAI
client = OpenAI(api_key="sk-xxx")
response = client.chat.completions.create(model="gpt-4o", messages=[...])
如果要换成本地模型,理想情况是只改一行:
client = OpenAI(base_url="http://localhost:11434/v1", api_key="not-needed")
这就是 OpenAI 兼容 API 的价值——让应用层代码零修改或极小修改。
方案一:用 Ollama 搭建
Ollama 默认自带 OpenAI 兼容 API,不需要额外配置。
启动 Ollama 服务
# 安装 Ollama 后,拉取模型
ollama pull qwen2.5:7b
# Ollama 默认在 11434 端口提供 OpenAI 兼容 API
# 无需额外启动,安装后自动运行
验证接口
# 测试 chat completions 接口
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5:7b",
"messages": [{"role": "user", "content": "你好"}]
}'
返回格式和 OpenAI 完全一致:
{
"choices": [{"message": {"content": "你好!有什么可以帮助你的?"}}],
"model": "qwen2.5:7b",
"usage": {"prompt_tokens": 10, "completion_tokens": 12}
}
用 OpenAI SDK 调用
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="not-needed" # Ollama 不需要 API Key,但 SDK 要求非空
)
response = client.chat.completions.create(
model="qwen2.5:7b",
messages=[{"role": "user", "content": "用 Python 写一个快速排序"}]
)
print(response.choices[0].message.content)
就这么简单。你的 LangChain 代码、Dify 配置、任何用 OpenAI SDK 的应用,只要改 base_url 和 model 就能切换到本地模型。
方案二:用 LM Studio 搭建
LM Studio 提供了图形界面,更适合不想敲命令行的用户。
启动本地服务
- 打开 LM Studio
- 下载一个模型(如 Qwen 2.5 7B)
- 点击「Local Server」标签
- 点击「Start Server」
默认在 http://localhost:1234 提供 OpenAI 兼容 API。
用 OpenAI SDK 调用
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:1234/v1",
api_key="lm-studio"
)
response = client.chat.completions.create(
model="your-loaded-model-name",
messages=[{"role": "user", "content": "你好"}]
)
支持的接口
Ollama 和 LM Studio 的兼容 API 通常支持:
| 接口 | 说明 | Ollama | LM Studio |
|---|---|---|---|
/v1/chat/completions | 对话补全 | ✅ | ✅ |
/v1/completions | 文本补全 | ✅ | ✅ |
/v1/embeddings | 文本向量化 | ✅ | ✅ |
/v1/models | 模型列表 | ✅ | ✅ |
实际应用:切换现有项目
LangChain 切换
# 改之前
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o")
# 改之后
llm = ChatOpenAI(
model="qwen2.5:7b",
base_url="http://localhost:11434/v1",
api_key="not-needed"
)
Dify 切换
在 Dify 的模型设置中:
- API Base URL 改为
http://localhost:11434/v1 - API Key 随便填一个(如
not-needed) - 模型名填
qwen2.5:7b
注意事项
模型名必须匹配
model 参数必须和本地已加载的模型名完全一致。用以下命令查看已安装模型:
# Ollama
ollama list
# LM Studio 在界面上显示
并发限制
本地模型通常只能同时处理一个请求。如果应用有并发需求,需要:
- 用 Ollama 的队列机制
- 部署多个实例 + 负载均衡
- 或考虑用 vLLM(参见 vLLM 部署教程)
不是所有特性都支持
本地兼容 API 不支持 OpenAI 的所有特性(如 Structured Outputs、部分 Function Calling 格式)。使用前先测试你依赖的特性是否正常工作。
常见问题与排错
连接被拒绝
原因:Ollama/LM Studio 服务没启动,或端口不对。 解决:确认服务已运行。Ollama 用curl http://localhost:11434/v1/models 测试。LM Studio 看界面上显示的端口。
返回结果很慢
原因:本地模型推理速度取决于硬件。7B 模型在普通笔记本上大约每秒 10-20 token。 解决:用更小的模型(如 3B);确保使用 GPU 加速(NVIDIA 显卡 + CUDA);或考虑量化版本(Q4 比 Q8 快)。模型名报错
原因:model 参数和本地模型名不一致。
解决:用 ollama list 查看准确的模型名,包括标签(如 qwen2.5:7b 而不是 qwen2.5)。
进阶学习
- 想了解本地部署?看 Ollama 本地部署教程
- 想了解高并发部署?看 vLLM 部署教程
- 想了解 OpenAI API?看 OpenAI API 教程
- 想了解开源大模型?看 开源大模型是什么
总结
- Ollama 和 LM Studio 都默认提供 OpenAI 兼容 API
- 只需改
base_url和model,应用代码几乎不用改 - 适合节省 API 费用、保护数据隐私、离线使用
- 注意并发限制和特性兼容性
---
本文最后更新于 2026-07-27。工具版本和接口可能更新,请以官方文档为准。常见问题
相关推荐
Ollama 本地部署大模型:从安装到实战
如何在本地部署大语言模型?本文教你使用 Ollama 在本地运行 Llama、Qwen、Mistral 等开源模型,含安装、配置、API 调用和常见问题。
本地部署大模型:Ollama + Open WebUI 指南
如何在本地部署大语言模型?本文教你使用 Ollama + Open WebUI 搭建私有 AI 助手,含安装配置、模型选择、API 集成和性能优化。
OpenAI API 调用教程:Python 集成指南
OpenAI API 怎么用?本文从申请 API Key 到 Python 调用,手把手教你使用 GPT-4o、DALL-E、Whisper 等 OpenAI API,含完整代码和最佳实践。
开源大模型是什么?和闭源商业模型怎么选
开源大模型是什么?解释开源大模型的含义、与闭源模型的区别,以及如何根据需求选择合适的模型。
获取更多 AI 内容
订阅更新,第一时间获取新教程和工具推荐。