Главная / Обучение / Anthropic Python SDK: установка, настройка base_url, потоковая передача и обработка ошибок
Claude в Python. Изящная змеевидная лента обвивается вокруг страницы с кодом и соединяется с небольшим разъёмом API.

Anthropic Python SDK: установка, настройка base_url, потоковая передача и обработка ошибок

В anthropic — официальный Python-клиент Anthropic для Claude API. Этот пакет обеспечивает аутентификацию, повторные попытки, потоковую передачу и типизированные ошибки, а также работает без изменений с любой конечной точкой, совместимой с Anthropic: задайте base_url (или ANTHROPIC_BASE_URL), и остальной код останется прежним.

Установка

терминал
pip install anthropic

Версии 1.x работают на httpx2 и требуют Python 3.10 или новее. Если вы передаёте собственный клиент HTTP, используйте предоставляемый SDK DefaultHttpxClient , чтобы сохранить его стандартные тайм-ауты и ограничения подключений.

Создание клиента

app.py
import anthropic

client = anthropic.Anthropic(
    api_key="your_key",   # default: ANTHROPIC_API_KEY
    base_url="https://aiprimetech.io",    # default: ANTHROPIC_BASE_URL, else https://api.anthropic.com
)

base_url — корневой адрес хоста. SDK добавляет /v1/messages самостоятельно, поэтому https://aiprimetech.io/v1 приведёт к /v1/v1/messages и 404 page not found. Если обе переменные заданы в окружении, anthropic.Anthropic() вообще не требует аргументов:

терминал
export ANTHROPIC_API_KEY=your_key
export ANTHROPIC_BASE_URL=https://aiprimetech.io

Отправка сообщения

app.py
message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Summarise TCP slow start in two sentences."}],
)

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

print(message.usage.input_tokens, message.usage.output_tokens)
print(message._request_id)   # log this with any failure report

content — список блоков (текст, рассуждения, использование инструментов), поэтому проверяйте block.type вместо того, чтобы читать content[0].text без проверки.

Потоковая передача ответов

stream.py
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Write a short story about a lighthouse."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()

Используйте потоковую передачу для любых запросов с большим объёмом входных или выходных данных либо большим значением max_tokens: отдельный запрос без потоковой передачи должен завершиться до истечения тайм-аута, а для потока это не требуется. messages.create(..., stream=True) предоставляет итератор исходных событий, если вспомогательный метод вам не нужен.

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

async_app.py
import asyncio, anthropic

client = anthropic.AsyncAnthropic(base_url="https://aiprimetech.io")
limit = asyncio.Semaphore(3)   # stay within your key's concurrency

async def ask(question: str) -> str:
    async with limit:
        msg = await client.messages.create(
            model="claude-haiku-4-5",
            max_tokens=512,
            messages=[{"role": "user", "content": question}],
        )
        return next(b.text for b in msg.content if b.type == "text")

async def main():
    answers = await asyncio.gather(*(ask(q) for q in ["What is DNS?", "What is BGP?"]))
    print(answers)

asyncio.run(main())

Семафор важен. Одновременная отправка сотен запросов с помощью asyncio.gather — самая частая причина ошибок Concurrency limit exceeded , с которыми мы сталкиваемся при работе Python-клиентов.

Тайм-ауты и повторные попытки

По умолчанию: тайм-аут 10 мин. на запрос и 2 автоматических повторных попыток с экспоненциальным увеличением задержки. SDK повторяет запросы при ошибках подключения, ответах 408, 409, 429 и 5xx. Поскольку запросы с истёкшим тайм-аутом тоже повторяются, максимальное общее время равно тайм-ауту, умноженному на число попыток.

app.py
client = anthropic.Anthropic(base_url="https://aiprimetech.io", timeout=60.0, max_retries=4)

# override for one call only
client.with_options(timeout=300.0).messages.create(
    model="claude-opus-5-5",
    max_tokens=4000,
    messages=[{"role": "user", "content": "Review this design doc..."}],
)

Обработка ошибок

Статус Исключение Повторять?
400anthropic.BadRequestErrorНет: исправьте запрос
401anthropic.AuthenticationErrorНет: ключ неверен или отсутствует
403anthropic.PermissionDeniedErrorНет
404anthropic.NotFoundErrorНет: проверьте ID модели или URL
429anthropic.RateLimitErrorДа, после паузы
5xx, включая 529 — перегрузкаanthropic.InternalServerErrorДа
Сбой сетиanthropic.APIConnectionErrorДа
Тайм-аутanthropic.APITimeoutErrorДа, либо используйте потоковую передачу
errors.py
try:
    message = client.messages.create(model="claude-sonnet-5", max_tokens=1024,
                                      messages=[{"role": "user", "content": "Hi"}])
