本教程全面解析OpenAI兼容API的技术原理和实际应用,详细介绍对话接口、文本向量化、语音处理等核心功能。通过系统化的API调用指南和实战案例,帮助开发者高效灵活地构建多模态AI应用。
前置教程
- 大语言模型LLM服务商Api服务调用教程,你需要提前准备好一个可调用的LLM服务的Api Key ,以完成完整的API调用示例。
- Python+FastAPI在Windows环境下创建一个基础后端服务教程,本教程默认你能够通过FastAPI创建一个后端服务。
资源下载
1. OpenAI兼容API的定义
1.1 核心概念
OpenAI兼容API是指第三方服务提供商实现或兼容OpenAI官方API的设计规范和接口协议,构建的标准化人工智能服务接口。这意味着开发者可以使用与调用OpenAI服务相似的代码结构、参数和方法,来访问其他AI服务商及大语言模型提供的能力。
1.2 兼容性价值
- 降低迁移成本:开发者无需重写大量代码即可切换服务提供商
- 统一开发体验:保持相似的编程模式和参数设计,降低学习曲线
- 生态工具复用:可使用基于OpenAI API构建的开发工具和库(如LangChain、LlamaIndex等)
2. 核心接口内容概览
2.1 核心对话与生成接口
2.1.1 多轮对话接口
- 接口路径:
POST /v1/chat/completions - 主要功能:智能对话、内容创作、代码生成、复杂推理
- 关键参数:
model(必填):指定使用的语言模型,如gpt-4、deepseek-chat、glm-4等messages(必填):对话消息列表,包含角色(system、user、assistant)和内容temperature(可选,范围0~2,默认1):控制生成随机性,值越低输出越确定性max_tokens(可选):限制生成文本的最大长度,受模型上下文窗口限制stream(可选,布尔值):是否启用流式响应,适合实时交互场景- 请求示例:
{ "model": "gpt-4", "messages": [ {"role": "system", "content": "你是一名专业的编程助手"}, {"role": "user", "content": "用Python写一个快速排序算法"} ], "temperature": 0.7, "max_tokens": 500 }
2.2 语义理解与向量化
文本向量化接口
- 接口路径:
POST /v1/embeddings - 主要功能:将文本转换为浮点数向量,用于语义搜索、聚类分析、推荐系统
- 关键参数:
input(必填):需要向量化的文本,支持字符串或字符串数组model(必填):嵌入模型名称,如qwen3-embedding等- 输出:返回固定维度的向量数组(如1536维),可用于计算余弦相似度
- 应用场景:与5.2节RAG系统紧密配合使用
重排序接口(扩展接口,非OpenAI官方标准)
- 接口路径:
POST /v1/rerank - 主要功能:对检索到的文档列表进行相关性重排序,提升RAG系统效果
- 关键参数:
query(必填):查询语句documents(必填):待排序的文档字符串列表model(必填):重排序模型名称,如bge-reranker等top_n(可选):返回最相关的前N个文档
2.3 多媒体处理接口
语音转文本
- 接口路径:
POST /v1/audio/transcriptions - 主要功能:将音频内容转录为文本
- 关键参数:
file(必填):音频文件数据,支持常见格式如mp3、wav、m4amodel(必填):语音识别模型,如SenseVoiceSmalllanguage(可选):音频语言标识(如zh、en),指定后可提升准确率response_format(可选):输出格式,支持json、text、srt、verbose_json
文本转语音
- 接口路径:
POST /v1/audio/speech - 主要功能:将文本转换为自然语音
- 关键参数:
input(必填):输入文本,通常有长度限制(如最多4096字符)voice(必填):语音音色选择,如alloy、echo、fable、onyx、nova、shimmermodel(必填):TTS模型名称,如indexTTSspeed(可选,范围0.25~4.0,默认1.0):语速控制response_format(可选):输出音频格式,支持mp3、opus、aac、flac、wav、pcm
图像生成
- 接口路径:
POST /v1/images/generations - 主要功能:根据文本描述生成图像
- 关键参数:
prompt(必填):图像描述文本,通常有长度限制(如最多1000字符)model(可选):图像生成模型,如Qwen-Imagesize(可选):生成图像尺寸,如1024x1024、1792x1024、1024x1792n(可选,默认1):生成图像数量,受配额限制quality(可选):生成质量,standard或hd(仅dall-e-3支持)
2.4 模型查询接口
- 接口路径:
GET /v1/models - 主要功能:查询当前服务商提供的可用模型列表及详细信息
3. 调用方式与关键技术要点
3.1 基础配置
端点配置
# Python配置示例
base_url = "https://api.服务商域名.com/v1" # 替换为实际服务商地址
api_key = "your_api_key_here" # 服务商提供的密钥
注意:具体路径是否以
/v1结尾请查阅服务商文档,部分服务商可能使用不同版本路径。
认证方式
- 使用Bearer Token认证
- API Key通过HTTP头部传递:
Authorization: Bearer <api_key>
3.2 请求结构通用模式
HTTP头部设置
Content-Type: application/json
Authorization: Bearer <your_api_key>
请求体格式
- 统一使用JSON格式
- 参数命名与OpenAI官方保持一致
- 支持流式响应(
stream: true)选项,适合长文本生成场景
3.3 重要注意事项
服务商差异处理
- 模型名称差异:各服务商的模型命名规则不同,查阅对应的官方文档
- 参数支持范围:部分高级参数(如
logit_bias、presence_penalty)可能不被所有兼容服务商支持 - 速率限制:不同服务商有各自的调用频率限制策略(如每分钟请求数、每日令牌数)
错误处理机制
常见HTTP状态码及处理建议:
| 状态码 | 含义 | 处理建议 |
|---|---|---|
| 400 | 请求参数错误 | 检查参数格式、必填项是否完整 |
| 401 | 认证失败 | 验证API Key是否有效、是否有权限 |
| 429 | 触发速率限制或配额限制 | 降低调用频率,或联系服务商提升配额 |
| 500~504 | 服务端内部错误 | - |
兼容性验证
建议按以下步骤验证:
- 调用
GET /v1/models接口,确认连通性和认证正常 - 使用简单对话请求测试
/v1/chat/completions接口 - 验证返回数据格式是否符合OpenAI标准格式
- 测试其他接口的功能完整性(如向量化、TTS等)
4. 完整示例
本节将使用 Python + FastAPI + 智谱 GLM-4.7-Flash 模型,构建一个简单的聊天网页应用。通过这个完整示例,你将亲身体验 OpenAI 兼容 API 的调用流程,包括流式响应(SSE)和对话历史管理。
4.1 项目结构
你可以在网盘中下载示例项目chat-app源码。
examples/chat-app/
├── config.py # API 配置(API Key、模型名称)
├── main.py # FastAPI 后端(对话接口)
├── requirements.txt # 依赖管理
└── static/
└── index.html # 聊天前端页面
4.2 后端实现
配置文件 config.py 集中管理 API 配置:
# config.py
ZHIPU_API_KEY = "your-api-key-here" # 请替换为你的智谱 API Key
ZHIPU_API_BASE = "https://open.bigmodel.cn/api/paas/v4"
LLM_MODEL_NAME = "glm-4.7-flash"
智谱 GLM 的 API 完全兼容 OpenAI 格式,使用
https://open.bigmodel.cn/api/paas/v4作为 Base URL,glm-4.7-flash作为模型名称。
后端服务 main.py 基于 FastAPI 构建,核心逻辑如下:
# 关键代码片段(完整代码请查看 chat-app/main.py)
# 对话历史管理
class ChatHistory:
def __init__(self):
self.messages = [
{"role": "system", "content": "你是一名智能助手,请用中文回答用户的问题。"}
]
def add_user_message(self, content: str):
self.messages.append({"role": "user", "content": content})
def add_assistant_message(self, content: str):
self.messages.append({"role": "assistant", "content": content})
# 对话接口,使用 SSE 流式返回
@app.post("/api/chat")
async def chat(req: ChatRequest):
chat_history.add_user_message(req.message)
headers = {"Authorization": f"Bearer {ZHIPU_API_KEY}"}
payload = {
"model": LLM_MODEL_NAME,
"messages": chat_history.get_messages(),
"stream": True,
"temperature": 0.7,
"max_tokens": 2048,
}
async def generate():
async with httpx.AsyncClient(timeout=60.0) as client:
async with client.stream(
"POST", f"{ZHIPU_API_BASE}/chat/completions",
headers=headers, json=payload,
) as response:
async for line in response.aiter_lines():
if line.startswith("data: "):
data_str = line[6:].strip()
if data_str == "[DONE]":
break
data = json.loads(data_str)
content = data["choices"][0]["delta"].get("content", "")
if content:
yield f"data: {json.dumps({'content': content})}\n\n"
return StreamingResponse(generate(), media_type="text/event-stream")
代码要点说明:
| 功能模块 | 实现方式 | 说明 |
|---|---|---|
| API 认证 | Authorization: Bearer {key} |
标准 Bearer Token 认证 |
| 对话管理 | ChatHistory 类 |
维护 system/user/assistant 消息列表 |
| 流式响应 | SSE (Server-Sent Events) | 使用 httpx.AsyncClient.stream() 逐块转发 |
| 请求体 | OpenAI 兼容格式 | model + messages + stream + temperature |
4.3 前端实现
前端为一个单页 HTML 应用,通过 SSE 接收流式数据并实时渲染。你可以前往 static/index.html 查看完整的示例代码。核心交互流程:
- 用户输入消息,点击发送
- 前端通过
fetch('/api/chat', {method: 'POST'})发送请求 - 后端返回 SSE 流,前端使用
ReadableStream逐块读取 - 每收到一个数据块,立即更新页面上的对话气泡
- 收到
[DONE]标记后,结束流式渲染
4.4 运行与测试
第一步:环境准备与依赖安装
# 创建虚拟环境
conda create -n chat-app python=3.10
# 激活虚拟环境
conda activate chat-app
cd chat-app
# 安装依赖
pip install -r requirements.txt
第二步:配置 API Key
编辑 config.py,将 ZHIPU_API_KEY 替换为你的智谱 API Key(可在 智谱 AI 官网 的控制台中获取)。
第三步:启动服务
python main.py
启动后访问 http://localhost:8001,即可看到聊天界面。
第四步:验证功能
- 在输入框中输入任意问题,确认 AI 能正常回复
- 观察回复是否为逐字出现的流式效果
- 发送多条消息,确认对话历史上下文被正确保留

