POST /v1/chat/completions — OpenAI-совместимая форма для Claude. В SDK задайте адрес Guard, ключ и точный model; остальные поля должны соответствовать контракту ниже. Серверный промпт настраивается отдельно и не требует другого endpoint.
python
from openai import OpenAI
client = OpenAI(
api_key=KEY,
base_url="https://api.guardrelay.ai/v1",
)
resp = client.chat.completions.create(
model="claude-sonnet-5",
messages=[
{"role": "system", "content": "Ты helpful-ассистент."},
{"role": "user", "content": "Привет!"},
],
)
print(resp.choices[0].message.content)Здесь работают все четыре семейства. Незнакомые поля Kimi пропускает наверх как есть только здесь: на двух других поверхностях список полей у него закрытый. Поля Kimi разобраны отдельно на странице Kimi · Chat Completions.
python
from openai import OpenAI
client = OpenAI(
api_key=KEY,
base_url="https://api.guardrelay.ai/v1",
)
resp = client.chat.completions.create(
model="k3",
messages=[{"role": "user", "content": "Привет!"}],
max_tokens=512,
)
print(resp.choices[0].message.content)python
from openai import OpenAI
client = OpenAI(
api_key=KEY,
base_url="https://api.guardrelay.ai/v1",
)
resp = client.chat.completions.create(
model="cursor-grok-4.6-medium",
messages=[{"role": "user", "content": "Привет!"}],
max_tokens=512,
)
print(resp.choices[0].message.content)python
from openai import OpenAI
client = OpenAI(
api_key=KEY,
base_url="https://api.guardrelay.ai/v1",
)
resp = client.chat.completions.create(
model="composer-2.5",
messages=[{"role": "user", "content": "Привет!"}],
max_tokens=512,
)
print(resp.choices[0].message.content)| Что | Как у Composer и Grok |
|---|---|
| Поля запроса | model, messages, max_tokens либо max_completion_tokens, stream, tools |
| Два лимита сразу | max_tokens и max_completion_tokens в одном запросе дают 400; передавайте один |
| Роли | user, assistant, а также system и developer как обычные сообщения в массиве |
| Блоки содержимого | текстовые блоки ровно с ключами type и text; у Grok дополнительно image_url с инлайн base64 |
| Ответ | обычная OpenAI-форма: choices[0].message.content, finish_reason: "stop", кэш в usage.prompt_tokens_details.cached_tokens |
| Ответ с вызовом инструмента | choices[0].message.tool_calls с id, name и arguments, а finish_reason равен tool_calls. На такой ход отвечают сообщением с ролью tool |