except anthropic.NotFoundError as e:
    print("Bad model ID or URL:", e.message)
except anthropic.RateLimitError as e:
    print("Rate limited, retry after", e.response.headers.get("retry-after"))
except anthropic.APIStatusError as e:
    print(e.status_code, e.type, e.message)
except anthropic.APIConnectionError:
    print("Network problem")

Сначала перехватывайте конкретные классы, а APIStatusError — в последнюю очередь; один общий except скрывает различие между ошибками, при которых стоит повторить запрос, и ошибками, требующими изменения кода. e.type возвращает строку с типом ошибки API, например rate_limit_error или overloaded_error.

ID моделей

Идентификатор модели Для каких задач
claude-sonnet-5Основной выбор для программирования и работы с агентами: быстрая, мощная, со средней стоимостью.
claude-opus-5-5Более сложные рассуждения, масштабный рефакторинг, длительная работа агентов.
claude-fable-5-1Самая мощная и дорогая; используйте её для наиболее сложных задач.
claude-haiku-4-5Недорогая и быстрая: заголовки, краткие изложения, классификация, небольшие шаги.

client.models.list() возвращает модели, доступные через конечную точку, поэтому вы можете проверить ID перед использованием. Используйте ID точно в указанном виде: без суффиксов с датой.

Устранение неполадок при работе через шлюз

Что вы видите Причина Решение
NotFoundError на 404 page not found/v1 в base_urlИспользуйте корневой адрес хоста
AuthenticationErrorКлюч не задан в окружении процесса или вставлен с пробельными символамиВыведите len(os.environ["ANTHROPIC_API_KEY"])
RateLimitError: Concurrency limit exceeded for userСлишком много одновременных запросовОбъект asyncio.Semaphore , как показано выше
APITimeoutError при длительных задачахЗапрос без потоковой передачи выполняется дольше тайм-аутаИспользуйте потоковую передачу или увеличьте timeout
InternalServerError: No available accountsВременная нехватка ресурсов у вышестоящего сервисаДайте SDK повторить запрос; увеличьте max_retries
Insufficient account balanceБаланс исчерпанПополнить баланс

Подробнее об ошибках на стороне модели — в руководстве по ошибкам Claude API.

Часто задаваемые вопросы

Как установить Anthropic Python SDK?
pip install anthropic. Версия 1.x требует Python 3.10 или новее.
Как задать собственный базовый URL в Anthropic Python SDK?
Передайте base_url в anthropic.Anthropic() или задайте ANTHROPIC_BASE_URL. Используйте корневой адрес хоста; SDK добавляет /v1/messages.
Каковы стандартные тайм-аут и число повторных попыток?
10 мин. на запрос и 2 повторных попыток с экспоненциальным увеличением задержки при ошибках подключения, ответах 408, 409, 429 и 5xx.
Как использовать потоковую передачу с Python SDK?
Используйте with client.messages.stream(...) as stream: и перебирайте stream.text_stream; stream.get_final_message() возвращает полное сообщение.
Начните использовать Claude за несколько минут

Получите ключ API — учётная запись Anthropic и запись в лист ожидания не нужны.

Получить ключ API

AI Prime Tech — независимый API-шлюз. Он не связан с Anthropic, не одобрен этой компанией и не является её реселлером. Claude и названия связанных моделей — товарные знаки их соответствующих владельцев.

Другие руководства по Claude API

