php 7.2 下实现 openai 兼容协议调用并支持多模型切换,核心是“统一输入格式 + 动态适配后端”,通过轻量路由层将标准 /v1/chat/completions 请求动态转发至 openai、claude、gemini 等厂商,无需修改业务逻辑,仅靠配置即可切换模型与供应商。

PHP 7.2 环境下实现 OpenAI 兼容协议调用、并支持多家大模型切换,核心在于“统一输入格式 + 动态适配后端”,不依赖高版本语法或 Composer 新特性,完全兼容 PHP 7.2+。关键不是重写每家 SDK,而是构建一个轻量路由层,让业务代码始终按 /v1/chat/completions 标准发请求,底层自动转给 OpenAI、Claude、Gemini、腾讯混元、DeepSeek 或通义千问等服务。
用标准 OpenAI 格式写一次,跑通所有兼容厂商
所有调用都保持同一结构,只需改配置,不改业务逻辑:
- 请求地址固定为
/v1/chat/completions(网关或中转服务暴露的统一入口) -
messages是索引数组:[["role"=>"user","content"=>"你好"]],不能是关联键名如["msg"=>[...]] - 必须带
Content-Type: application/json和Authorization: Bearer xxx头(Bearer 后有空格) - 响应解析统一取
$resp['choices'][0]['message']['content'],无论后端是谁
三种落地方式,按项目阶段选
方式一:直连第三方 OpenAI 兼容网关(最快上线)
适合验证、MVP 或不想运维网关的团队。例如:
-
腾讯混元:把 OpenAI SDK 的
base_url改成https://tokenhub.tencentmaas.com/v1,API Key 换成混元密钥,model填hy3-preview即可 -
Start API(DeepSeek 专用):地址换为
https://api.startapi.top/v1/chat/completions,model填deepseek-v4或deepseek-r1 -
自建 Higress 网关:通过 Header(如
x-model: qwen3-max)路由到不同后端,前端仍发标准请求
方式二:手写轻量适配器(推荐 PHP 7.2 项目)
不装 SDK,用原生 curl 封装一个 ai_call() 函数:
将小说章节转换为电影分镜剧本。用户上传txt/md/docx文本,AI分析场景、角色、情绪、镜头语言,输出专业分镜脚本。适用于用户提及“分镜”“storyboard”“小说转分镜”“影视改编”“镜头脚本”或需要将小说改编为分镜的场景。
- 根据
$config['provider'](如'openai'、'qwen'、'gemini')动态拼 URL、Header 和 body - 通义千问需计算
X-DashScope-Signature;讯飞星火要先拿session_id;Gemini 把 key 拼在 URL 后 —— 这些全在函数内部处理 - 返回前统一 decode 成 OpenAI 结构:
['choices'=>[['message'=>['content'=>'xxx']]]
方式三:引入 PHP 版 AI Gateway 库(零学习成本)
已有开源实现,如 AiGateway\OpenAI,调用方式几乎和 Python 完全一致:
$client = new OpenAI(['api_key'=>'sk-xxx', 'provider'=>'qwen']);$res = $client->chat->completions->create(['model'=>'qwen3-max', 'messages'=>[...]]);- 切换模型只要改
model字段;切换厂商只要改provider参数
国产模型特别注意的坑
直接套 OpenAI 请求会失败,常见差异点:
-
鉴权方式不同:通义千问用
X-DashScope-Signature+X-DashScope-Date;智谱 GLM 只认Authorization: Bearer glm-4-xxx;讯飞星火需 session ID 绑定 URL 路径 -
字段名不一致:通义千问的输入是
"input": {"messages": [...]};GLM 是"prompt";不是所有都叫messages -
响应路径不同:通义千问返回
['output']['text'];讯飞星火是['payload']['choices']['text'];必须做标准化映射 -
SSL 验证:本地调试可临时关掉
CURLOPT_SSL_VERIFYPEER,但上线必须开启并配置 CA 证书
切换模型的实际操作建议
不用动业务代码,靠配置驱动:
- 用环境变量控制默认模型:
DEFAULT_MODEL=deepseek-v4,PROVIDER=qwen - 按任务类型自动选模型:简单问答用
qwen3-mini,代码生成用deepseek-coder,复杂推理用hy3-preview - 加一层缓存判断:若上一次调用
gpt-4超时,下次同类型请求自动降级到qwen3-plus - 记录每次调用的
provider、model、耗时、token 数,用于后续成本分析和模型效果对比
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










