Skip to content

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/openaibaseURL 配置正确。

方案二:直接使用 @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