📝 LLM и AI

AsyncAnthropic: асинхронный клиент Claude API

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
387
🌳
Уровень
Продвинутый

AsyncAnthropic — асинхронная версия Anthropic клиента. Использует async/await и интегрируется с asyncio event loop.

Отличия от синхронного клиента

# Синхронный (блокирует поток)
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(...)

# Асинхронный (не блокирует)
import anthropic
client = anthropic.AsyncAnthropic()
response = await client.messages.create(...)

API идентичен — только добавляется await.

Базовое использование

import asyncio
import anthropic
from environs import Env

env = Env()
env.read_env()

client = anthropic.AsyncAnthropic(api_key=env.str("ANTHROPIC_API_KEY"))

async def chat(message: str) -> str:
    response = await client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=[{"role": "user", "content": message}]
    )
    return response.content[0].text

async def main():
    answer = await chat("Объясни async/await за 3 предложения")
    print(answer)

asyncio.run(main())

Асинхронный стриминг

async def stream_chat(message: str) -> str:
    chunks = []
    async with client.messages.stream(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=[{"role": "user", "content": message}],
    ) as stream:
        async for text in stream.text_stream:
            print(text, end="", flush=True)
            chunks.append(text)
        final = await stream.get_final_message()
    print()
    return "".join(chunks)

asyncio.gather() — параллельные запросы

async def analyze_batch(texts: list[str]) -> list[str]:
    """Отправляет все запросы параллельно."""
    async def analyze_one(text: str) -> str:
        response = await client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=256,
            messages=[{"role": "user", "content": f"Тональность: {text}. Одним словом."}]
        )
        return response.content[0].text.strip()

    return await asyncio.gather(*[analyze_one(t) for t in texts])

async def main():
    texts = ["Отличный продукт!", "Ужасный сервис", "Нормально, ничего особенного"]
    results = await analyze_batch(texts)
    for text, sentiment in zip(texts, results):
        print(f"{sentiment}: {text}")

asyncio.run(main())

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

async def safe_chat(message: str) -> str | None:
    try:
        response = await client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=512,
            messages=[{"role": "user", "content": message}]
        )
        return response.content[0].text
    except anthropic.RateLimitError:
        await asyncio.sleep(5)
        return await safe_chat(message)  # retry
    except anthropic.APIError as e:
        print(f"Ошибка API: {e}")
        return None

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

asyncio в Python: асинхронное программирование

asyncio — стандартная библиотека Python для асинхронного кода. Позволяет выполнять несколько задач «одновременно» в одном...

📅 30.06.2026 👁️ 318
📝

httpx: современный HTTP-клиент для Python

httpx — HTTP-клиент нового поколения. Интерфейс похож на requests, но с поддержкой async/await из коробки.

📅 30.06.2026 👁️ 330
📝

AI-агенты: ReAct loop и автономные действия

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их...

📅 30.06.2026 👁️ 335
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Нейросети в коде: 5 AI-проектов на Python с Claude Открыть программу курса