4.5 示例小结
通过这个完整示例,你实践了 OpenAI 兼容 API 的以下核心环节:
- API 认证:使用 Bearer Token 进行身份验证
- 对话管理:维护
messages列表实现多轮对话 - 流式响应:通过 SSE 协议实现实时输出
- 模型参数:设置
temperature、max_tokens等参数控制生成行为 - 多轮交互:将每轮对话追加到历史记录,维持上下文连贯性
5. 典型应用场景
5.1 对话类应用
- 智能客服系统:使用多轮对话接口,结合
system角色设定客服人设 - 个性化助手:通过
messages管理对话历史,实现上下文记忆 - 交互式学习工具:配合
stream参数实现打字机效果,提升用户体验
5.2 检索增强生成(RAG)
- 工作流程:
1. 使用
/v1/embeddings接口将知识库文档向量化并存储 2. 用户提问时,将问题向量化并进行相似度检索 3. (可选)使用/v1/rerank接口对检索结果重排序 4. 将检索到的相关文档作为上下文,调用/v1/chat/completions生成回答 - 典型应用:企业知识库问答、文档智能分析、专业领域咨询
此部分内容我们会在后续专题章节中详细介绍。
5.3 多媒体应用
- 语音交互系统:
/v1/audio/transcriptions+ 对话接口 +/v1/audio/speech构建全双工语音助手 - 内容创作工具:结合对话接口和图像生成接口,实现图文并茂的内容自动生成
- 多媒体内容处理流水线:串联多个接口实现自动化处理(如视频字幕生成)
此部分内容我们会在后续专题章节中详细介绍。
6. 主流兼容服务商
下表按兼容方式分类,方便开发者根据需求选择:
| 兼容方式 | 提供商示例 | 核心特点 |
|---|---|---|
| 原生兼容 | DeepSeek官网 | 完全兼容OpenAI API格式,提供高性价比的中文优化模型 |
| 原生兼容 | 智谱AI (GLM) API服务站点 | 支持GLM系列模型,针对中文场景深度优化,提供免费模型 |
| 原生兼容 | 阿里云百炼 | 聚合平台,通过统一API接入Qwen等多个模型 |
| 原生兼容 | 硅基流动 | 聚合平台,提供多种开源模型的兼容API服务 |
7. 总结
OpenAI兼容API生态系统为开发者提供了多样化的AI服务选择,在保持开发一致性的同时,提供了包括对话、语音、视觉在内的全方位AI能力。通过合理利用这些兼容API,开发者可以快速构建功能丰富的AI应用,并在不同服务提供商之间灵活迁移,实现成本优化和性能提升。
举手提问