Anthropic Messages
POST /v1/messages использует нативные Anthropic blocks и события. Нужны messages:write, разрешённая модель, Idempotency-Key и anthropic-version: 2023-06-01.
Совместимость SDK
Используйте версию протокола 2023-06-01 явно: более новые версии и дополнительные возможности проверяются отдельно по модели.
Проверьте supported_apis выбранной модели. Если Messages отсутствует, запрос отклоняется до резервирования; наличие Chat Completions или совпадающее имя семейства не открывает этот протокол автоматически.
Anthropic SDK добавляет /v1 в ресурсные пути сам: его base URL — origin API без /v1. OpenAI SDK, напротив, получает base URL с /v1. Эта разница важна для отсутствия ошибочного /v1/v1/messages.
import os
import uuid
from anthropic import Anthropic, DefaultHttpxClient
client = Anthropic(
base_url=os.environ.get("RENDERFOX_BASE_URL", "https://api.renderfox.ru/v1").removesuffix("/v1"),
api_key=os.environ["RENDERFOX_API_KEY"],
default_headers={"anthropic-version": "2023-06-01"},
http_client=DefaultHttpxClient(
trust_env=False,
),
)
reply = client.messages.create(
model="claude-opus-5.5",
max_tokens=256,
messages=[{"role": "user", "content": "Коротко объясни HTTP."}],
extra_headers={"Idempotency-Key": str(uuid.uuid4())},
)
print(reply.content[0].text)Блоки и потоковые ответы
Текст, tool_use и tool_result сохраняют нативную форму. Чужой или незавершённый tool ID отклоняется. Поток: message_start, content_block_start/delta/stop, message_delta, message_stop; [DONE] не используется. Завершающие события приходят после учёта расхода FC.
Способы выбора инструмента зависят от модели. Если capabilities.messages_tool_choice_modes перечисляет только auto и none, принудительные any и tool отклоняются до резервирования. Передавайте результат инструмента с исходным tool_use_id; сервер не выполняет клиентские инструменты за вас.
max_tokens обязателен и ограничен моделью. stop_sequences — не более четырёх: список передаётся без усечения. Изображения принимаются в нативном image/source только при vision_by_protocol.messages в карточке модели. Из beta-маркеров разрешены только claude-code-20250219 и interleaved-thinking-2025-05-14: они передаются без изменения; поддержка расширений зависит от выбранной модели. Допустимые параметры кэша, рассуждений и контекста перечислены в карточке модели; остальные сочетания возвращают 422.
Claude Code
Настройте ANTHROPIC_BASE_URL без /v1, ANTHROPIC_AUTH_TOKEN из переменной RENDERFOX_API_KEY и модель с Messages и tools. Готовая последовательность подключения находится на странице интеграций.
Расширенное кеширование и thinking в этой конфигурации отключены. Доступные инструменты определяются версией клиента и возможностями модели.
Изображение в Messages
Claude Opus 5.5 принимает PNG, JPEG и WebP через base64 source. Изображения проверяются и очищаются от метаданных. Ограничения размера и число изображений берите из карточки модели.
import base64
from pathlib import Path
picture = base64.b64encode(Path("image.png").read_bytes()).decode("ascii")
reply = client.messages.create(
model="claude-opus-5.5",
max_tokens=64,
messages=[{"role":"user","content":[
{"type":"text","text":"Опиши формы и цвета."},
{"type":"image","source":{
"type":"base64","media_type":"image/png","data":picture
}}
]}],
extra_headers={"Idempotency-Key":str(uuid.uuid4())},
)
print(reply.content[0].text)Image tokens входят в общий input usage и оплату. Отдельный счётчик изображения показывается только если он приходит от маршрута. Число не выводится из размера файла.
Цикл вызова инструмента
Передайте tools с name, description и input_schema. При content[].type=tool_use сохраните id и input. Исполняйте только разрешённый приложению инструмент, затем передайте пользовательский tool_result с исходным tool_use_id. RenderFox не запускает команды приложения. stop_reason=tool_use означает передачу управления клиенту; end_turn завершает ответ.