RenderFox AI
FC +
Войти Регистрация

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.

python
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. Изображения проверяются и очищаются от метаданных. Ограничения размера и число изображений берите из карточки модели.

python
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 завершает ответ.