跳转到正文
技术教程·

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_urlmodel 就能切换到本地模型。

方案二:用 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 通常支持:

接口说明OllamaLM 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 和 LM Studio 都默认提供 OpenAI 兼容 API
  • 只需改 base_urlmodel,应用代码几乎不用改
  • 适合节省 API 费用、保护数据隐私、离线使用
  • 注意并发限制和特性兼容性

---

本文最后更新于 2026-07-27。工具版本和接口可能更新,请以官方文档为准。

常见问题

相关推荐

获取更多 AI 内容

订阅更新,第一时间获取新教程和工具推荐。