---
title: Используйте Claude API с LangChain
description: "Подключите LangChain к Claude через apiToken.sale: направьте ChatAnthropic на router.apitoken.sale, оставьте те же ID моделей и платите за токены на 50% меньше."
url: https://apitoken.sale/ru/docs/learn/claude-api-langchain
language: ru
---

# Используйте Claude API с LangChain

Claude API работает с LangChain из коробки, и ChatAnthropic принимает кастомный URL API — ваши цепочки и агенты заработают на Claude через apiToken.sale после правки в две строки. Тот же пакет langchain-anthropic, те же ID моделей, тот же стриминг и вызов инструментов; меняются только эндпоинт и цена за токен.

## Направьте ChatAnthropic на router.apitoken.sale

Интеграция Anthropic в LangChain принимает кастомный URL API, поэтому подключение Claude API к LangChain через apiToken.sale — это ровно два аргумента конструктора: anthropic_api_url и anthropic_api_key. Промпты, парсеры вывода, колбэки и логика ретраев в существующих цепочках остаются нетронутыми.

```
from langchain_anthropic import ChatAnthropic

llm = ChatAnthropic(
    model="claude-opus-4-8",
    anthropic_api_url="https://router.apitoken.sale",
    anthropic_api_key="sk-pool-•••",
)
print(llm.invoke("Hello").content)
```

> Передавайте корень роутера ровно как показано: без завершающего слэша и без суффикса /v1. Вложенный Anthropic-клиент сам добавляет /v1/messages, и удвоенный путь — самая частая причина 404 при в остальном верной настройке.

Один аргумент стоит задать явно — max_tokens. По умолчанию ChatAnthropic ограничивает ответ 1024 токенами и молча обрезает длинные ответы; увеличьте лимит для цепочек суммаризации или генерации кода. Параметры семплирования вроде temperature и top_p проходят без изменений, как и системные промпты и стоп-последовательности.

## Задайте один раз через переменные окружения

Если кодовую базу вы делите с теми, кто сидит на официальном эндпоинте, — или работаете в ноутбуках, где править исходники неудобно, — обойдитесь вообще без аргументов конструктора. ChatAnthropic читает оба значения из окружения, так что зачекиненный проект не требует ни одной правки кода.

```
export ANTHROPIC_API_URL=https://router.apitoken.sale
export ANTHROPIC_API_KEY=sk-pool-•••
```

1. Установите пакет интеграции: pip install -U langchain-anthropic. Поддержку Anthropic LangChain поставляет именно там, а не в langchain-core.
2. Сгенерируйте ключ в дашборде apiToken.sale — он начинается с sk-pool- и работает с поддерживаемыми моделями Claude, GPT, Gemini и Kimi.
3. Экспортируйте ANTHROPIC_API_URL и ANTHROPIC_API_KEY, как показано выше (или положите их в .env-файл, который подхватывает ваш раннер).
4. Создайте ChatAnthropic(model="claude-sonnet-5") без других аргументов и выполните один invoke(), чтобы убедиться в нормальном ответе.

Явные аргументы конструктора побеждают переменные окружения, поэтому локальный оверрайд никогда не протечёт в общую конфигурацию. Подход через env также держит ключ вне истории git — обращайтесь со sk-pool-… как с любым секретом: .env не коммитим, а в CI значение приходит из хранилища секретов.

## Стриминг, вызов инструментов и LangGraph остаются на месте

Шлюз отдаёт стандартный Anthropic Messages API, и LangChain общается с ним через официальный клиент. Всё, что построено на этом протоколе, — SSE-стриминг, блоки tool use, структурированный вывод — ведёт себя ровно так же, как против api.anthropic.com. Сюда входят и with_structured_output(), который LangChain реализует поверх вызова инструментов, и .astream_events() для потокенных колбэков в асинхронных приложениях.

```
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    """Return the current weather for a city."""
    return f"Sunny in {city}"

llm = ChatAnthropic(model="claude-sonnet-5")  # env vars supply URL and key
llm_with_tools = llm.bind_tools([get_weather])

for chunk in llm_with_tools.stream("What is the weather in Paris?"):
    print(chunk.content, end="")
```

LangGraph-агенты наследуют ту же настройку: узел графа просто вызывает чат-модель. Направьте модель на роутер один раз — и каждый агент, супервизор и субграф, построенные на ней, последуют за ней. Никакой LangGraph-специфичной конфигурации переделывать не нужно.

> Учёт токенов тоже продолжает работать: каждый AIMessage по-прежнему несёт usage_metadata с количеством входных и выходных токенов, потому что шлюз возвращает стандартный объект usage от Anthropic. Трейсы LangSmith и кастомные колбэки, читающие usage_metadata, правок не требуют.

## Что меняется, а что нет

Перед миграцией продакшн-приложения полезно увидеть всю дельту в одном месте. Коротко: ваш код, ваши модели и ваши возможности LangChain остаются на месте — движущихся частей только три: эндпоинт, ключ и цена за токен.

| Вопрос | Через apiToken.sale |
| --- | --- |
| ID моделей | Без изменений — claude-opus-4-8, claude-sonnet-5, claude-haiku-4-5 и остальной каталог |
| Протокол | Без изменений — Anthropic Messages API через официальный клиент |
| Стриминг и вызов инструментов | Без изменений — SSE-чанки и блоки tool use как обычно |
| Цепочки, агенты, LangGraph | Без изменений — правок кода, кроме URL и ключа, нет |
| Цена за токен | На 50% меньше на тех же моделях |
| API-ключ | Один ключ sk-pool-… для поддерживаемых моделей Claude, GPT, Gemini и Kimi |
| Биллинг | Предоплаченный баланс с детализацией расхода и токенов по каждому ключу в дашборде |

