LangChain в России: Claude, GPT, DeepSeek и Gemini в ChatOpenAI и LangGraph без VPN
LangChain и LangGraph — открытые библиотеки на Python и JavaScript для агентов, RAG и цепочек вызовов LLM. Сами они бесплатны, а вот ключ OpenAI или Anthropic из России не получить. RuAPI закрывает эту часть: в ChatOpenAI достаточно указать base_url https://www.ruapi.ai/v1 и ключ RuAPI — и тот же код работает с Claude, GPT, DeepSeek, Gemini, Qwen и GLM. Для Claude можно взять и родной ChatAnthropic. Без VPN, оплата в USDT.
Обновлено:
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://www.ruapi.ai/v1",
)
resp = client.chat.completions.create(
model="deepseek-flash",
messages=[{"role": "user", "content": "Привет"}],
)
print(resp.choices[0].message.content)Это проверка ключа через обычный SDK openai. В LangChain передаются те же два значения: адрес https://www.ruapi.ai/v1 — в base_url, ключ — в api_key (в JS — configuration.baseURL и apiKey).
Что мешает писать на LangChain из России
Пакеты ставятся, а ключ не выдают.
pip install langchain проходит без проблем, но первому же вызову модели нужен API-ключ. Ни Anthropic, ни OpenAI Россию в списке поддерживаемых стран не держат (anthropic.com/supported-countries, developers.openai.com/api/docs/supported-countries, 05.11.2026), так что ключ напрямую не оформить. Ключ RuAPI создаётся сразу после регистрации, баланс пополняется в USDT.
На каждого производителя — свой пакет, ключ и счёт.
В LangChain у OpenAI, Anthropic, Google и DeepSeek отдельные интеграции: langchain-openai, langchain-anthropic, langchain-google-genai, langchain-deepseek, и каждая ждёт ключ своей компании. Через RuAPI все модели отвечают по одному OpenAI-совместимому адресу, поэтому хватает ChatOpenAI и одного ключа: модель меняется полем model, остальной код цепочки или графа остаётся прежним.
Агент в цикле расходует токены незаметно.
Агент на LangGraph на каждом шаге заново отправляет модели всю историю: сообщения, вызовы инструментов и их результаты. Ошибка в условии остановки — и счёт растёт. Поэтому для разработки удобно завести отдельный ключ с бюджетом, а тесты гонять на дешёвой модели: у deepseek-flash миллион входных токенов стоит $0,168, а повторный префикс из кэша — $0,012.
Как подключить RuAPI к LangChain: 3 шага
Для текущих версий: langchain 1.4, langchain-openai 1.7, langchain-anthropic 1.7, LangGraph 1.2 на Python 3.10+ и @langchain/openai 1.8 в JavaScript (PyPI, npm, 05.11.2026). Пример кода — в блоке ниже.
Зарегистрируйтесь в RuAPI и пополните баланс
Аккаунт на www.ruapi.ai открывается по почте, через Google или Яндекс. Пополнять баланс проще всего в USDT: от 5 USDT в сетях TRC20, BEP20, TON или Polygon, USDC тоже принимаем. USDT покупают за рубли через СБП — пошагово это описано в docs.ruapi.ai/ru/buy-usdt. Подойдёт и карта иностранного банка.
На новый аккаунт обычно сразу начисляется $0,05 — этого хватит, чтобы запустить первые примеры на claude-haiku-5-5, deepseek-flash или gpt-6-luna. Остальные модели откроются после первого пополнения.
Создайте ключ для проекта
Консоль → «API-ключи» → «Создать ключ». Для экспериментов с агентами выключите в блоке «Бюджет» переключатель «Без ограничений» и задайте сумму: зациклившийся граф не потратит больше. Ключ держите в переменной окружения или в .env, а не в коде, который уходит в git.


