LangChain в России: один ключ на чат, RAG и эмбеддинги
Polza — OpenAI-совместимый API, поэтому в LangChain используется обычный ChatOpenAI с другим base_url. Оплата картой РФ, зарубежные аккаунты не нужны.
- Обычный ChatOpenAI
- Работает из РФ напрямую
- Карта РФ и СБП
- Чат, RAG и эмбеддинги
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="deepseek/deepseek-v4-flash-0731",
base_url="https://polza.ai/api/v1/",
api_key="sk-polza-••••",
max_tokens=600)
✓ llm.invoke("привет") работает
Что такое LangChain
LangChain — библиотека для Python, на которой собирают приложения с языковыми моделями: чаты, агентов, поиск по своим документам. Она берёт на себя рутину — работу с промптами, память диалога, вызов функций, разбиение длинных текстов.
Модель библиотека сама не содержит: она обращается к провайдеру. Для OpenAI-совместимых API это класс ChatOpenAI, и именно через него подключается Polza — меняется только адрес.
Библиотека бесплатная и с открытым кодом. Платите только за токены моделей, которые вызывают ваши цепочки.
Где ломается LangChain из России
Сама библиотека ставится из pip без ограничений. Проблемы начинаются на первом же вызове модели — и ещё одна поджидает на эмбеддингах.
Провайдер не отвечает
Штатные вызовы уходят к api.openai.com или api.anthropic.com, а они не обслуживают российские адреса.
base_url на Polza отвечает из РФ напрямую.
Не тот класс — запрос мимо Polza
ChatAnthropic, init_chat_model("claude-…") и langchain-openrouter ходят к своим провайдерам, а не по вашему base_url.
Только ChatOpenAI из langchain-openai.
Эмбеддинги возвращают 400
LangChain пре-токенизирует тексты через tiktoken и шлёт массив целых чисел, а Polza принимает строки — отсюда BAD_REQUEST.
Небольшой свой класс через httpx.
Картой не оплатить
Зарубежным провайдерам нужна иностранная карта у каждого отдельно.
Карта РФ, СБП или счёт для юрлица.
Рассуждающая модель «молчит»
Модель списывает токены, а content пустой: reasoning_tokens идут сверх лимита и съедают видимый вывод.
Ставим max_tokens с запасом.
Стриминг рвётся
В корпоративных сетях прокси режет SSE, и поток обрывается после первого чанка.
Прямое подключение без прослоек.
Как подключить LangChain к Polza
Библиотека одна, класс обычный, меняется только адрес. Нужен Python 3.10 или новее.
Что нужно для запуска
Python 3.10 и пакеты
langchain-openai обязательно, httpx — для эмбеддингов, numpy — для косинусной близости в InMemoryVectorStore.
Ключ Polza
Создаётся в кабинете за минуту. Пополняется картой РФ, через СБП или по счёту для юрлица.
Полный slug модели
Имя пишется с префиксом провайдера. Без него API вернёт 404, даже если модель существует.
Шаг 1
Поставьте пакеты
langchain-openai— основной пакет,httpxпонадобится для эмбеддингов,numpy— для косинусной близости в InMemoryVectorStore.Терминал$ pip install -U langchain-openai httpx numpy # требуется Python 3.10+Шаг 2
Создайте ChatOpenAI
Адрес указывается в
base_url— обратите внимание на слеш в конце. Имя модели берётся из каталога целиком, вместе с префиксом провайдера:chat.pyfrom langchain_openai import ChatOpenAI llm = ChatOpenAI( model="anthropic/claude-sonnet-4.6", base_url="https://polza.ai/api/v1/", api_key="ваш ключ", max_tokens=1500)Шаг 3
Для эмбеддингов — свой класс
OpenAIEmbeddingsс Polza напрямую не работает: LangChain шлёт токены вместо строк. Обходится небольшим классом, который дёргает эндпоинт через httpx:embeddings.pyclass PolzaEmbeddings(Embeddings): httpx.post( f"{base_url}/embeddings", json={"model": …, "input": ["строка"]} # input — только строки, не массив токеновШаг 4
Проверьте на простом вызове
Запустите
llm.invoke()с коротким запросом. Если ответ пришёл — дальше работают цепочки, стриминг, tool calling и RAG как обычно.
Почему max_tokens нужно ставить с запасом
У рассуждающих моделей — DeepSeek R1, Claude с thinking, o1 и подобных — внутренние reasoning-токены расходуются сверх лимита. Если поставить max_tokens впритык, модель потратит бюджет на размышление, а видимого текста не останется: в ответе будет пустой content при списанных токенах. Для коротких ответов закладывайте 600–800, для кода — 1500–2500.
Что собирают на LangChain
Библиотека закрывает весь путь от простого запроса до поиска по своим документам — и всё это работает на одном ключе.
Чат и цепочки
Обычный вызов модели, цепочки из нескольких шагов, стриминг и асинхронные вызовы через ainvoke и astream.
RAG по своим документам
Поиск по загруженной базе: от варианта в пять строк до полноценного InMemoryVectorStore с разбиением длинных текстов.
Tool calling
Модель вызывает ваши функции — обращается к базе, считает, ходит во внешние сервисы и возвращается с результатом.
Структурированный вывод
Ответ приходит готовой схемой, а не текстом, который надо разбирать регулярками.
Две модели в одной цепочке
Дешёвая классифицирует запрос, сильная отвечает. Классический способ срезать расходы без потери качества.
LangGraph и агенты
Поверх LangChain строятся агенты с состоянием и ветвлением — подключение моделей остаётся тем же.
https://polza.ai/api/v1/
Для LangChain — именно со слешем. Так указано в документации и так собирается путь до эндпоинтов.
Полный slug модели
Имя модели пишется целиком, с префиксом провайдера: anthropic/claude-sonnet-4.6, а не claude-sonnet-4.6. Без префикса вернётся 404.
Чем LangChain отличается от n8n и прямых вызовов API
Одну и ту же задачу можно решить тремя способами, и выбор зависит от того, сколько кода вы готовы писать.
LangChain
Код на Python и полный контроль: цепочки, RAG, агенты, tool calling. Больше работы на старте, зато никаких ограничений платформы.
Визуальный конструктор сценариев: быстрее собрать и проще передать коллеге без Python. Под него есть отдельная страница.
Прямые вызовы API
Самый простой путь для одного запроса. Как только появляются память, инструменты и поиск по документам — вы начинаете писать свой LangChain.
Напрямую или через Polza
| Из России | Провайдеры напрямую | LangChain через Polza |
|---|---|---|
| Оплата | Зарубежная карта у каждого | Карта РФ, СБП, счёт для юрлиц |
| Доступ к API | Закрыт, нужны обходные пути | Работает из РФ напрямую |
| Классы | Свой пакет под каждого вендора | Один ChatOpenAI на всё |
| Смена модели | Другой пакет и другой ключ | Правка одной строки model= |
| Эмбеддинги | Отдельный провайдер и ключ | Тот же ключ, свой класс на httpx |
| Документы | Нет | Договор, счёт, УПД, НДС |
| Расходы | По кабинетам провайдеров | Статистика по ключам и моделям |
Сколько стоит LangChain в России
Библиотека бесплатная и с открытым кодом. Платите только за токены моделей по ценам каталога, в рублях.
Массовые вызовы в цепочках
DeepSeek V4 Flash и GLM — классификация, разметка и промежуточные шаги, где вызовов много, а каждый короткий.
Основной ответ
Claude Sonnet 4.6 и GPT-5.5 — финальный шаг цепочки, где качество видно пользователю.
Эмбеддинги для RAG
Отдельные модели эмбеддингов из каталога: они дешевле генеративных, а размерность указана на странице каждой.
Модели, с которых стоит начать
Anthropic: Claude Sonnet 4.6
anthropic/claude-sonnet-4.6
основной ответ в цепочке
OpenAI: GPT-5.5
openai/gpt-5.5
сложные рассуждения
DeepSeek: DeepSeek V4 Flash 0731
deepseek/deepseek-v4-flash-0731
массовые промежуточные вызовы
Z.ai: GLM 5.1
z-ai/glm-5.1
классификация и разметка
Актуальные цены за 1M токенов — в каталоге моделей.
Если что-то не работает
Четыре причины, на которые приходится почти вся переписка с поддержкой.
Ошибка 401 Unauthorized
base_url должен быть https://polza.ai/api/v1/ — со слешем на конце и с /v1. Ключ скопируйте заново: пробелы и невидимые символы ломают авторизацию.
Ошибка 400 на эмбеддингах
LangChain шлёт токены вместо строк. Используйте свой класс на httpx вместо OpenAIEmbeddings напрямую.
Ошибка 404: model not found
Slug устарел или указан без префикса. Актуальный список — в каталоге или запросом GET на /api/v1/models.
ImportError про numpy
InMemoryVectorStore считает косинусную близость через numpy. Поставьте пакет: pip install numpy.
Для команд и юрлиц
Счёт, УПД и НДС
Оплата по счёту для ООО и ИП, договор с российским юрлицом, закрывающие документы каждый месяц.
Ключ на сотрудника
Отдельные ключи с общим балансом организации: видно, кто и сколько потратил.
Контроль бюджета
Статистика расходов по ключам и моделям в кабинете, без сюрпризов в конце месяца.
Помощь с переездом
Поможем перевести команду с зарубежных подписок на API: настройка окружений и правила расходования.
Вопросы и ответы
Как подключить LangChain к Polza?
Используйте ChatOpenAI из langchain-openai и укажите base_url https://polza.ai/api/v1/ вместе со своим ключом. Больше ничего менять не нужно.
Почему нельзя использовать ChatAnthropic?
Этот класс ходит напрямую к Anthropic и ваш base_url не учитывает. То же самое с init_chat_model("claude-…") и langchain-openrouter — запросы уйдут мимо Polza.
Почему эмбеддинги возвращают 400?
LangChain пре-токенизирует тексты через tiktoken и отправляет массив целых чисел, а Polza принимает строку или массив строк. Решается небольшим своим классом на httpx — пример есть в документации.
Модель отвечает пустым content, но токены списываются
Так ведут себя рассуждающие модели: reasoning-токены идут сверх лимита. Увеличьте max_tokens минимум до 600–1000.
Ошибка 404: model not found
Имя модели указано без префикса провайдера. Нужен полный slug из каталога, например anthropic/claude-sonnet-4.6.
Стриминг обрывается после первого чанка
Обычно это корпоративный прокси, который режет SSE. Отключите стриминг или обеспечьте прямое соединение с polza.ai.
Работает ли RAG и tool calling?
Да, всё штатно: цепочки, стриминг, асинхронные вызовы, tool calling, структурированный вывод и векторные хранилища.
Какая версия Python нужна?
Python 3.10 или новее. Пакеты: langchain-openai, httpx для эмбеддингов и numpy для косинусной близости.
Другие интеграции
Тот же ключ работает в остальных инструментах: меняется только место, куда вписать Base URL.
Кто проверял эту инструкцию

Основатель Polza.AI · редакция Polza.AI
Собрал и проверил подключение LangChain на актуальной версии: прошёл все шаги заново, сверил идентификаторы моделей с каталогом и перепроверил адреса API. Если инструмент обновится и инструкция разойдётся с реальностью — правим страницу.
Обновлено · Как работает редакция · Нашли неточность? Напишите нам
Подключите LangChain за одну строку
Меняется только base_url и ключ — остальной код остаётся прежним, а оплата переезжает в рубли.
Остались вопросы? Документация по LangChain, поддержка в Telegram или support@polza.ai
Инструкцию проверила редакция Polza.AI, обновлено . Цены и список моделей меняются — актуальные смотрите в каталоге.