
ChatAnthropic в LangChain: импорт, base_url, потоковая передача, инструменты и ошибки
ChatAnthropic из langchain-anthropic пакета — это чат-модель Claude для LangChain. Она представляет собой обёртку над официальным Python SDK Anthropic, поэтому для подключения к шлюзу достаточно одного аргумента, base_url, со значением корневого адреса хоста. Всё остальное в ваших цепочках, агентах и инструментах остаётся без изменений.
Установка и импорт
pip install -U langchain-anthropicfrom langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://aiprimetech.io", # host root: the SDK adds /v1/messages
api_key="your_gateway_key", # or set ANTHROPIC_API_KEY
)
print(llm.invoke("Say hello in one word.").text)/v1 в base_url здесь. Используемый внутри Anthropic SDK добавляет /v1/messages самостоятельно; добавление /v1 приводит к /v1/v1/messages и 404 page not found.Настройка через переменные окружения
base_url — это псевдоним для anthropic_api_urlи api_key — псевдоним для anthropic_api_key. Если вы их не передаёте, ChatAnthropic считывает ANTHROPIC_API_URL сначала, затем ANTHROPIC_BASE_URL, а ключ — из ANTHROPIC_API_KEY. Явно переданные аргументы всегда имеют приоритет.
export ANTHROPIC_API_KEY=your_gateway_key
export ANTHROPIC_API_URL=https://aiprimetech.iofrom langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-5") # picks up the gateway from the environmentПотоковая передача
for chunk in llm.stream("Explain backpressure in two sentences."):
print(chunk.text, end="", flush=True).text собирает только текстовые блоки каждого фрагмента, поэтому результат остаётся чистым, даже когда модель также выдаёт блоки размышлений или использования инструментов. Используйте потоковую передачу для длинных ответов: длительный запрос без потоковой передачи — обычная причина тайм-аутов.
Инструменты и структурированный вывод
from langchain_core.tools import tool
@tool
def get_time(city: str) -> str:
"""Return the current local time in a city."""
return "12:00"
msg = llm.bind_tools([get_time]).invoke("What time is it in Tokyo?")
print(msg.tool_calls)from pydantic import BaseModel
class Weather(BaseModel):
city: str
temperature_c: float
print(llm.with_structured_output(Weather).invoke("It is 21 degrees in Lisbon today."))Повторные попытки, тайм-ауты и max_tokens
max_retries по умолчанию имеет значение 2, как и в Anthropic SDK, который повторяет запросы при ошибках соединения, 429 и ответах 5xx. timeout (псевдоним default_request_timeout) задаётся в секундах. Если оставить max_tokens незаданным, значение берётся из профиля модели.
llm = ChatAnthropic(
model="claude-sonnet-5",
base_url="https://aiprimetech.io",
max_retries=4,
timeout=120,
max_tokens=8000,
)Для пакетных запросов ограничьте параллелизм, чтобы не превышать лимит одновременных запросов вашего ключа: llm.batch(inputs, config={"max_concurrency": 3}).
Альтернатива на базе ChatOpenAI
Если ваш код стандартизирован на ChatOpenAI, OpenAI-совместимая конечная точка шлюза также предоставляет доступ к Claude. Для этого варианта требуется /v1 в конце адреса, в отличие от ChatAnthropic.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="claude-sonnet-5", base_url="https://aiprimetech.io/v1", api_key="your_gateway_key")Для Claude предпочтительнее ChatAnthropic: он сохраняет нативные возможности, такие как кеширование промптов и блоки размышлений.
Устранение неполадок
| Что вы видите | Причина | Решение |
|---|---|---|
404 page not found | /v1 в параметре ChatAnthropic base_url | Используйте корневой адрес хоста, https://aiprimetech.io |
Model "..." is not supported | Идентификатор, недоступный группе вашего ключа, или старое имя с датой | Используйте актуальный идентификатор из таблицы ниже |
AuthenticationError | ANTHROPIC_API_KEY не задан в запущенном процессе либо используется ключ для другой конечной точки | Передайте api_key= явно для проверки |
RateLimitError: Concurrency limit exceeded | Слишком много параллельных вызовов (batch, асинхронный gather) | max_concurrency в настройках пакетных запросов |
APITimeoutError | Длительная генерация без потоковой передачи | Используйте потоковую передачу или увеличьте timeout |
| Идентификатор модели | Для каких задач |
|---|---|
claude-sonnet-5 | Основной выбор для программирования и работы с агентами: быстрая, мощная, со средней стоимостью. |
claude-opus-5-5 | Более сложные рассуждения, масштабный рефакторинг, длительная работа агентов. |
claude-fable-5-1 | Самая мощная и дорогая; используйте её для наиболее сложных задач. |
claude-haiku-4-5 | Недорогая и быстрая: заголовки, краткие изложения, классификация, небольшие шаги. |
Часто задаваемые вопросы
Как импортировать ChatAnthropic?
Нужно ли добавлять /v1 в base_url для ChatAnthropic?
Какие переменные окружения читает ChatAnthropic?
base_url — это то же самое, что anthropic_api_url?
Получите ключ API — учётная запись Anthropic и запись в лист ожидания не нужны.
Получить ключ APIAI Prime Tech — независимый API-шлюз. Он не связан с Anthropic, не одобрен этой компанией и не является её реселлером. Claude и названия связанных моделей — товарные знаки их соответствующих владельцев.