Skip to content

/v1/responses 文本请求使用 Grok 模型时应路由到 Grok Console 或返回明确错误 #11

@Zker67

Description

@Zker67

问题

当前 /v1/chat/completions 在文本请求中会根据模型解析 provider:

  • grok-4.3grok-4 这类模型会走 Grok Console 链路。
  • grok-4.20-* 这类模型会走 Grok app-chat 链路。

/v1/responses 的文本请求路径目前直接调用通用文本后端,没有按 model 解析 Grok provider。因此调用方如果向 /v1/responses 传入 model: "grok-4.3",预期是使用 Grok Console Responses 能力,实际却可能走到非 Grok 后端,或者表现与 /v1/chat/completions 不一致。

这会让 OpenAI Responses 兼容调用方很难判断:同一个 Grok 模型在 /v1/chat/completions 可用,但在 /v1/responses 上并没有走 Grok。

期望行为

  • /v1/responses 文本请求应与 /v1/chat/completions 保持一致的模型路由语义。
  • model 是 Grok Console 模型,例如 grok-4.3grok-4,应调用 Grok Console 链路。
  • 如果暂不支持 Grok 的 /v1/responses,应返回明确的 400/501 错误,而不是静默走其他后端。
  • 如果支持 Grok Console Responses,应继续保留 tools,并允许 web_search 等 Grok 服务端工具生效。

建议改动

/v1/responses 文本路径中增加类似 /v1/chat/completions 的模型解析:

spec = resolve_model(model)
if spec.provider == GROK_PROVIDER:
    if is_grok_app_chat_model(spec):
        raise HTTPException(status_code=501, detail={"error": "Grok app-chat is not supported on /v1/responses"})
    completion = grok.console_chat_completion(body, spec, messages)
    return response_completed(...)

实现方式可以不完全照搬上面片段,但核心是:不要让 Grok 模型在 /v1/responses 文本请求里静默进入非 Grok 后端。

建议测试

  • /v1/responses + model=grok-4.3 应调用 Grok Console 链路,并返回 Responses 格式结果。
  • /v1/responses + model=grok-4.3 + tools=[{"type":"web_search"}] 应保留搜索工具参数。
  • /v1/responses + app-chat 模型如果暂不支持,应返回明确错误。
  • /v1/chat/completions 的现有 Grok 行为不应回归。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions