← Интеграции
SDK Anthropic (Python, TypeScript)
anthropic-python и @anthropic-ai/sdk — меняется только base_url
Что даёт
Свой код на официальных SDK Anthropic без изменений: system, блоки контента, инструменты, стрим.
Эндпоинт: POST https://api.morsmorii.ru/v1/messages
Какую модель брать
claude-sonnet-5-5 для ответов людям, claude-haiku-4-5 для классификации и извлечения
Sonnet 5.5 — лучшее соотношение качества и цены среди моделей Anthropic; Haiku в 2,5 раза дешевле на входе и достаточен для коротких структурированных задач.
Ориентир стоимости
обычный вопрос с контекстом файла на Sonnet 5.5: 5 000 токенов — 2–5 ₽
Конфигурация
Вместо sk-ВАШ_КЛЮЧ_MORSMORII подставьте ключ из раздела «API-ключи». Для инструмента лучше завести отдельный ключ с ограничением по моделям и бюджетом.
from anthropic import Anthropic
client = Anthropic(base_url="https://api.morsmorii.ru", api_key="sk-ВАШ_КЛЮЧ_MORSMORII")
msg = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=300,
messages=[{"role": "user", "content": "Объясни, что такое идемпотентность"}],
)
# первым может прийти блок thinking — берём текстовые блоки
print("".join(b.text for b in msg.content if b.type == "text"))
with client.messages.stream(
model="claude-haiku-4-5",
max_tokens=200,
messages=[{"role": "user", "content": "Три факта о Байкале"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)Как ограничить ключ
- В разделе «API-ключи» создайте отдельный ключ для этого инструмента — так расход виден отдельно, а отзыв не заденет остальное.
- В поле «Модели» оставьте только рекомендованные выше: ключ ответит 403 на любую другую модель.
- Задайте месячный бюджет в рублях: после него — 429 key_budget_exceeded, списание останавливается.
- В команде каждый сотрудник заводит свои ключи: расход по людям видно в разделе «Команда» и в
GET /v1/usage.
Тонкости
- max_tokens обязателен, как и у Anthropic.
- Sonnet 5.5 может сам начать ответ блоком thinking: читайте блоки с type "text", а не content[0].
- Ошибки приходят в формате Anthropic: { type: "error", error: { type, message } }.