[Посмотрите полный список поддерживаемых моделей Claude и цены](/models)

## Выберите правильную модель Claude для каждого узла

Раз смена модели — это правка одного аргумента, воспринимайте выбор модели как решение по узлам, а не глобальное. Цепочке-роутеру, которая классифицирует намерение, не нужен тот же уровень, что узлу, пишущему финальный ответ.

- claude-haiku-4-5 — быстрый и недорогой уровень: классификация, маршрутизация, извлечение и другие высокообъёмные шаги.
- claude-sonnet-5 — сбалансированный дефолт для большинства продакшн-цепочек, RAG-пайплайнов и кодовых агентов.
- claude-opus-4-8 — верхний уровень рассуждений; приберегите его для сложного анализа, длинных документов и шагов планирования агентов.

```
from langchain_anthropic import ChatAnthropic

fast = ChatAnthropic(model="claude-haiku-4-5")      # routing, extraction
balanced = ChatAnthropic(model="claude-sonnet-5")   # default nodes
deep = ChatAnthropic(model="claude-opus-4-8")       # planning, hard analysis

router_chain = router_prompt | fast
answer_chain = answer_prompt | balanced | StrOutputParser()
```

Все три экземпляра делят один URL и ключ из окружения, и каждый вызов списывается с единого предоплаченного баланса. Это делает эксперименты с уровнями дешёвыми: поменяйте строку модели, прогоните оценочный набор, оставьте победителя.

> Прототипируйте на Sonnet, затем понижайте простые узлы до Haiku и повышайте до Opus только сложные. При предоплатном помтокенном биллинге смешанная цепочка стоит заметно дешевле, чем весь прогон на флагмане.

[Оцените цепочку со смешанными моделями в калькуляторе стоимости](/tools/claude-api-cost-calculator)

## Диагностика подключения

Меняются только эндпоинт и ключ, поэтому почти любой сбой — одна из трёх ошибок конфигурации, а не проблема LangChain. Пройдите их по порядку, прежде чем трогать код цепочек.

- 401 Unauthorized — ключ отсутствует или введён с опечаткой, либо переменная окружения не дошла до процесса. Распечатайте os.environ в том же интерпретаторе, чтобы убедиться, и помните: аргументы конструктора перекрывают env.
- 404 Not Found — в URL затесался лишний /v1 или завершающий путь. Используйте чистый корень роутера https://router.apitoken.sale.
- Model not found — сверьте ID с каталогом на /models; здесь используются те же ID, что публикует Anthropic.

Если непонятно, виноват шлюз или ваша цепочка, верните URL на официальный эндпоинт на один прогон. Одинаковое поведение означает баг в цепочке; различие сужает поиск до конфигурации.

> Для временных 429 или 5xx не нужна собственная логика: ChatAnthropic по умолчанию повторяет запрос дважды с backoff'ом (настраивается через max_retries). Долгоживущим агентам всё же стоит задавать явный таймаут в секундах, а не полагаться на дефолт клиента.

## Частые вопросы

### Работает ли LangChain с кастомным эндпоинтом Claude API?

Да. ChatAnthropic принимает anthropic_api_url (или переменную окружения ANTHROPIC_API_URL), поэтому его можно направить на https://router.apitoken.sale и оставить всё остальное — пакет, ID моделей, код цепочек — без изменений.

### Как задать базовый URL Anthropic для LangChain, не меняя код?

Экспортируйте ANTHROPIC_API_URL=https://router.apitoken.sale и ANTHROPIC_API_KEY=sk-pool-… перед запуском скрипта. ChatAnthropic подхватывает оба автоматически, поэтому общие репозитории не требуют правок вообще.

### Продолжают ли работать стриминг и вызов инструментов через apiToken.sale?

Да. Шлюз отдаёт стандартный Anthropic Messages API, поэтому .stream(), bind_tools(), структурированный вывод и LangGraph-агенты ведут себя ровно как с официальным эндпоинтом.

### Какие модели Claude можно вызывать из LangChain?

Все поддерживаемые модели Claude — claude-opus-4-8, claude-sonnet-5, claude-haiku-4-5 и другие — на одном ключе и предоплаченном балансе, на 50% дешевле за токен.

### Можно ли использовать ChatOpenAI вместо ChatAnthropic для Claude?

Да. Роутер также предоставляет OpenAI-совместимую линию на https://router.apitoken.sale/v1, так что ChatOpenAI(base_url="https://router.apitoken.sale/v1", api_key="sk-pool-•••") достаёт те же модели Claude тем же ключом — удобно, когда фреймворк говорит только по протоколу OpenAI.

### Нужен ли отдельный ключ для GPT, Gemini или Kimi в LangChain?

Нет. Тот же ключ sk-pool-… работает с поддерживаемыми моделями Claude, GPT, Gemini и Kimi, поэтому мультипровайдерное приложение на LangChain может делить один ключ и один предоплаченный баланс.

---
Get a key: https://apitoken.sale/register
More guides: https://apitoken.sale/ru/docs/learn
