Skip to content

Chat completions

Эндпоинт POST /v1/chat/completions полностью совместим с OpenAI Chat Completions API.

Минимальный запрос

python
from openai import OpenAI

client = OpenAI(base_url="https://api.example.com/v1", api_key="sk-llmgw-...")

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.6",
    messages=[
        {"role": "system", "content": "Ты дружелюбный ассистент."},
        {"role": "user", "content": "Что такое llmgw?"},
    ],
    temperature=0.4,
    max_tokens=400,
)
print(resp.choices[0].message.content)
print("Использовано токенов:", resp.usage.total_tokens)

Поддерживаемые параметры

  • model, messages, temperature, top_p, max_tokens, stream, stop, presence_penalty, frequency_penalty, seed, tools, tool_choice, response_format, n, logprobs, top_logprobs.
  • Поля, специфичные для конкретного провайдера, передаются через extra_body (Python) или body (TS) — шлюз автоматически фильтрует несовместимые с целевой моделью параметры (drop_params).

Структура ответа

Совместимая с OpenAI:

json
{
  "id": "chatcmpl-...",
  "model": "anthropic/claude-sonnet-4.6",
  "choices": [{ "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }],
  "usage": { "prompt_tokens": 42, "completion_tokens": 128, "total_tokens": 170 }
}

Поле model отражает фактически выбранный upstream после фоллбэков (например, если запросили claude-opus-4.7, а ответил claude-opus-4.5).

Метаданные

В заголовках ответа возвращаются:

  • x-llmgw-request-id — для трекинга в саппорте.
  • x-ratelimit-remaining-rpm, x-ratelimit-remaining-tpm — текущий запас.
  • x-llmgw-cost-rub — стоимость запроса (для сверки с журналом баланса).

© llmgw