Передайте адрес и ключ в модель LangChain
- Python: pip install -U langchain langchain-openai. Затем ChatOpenAI(model="deepseek-flash", base_url="https://www.ruapi.ai/v1", api_key="sk-..."). Вместо параметров можно задать переменные окружения OPENAI_API_KEY и OPENAI_BASE_URL (или OPENAI_API_BASE) — ChatOpenAI прочитает их сам.
- JavaScript и TypeScript: npm install @langchain/openai @langchain/core. Адрес передаётся не напрямую, а внутри configuration: new ChatOpenAI({ model: "deepseek-flash", apiKey: "sk-...", configuration: { baseURL: "https://www.ruapi.ai/v1" } }).
- Claude в родном формате Anthropic: pip install -U langchain-anthropic и ChatAnthropic(model="claude-sonnet-5-5", base_url="https://www.ruapi.ai", api_key="sk-..."). Здесь адрес без /v1 — библиотека сама допишет /v1/messages.
- Вызовите llm.invoke("Привет!") и откройте Консоль → «Журнал запросов»: новая строка с моделью и ценой означает, что всё подключено. Дальше llm передаётся в create_agent, цепочки LCEL или узлы LangGraph как обычная модель.
Пошаговый разбор с примерами: docs.ruapi.ai/ru/integrations/langchain · вызов инструментов: docs.ruapi.ai/ru/function-calling · потоковый вывод: docs.ruapi.ai/ru/streaming
Минимальный код
Python: любая модель через ChatOpenAI
pip install -U langchain langchain-openai
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="deepseek-flash",
base_url="https://www.ruapi.ai/v1",
api_key="sk-...",
)
print(llm.invoke("Привет!").content)
JavaScript / TypeScript (ESM)
npm install @langchain/openai @langchain/core
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "deepseek-flash",
apiKey: "sk-...",
configuration: { baseURL: "https://www.ruapi.ai/v1" },
});
console.log((await llm.invoke("Привет!")).content);
Claude через ChatAnthropic
pip install -U langchain-anthropic
from langchain_anthropic import ChatAnthropic
# base_url без /v1: библиотека сама допишет /v1/messages
llm = ChatAnthropic(
model="claude-sonnet-5-5",
base_url="https://www.ruapi.ai",
api_key="sk-...",
max_tokens=4096,
)
print(llm.invoke("Привет!").content)
Цены на модели для LangChain-проектов
От дешёвых моделей для тестов и RAG до сильных — для сложных агентов. Цены в долларах за 1 млн токенов, как на странице цен. Подписки нет: списываются только токены, которые потратил ваш код.
| model | input $/M | output $/M |
|---|---|---|
| deepseek-flash | $0.17 чтение кэша $0.0120 | $1.44 |
| gpt-5.4-mini | $0.90 чтение кэша $0.0900 | $5.40 |
| claude-haiku-5-5 | $0.12 чтение кэша $0.0120 >100K: $0.60 | $0.60 >100K: $3.00 |
| gemini-3.8-flash | $0.90 чтение кэша $0.0900 | $4.50 |
| gpt-5.4 | $3.00 чтение кэша $0.30 >272K: $6.00 | $18.00 >272K: $27.00 |
| claude-sonnet-5-5 | $2.40 чтение кэша $0.12 | $12.00 |
Input — это новые входные токены, «чтение кэша» — та часть входа, что пришла из кэша, output — ответ модели. GPT и DeepSeek кэшируют повторяющееся начало запроса сами. Claude кэширует по меткам cache_control. Если вы их не ставите, RuAPI делает это сам — и для ChatOpenAI, и для ChatAnthropic: когда в запросе уже есть прошлые ответы модели, а предыдущий вызов этой модели с тем же ключом был меньше 5 минут назад, метка ставится на конец системного промпта и на последнее сообщение пользователя. После трёх подряд записей в кэш, которые не окупились, авторазметка для пары «ключ + модель» отключается на час. Свои метки можно передать в блоках сообщений ChatOpenAI или поставить через AnthropicPromptCachingMiddleware из langchain_anthropic.middleware — тогда RuAPI ничего не добавляет (docs.ruapi.ai/ru/prompt-caching).
Строка «>100K», выделенная серым, — тариф производителя для промптов длиннее порога; если запрос превысил порог, он целиком оплачивается по этому тарифу.
