CommandCodeAI / CommandCodeAI/command-code

Provider API rejects response_format (400 Invalid input) even for DeepSeek json_object mode

Đang mở
#685 1 bình luận 0 reaction 1 người được giao Xem trên GitHub

@ahmadbilaldev đang làm issue này rồi.

Từ ngày 18/8/2026.

Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
4k
Fork
350
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Summary

The Provider API (https://api.commandcode.ai/provider/v1/chat/completions) rejects the standard OpenAI response_format parameter with HTTP 400 — even for {"type": "json_object"}, which the underlying DeepSeek API supports natively. This breaks every OpenAI-compatible client that sends response_format (OpenAI SDK, Vercel AI SDK, Pydantic structured output, agent harnesses), not just the Command Code CLI.

Expected Behavior

response_format: {"type": "json_object"} (DeepSeek JSON mode) should be passed through to the upstream model, since DeepSeek's own Chat Completions API documents and supports json_object. The Provider API claims OpenAI Chat Completions schema compatibility, so OpenAI-standard request parameters should be accepted or at least documented as unsupported — not rejected with a generic 400.

Actual Behavior

HTTP 400 with a double-wrapped error:

{"error":{"message":"{\"error\":{\"message\":\"Invalid input\",\"type\":\"invalid_request_error\",\"param\":\"response_format\",\"code\":\"invalid_request_error\"}}","type":"invalid_request_error"}}

The same request without response_format succeeds (200) and the model returns clean JSON when the prompt asks for it.

Steps to reproduce the issue
curl https://api.commandcode.ai/provider/v1/chat/completions \
  -H "Authorization: Bearer $CMD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek/deepseek-v4-pro",
    "messages": [{"role": "user", "content": "Return JSON only: {\"answer\": 42}"}],
    "response_format": {"type": "json_object"},
    "max_completion_tokens": 64
  }'

Observed:

  1. With response_format400 Invalid input, param=response_format
  2. Without response_format200, content: {"answer": 42} (clean JSON)
  3. Same request shape against DeepSeek official API with response_format: {"type":"json_object"} → works (200)
Command Code Version

Provider API (api.commandcode.ai/provider/v1) — not the CLI; no CLI version involved.

Operating System

Linux

Terminal/IDE

n/a (HTTP API test)

Shell

bash

Fix prompt (optional)

In the Provider API gateway, allow response_format: {"type": "json_object"} to pass through to DeepSeek upstream (DeepSeek Chat Completions supports it). If pass-through of json_schema is out of scope for now, at minimum accept json_object and document which response_format variants are supported on the Provider API docs page. A quick check: replay the curl above against the upstream after the fix and expect HTTP 200.

Additional context
  • Impact: any agent harness / SDK sending response_format gets 400 on the Pro route; the workaround (omit the parameter and rely on prompt instructions) is fragile because the model's JSON validity is no longer guaranteed by the API.
  • Related behavior: the opencode.ai zen/go route accepts response_format only when the prompt contains the literal word json — also worth documenting.
  • Note: this issue is about the Provider API endpoint (/provider/v1/chat/completions), not the CLI — there is no separate Provider API bug tracker, so filing here.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.