Как получить ключ Claude APIКак устроены цены Claude APIСамый дешевый способ использования API ClaudeБезлимитный Cursor с API ClaudeБезлимитный доступ к Claude CodeШлюз API Claude и прямой доступ к Anthropic: сравнениеИспользование Claude через API, совместимый с OpenAIОбъяснение моделей Claude: сравнение Claude Opus, Sonnet, Haiku и Fable — все модели Claude API, названия моделей Anthropic и цены (2026)Оплата API Claude криптовалютойДоступ к API Claude без листа ожиданияКак сократить расход токенов ClaudeБезлимитный Cline с API ClaudeБезлимитный Roo Code с API ClaudeБезлимитный Claude в IDE JetBrainsAider без ограничений с Claude APIБезлимитный Claude в VS CodeКонфигурация OpenCode для Claude: настройка opencode.json, модели и распространённые ошибкиЗапуск агента Hermes без ограничений на ClaudeЗапуск OpenClaw с Claude без ограниченийЧто означает API, совместимый с AnthropicКлюч API Claude Code — ANTHROPIC_API_KEY: как получить, настроить и когда вместо него использовать claude setup-tokenРасходы на API Claude Code — цены и способы их снизитьОбъяснение ошибок API Claude: ошибка сервера 500, перегрузка 529, лимит запросов 429, некорректный запрос 400 — и исправление каждой из нихКак купить кредиты Claude API — и почему кредиты Claude лучше любого предложения «купить аккаунт Claude»Бесплатный API Claude: существует ли бесплатный ключ API Claude и что действительно бесплатно в 2026?API Claude или подписка Claude Pro/Max — что выбратьЗапуск Codex CLI на ClaudeПодключение Claude к n8nМаршрутизация LiteLLM к ClaudeИспользование Claude в Kilo CodeПодключение Claude к GitHub CopilotПодключите Zed к Claude через шлюзПодключите Cherry Studio к ClaudeChatAnthropic в LangChain: импорт, base_url, потоковая передача, инструменты и ошибкиClaude с Vercel AI SDK: baseURL в createAnthropic, потоковая передача и устранение проблемИспользуйте Factory Droid с ClaudeКак устроен API Claude CodeИнтеграция API Claude в ваше приложениеКак пользоваться Claude без ограничений — и почему «взломанного Claude Code» не существует

Другие гайды по Claude API

Что означает API, совместимый с AnthropicКак купить кредиты API ClaudeСамый дешевый способ использования API ClaudeОбъяснение ошибок API Claude: ошибка сервера 500, перегрузка 529, лимит запросов 429, некорректный запрос 400 — и исправление каждой из нихБесплатный API Claude: существует ли бесплатный ключ API Claude и что действительно бесплатно в 2026?Интеграция API Claude в ваше приложениеОбъяснение моделей Claude: сравнение Claude Opus, Sonnet, Haiku и Fable — все модели Claude API, названия моделей Anthropic и цены (2026)Как устроены цены Claude APIШлюз API Claude и прямой доступ к Anthropic: сравнениеAPI Claude или подписка Claude Pro/Max — что выбратьОплата API Claude криптовалютойДоступ к API Claude без листа ожиданияКак устроен API Claude CodeРасходы на API Claude Code — цены и способы их снизитьКлюч API Claude Code — ANTHROPIC_API_KEY: как получить, настроить и когда вместо него использовать claude setup-tokenКак получить безлимитный доступ к ClaudeКак получить ключ Claude APIКак сократить расход токенов ClaudeИспользуйте Claude с OpenAI SDK: совместимая с OpenAI конечная точка, потоковая передача, инструменты и ограниченияHermes Agent с Claude через шлюз: настройка пользовательского провайдера, контроль расходов и исправленияЗапуск OpenClaw с Claude без ограниченийЧто означает безлимитный доступ к API ClaudeКак получить безлимитный ключ API ClaudeБезлимитное использование Claude Code — без ограничений на токеныБезлимитный доступ к Claude Opus 4.8Безлимитное использование Claude — тарифы и ценыAider с Claude через шлюз: ANTHROPIC_API_BASE, файлы конфигурации, режим архитектора и исправленияПодключите Cherry Studio к ClaudeБезлимитный доступ к Claude CodeБезлимитный Cline с API ClaudeCodex CLI с пользовательским провайдером: config.toml, модели GPT и Claude, расширение для IDE и исправленияРабота в Cursor с безлимитным доступом к ClaudeИспользуйте Factory Droid с ClaudeGitHub Copilot Chat с Claude через шлюз: настройка Custom Endpoint, режим агента и исправленияБезлимитный Claude в IDE JetBrainsИспользование Claude в Kilo CodeChatAnthropic в LangChain: импорт, base_url, потоковая передача, инструменты и ошибкиМаршрутизация LiteLLM к ClaudeПодключение Claude к n8nКонфигурация OpenCode для Claude: настройка opencode.json, модели и распространённые ошибкиБезлимитный Roo Code с API ClaudeClaude с Vercel AI SDK: baseURL в createAnthropic, потоковая передача и устранение проблемБезлимитный Claude в VS CodeПодключите Zed к Claude через шлюз