← Главная

Claude API на Python

Минимальная рабочая интеграция Claude API Tech с официальным Python SDK Anthropic: синхронный запрос, async и потоковый ответ.

Проверено: 1 августа 2026 года.

Короткий ответ

Установите anthropic, создайте Anthropic(api_key=..., base_url="https://api.llm-gate.tech") и вызовите client.messages.create(). Python 3.9+ соответствует текущим требованиям официального SDK.

Установка

bash
python -m pip install --upgrade anthropic
export ANTHROPIC_API_KEY="sk-cs2-YOUR_API_KEY"

Используйте отдельное виртуальное окружение и зафиксируйте протестированную версию зависимости в requirements-файле или lockfile. Ключ храните вне исходного кода.

Первый запрос

Python
import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["ANTHROPIC_API_KEY"],
    base_url="https://api.llm-gate.tech",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=128,
    messages=[
        {"role": "user", "content": "Объясни SSE в двух предложениях."}
    ],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

print(message.usage)

Base URL

Для Anthropic SDK указывайте https://api.llm-gate.tech без ручного добавления /v1/messages: SDK формирует путь метода сам.

Асинхронный клиент

Python async
import asyncio
import os
from anthropic import AsyncAnthropic

client = AsyncAnthropic(
    api_key=os.environ["ANTHROPIC_API_KEY"],
    base_url="https://api.llm-gate.tech",
)

async def main() -> None:
    message = await client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=128,
        messages=[{"role": "user", "content": "Привет!"}],
    )
    print(message.content)

asyncio.run(main())

Async-клиент полезен для веб-сервера и очереди задач, но не отменяет ограничение конкурентности. Не запускайте неограниченное число запросов через asyncio.gather.

Streaming

Python streaming
with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=256,
    messages=[{"role": "user", "content": "Напиши короткий пример."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

    final_message = stream.get_final_message()

Считайте ответ завершённым только после корректного окончания потока. HTTP 200 в начале SSE не гарантирует, что ошибка не придёт позднее.

Повторы и таймауты

Официальный SDK автоматически повторяет часть временных ошибок. Если добавляете собственный retry, не создавайте второй бесконечный цикл поверх встроенного механизма.

Python
client = Anthropic(
    api_key=os.environ["ANTHROPIC_API_KEY"],
    base_url="https://api.llm-gate.tech",
    max_retries=2,
    timeout=60.0,
)
  • 401: проверьте ключ и переменную окружения; повтор без исправления не поможет.
  • 404: проверьте ID модели и Base URL.
  • 429: дождитесь retry-after и уменьшите параллелизм.
  • 500/504/529: ограниченно повторите запрос с backoff и jitter.

Полная таблица находится в справочнике ошибок Claude API.

Официальная документация SDK

Интерфейсы Anthropic, AsyncAnthropic, streaming, retries и timeout сверены с официальным руководством Python SDK. Endpoint и доступные модели на этой странице относятся к Claude API Tech.