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— стоимость запроса (для сверки с журналом баланса).