Appearance
openai-compatible provider 无法调用 Responses API(Codex / GPT-5 等模型)
问题
使用 @ai-sdk/openai-compatible 配置自定义 provider(如自建代理、Requesty、或直接指向 OpenAI)时,GPT-5 Codex 等需要 Responses API 的新模型报错:
TypeError: sdk.responses is not a function或模型返回异常结果、推理过程缺失,因为 openai-compatible SDK 只支持 Chat Completions API,不支持 Responses API。
原因
@ai-sdk/openai-compatible 是一个通用兼容层,实现的是 OpenAI Chat Completions 接口(/v1/chat/completions)。GPT-5 Codex 等模型使用的是 OpenAI Responses API(/v1/responses),两者接口不同。
官方 @ai-sdk/openai 包同时支持两种 API,并会根据模型名称自动选择正确的端点。
解决方案
方案一:对特定模型覆盖 provider npm
在 opencode.json 中,可以在 openai-compatible provider 内对单个模型指定不同的 npm 包:
jsonc
// opencode.json
{
"provider": {
"my-openai-proxy": {
"npm": "@ai-sdk/openai-compatible",
"name": "OpenAI Proxy",
"options": {
"baseURL": "https://my-proxy.example.com/v1",
"apiKey": "{env:OPENAI_API_KEY}"
},
"models": {
"gpt-4.1": {},
"gpt-5.2-codex": {
"provider": {
"npm": "@ai-sdk/openai"
}
}
}
}
}
}gpt-5.2-codex 会使用官方 @ai-sdk/openai SDK,走 Responses API;其他模型仍走 openai-compatible 的 Chat Completions API。
注意:需要确保
baseURL指向的代理同时支持两种 API 端点,或者@ai-sdk/openai的baseURL配置正确。
方案二:直接使用 @ai-sdk/openai provider
如果访问的就是 OpenAI 官方 API 或完全兼容 Responses API 的代理,可以直接将 npm 改为 @ai-sdk/openai:
jsonc
{
"provider": {
"openai-full": {
"npm": "@ai-sdk/openai",
"name": "OpenAI",
"options": {
"baseURL": "https://api.openai.com/v1",
"apiKey": "{env:OPENAI_API_KEY}"
},
"models": {
"gpt-5.2-codex": {}
}
}
}
}开启推理输出(Codex 思考过程)
使用 @ai-sdk/openai 后,可以在 modelConfig 里配置推理参数:
jsonc
{
"provider": {
"openai-full": {
"npm": "@ai-sdk/openai",
"models": {
"gpt-5.2-codex": {
"modelConfig": {
"reasoningEffort": "high",
"reasoningSummary": "detailed"
}
}
}
}
}
}来源:GitHub #9628