LangChain в России: рабочая настройка за 10 минут
LangChain в России работает отлично. Проблема не в фреймворке — проблема в том,
что api.openai.com с российских IP не отвечает. Это убивает примерно половину
туториалов из интернета на первом же ChatOpenAI().
Фикс простой: один параметр base_url — и всё что написано в документации
LangChain работает без изменений. Дальше разберём от установки до реального примера с RAG.
Что такое LangChain и нужен ли он вам
LangChain — фреймворк для построения приложений поверх LLM. Звучит абстрактно, на практике он решает конкретные задачи: связать модель с базой данных, построить цепочку промптов, добавить память к чат-боту, подключить внешние инструменты.
Честно: для простых вещей — один промпт, получить ответ — LangChain избыточен. Берите нативный SDK. LangChain оправдывает себя там, где нужна оркестрация: RAG-системы, мультишаговые агенты, сложные пайплайны.
Экосистема в 2026 году: ядро LangChain + LangGraph (граф-оркестрация агентов) + LangSmith (трейсинг и дебаг). Для продакшена почти всегда нужны все три.
Установка
pip install langchain langchain-openai langchain-community
Для векторных баз — отдельно, по вкусу:
# Локально (без внешних сервисов)
pip install faiss-cpu
# Или облачно
pip install chromadb # Chroma
pip install pinecone-client # Pinecone
Настройка для России: один параметр меняет всё
Вместо прямого api.openai.com — PlusVibe API. Полностью совместим,
принимает те же запросы, отвечает в том же формате.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.5-turbo",
api_key="sk-pv-ваш_ключ",
base_url="https://plusvibeapi.ru/v1",
)
response = llm.invoke("Объясни разницу между LangChain и LlamaIndex")
print(response.content)
Всё. Больше никаких изменений — весь остальной код LangChain работает как есть.
Через переменные окружения (рекомендую для продакшена)
export OPENAI_API_KEY="sk-pv-ваш_ключ"
export OPENAI_API_BASE="https://plusvibeapi.ru/v1"
Тогда ChatOpenAI() без аргументов подхватит настройки сам.
Удобно — не нужно передавать ключ в каждый файл проекта.
Реальный пример: RAG по документам
Самый распространённый кейс — загрузить корпоративные документы и задавать по ним вопросы. Вот минимальный рабочий пример:
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
# 1. Загружаем документ
loader = PyPDFLoader("docs/company_policy.pdf")
docs = loader.load()
# 2. Разбиваем на чанки
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(docs)
# 3. Создаём векторную базу
embeddings = OpenAIEmbeddings(
api_key="sk-pv-ваш_ключ",
base_url="https://plusvibeapi.ru/v1",
model="text-embedding-3-small",
)
vectorstore = FAISS.from_documents(chunks, embeddings)
# 4. Строим RAG-цепочку
llm = ChatOpenAI(
model="gpt-5.5-turbo",
api_key="sk-pv-ваш_ключ",
base_url="https://plusvibeapi.ru/v1",
)
qa = RetrievalQA.from_chain_type(llm=llm, retriever=vectorstore.as_retriever())
# 5. Задаём вопрос
answer = qa.invoke("Какова политика компании по удалённой работе?")
print(answer["result"])
Нюанс про embeddings: они тоже идут через API, значит тоже нужен base_url.
Забыть об этом — самая частая ошибка при переходе с прямого OpenAI.
Модели: что выбрать под задачу
| Модель | Лучше для | ₽/1M input |
|---|---|---|
| gpt-5.5-turbo | Чат-боты, RAG, агенты | 550 |
| claude-opus-4-8 | Анализ документов, сложная логика | 370 |
| gemini-2.5-flash | Высокий RPS, большие объёмы | 29 |
| text-embedding-3-small | Эмбеддинги для RAG | 8 |
Типичные ошибки при первом запуске
AuthenticationError: Incorrect API key
Ключ PlusVibe начинается с sk-pv-. Если скопировали старый OpenAI-ключ
(sk-proj- или sk-...) — он не подойдёт.
Embeddings возвращают ошибку, хотя ChatOpenAI работает
OpenAIEmbeddings и ChatOpenAI — разные классы с независимыми настройками.
Нужно передать base_url в оба. Удобнее вынести в переменные окружения.
Timeout на больших документах
Стандартный таймаут LangChain — 30 секунд. Для больших промптов увеличьте:
ChatOpenAI(..., timeout=120).
Часто задаваемые вопросы
Работает ли LangGraph через PlusVibe?
Да. LangGraph использует те же LLM-объекты — просто передайте base_url при инициализации модели.
Можно ли использовать Claude через LangChain?
Да. PlusVibe предоставляет OpenAI-совместимый интерфейс для всех моделей включая Claude. Используйте ChatOpenAI(model="claude-opus-4-8", base_url="https://plusvibeapi.ru/v1") — нативный пакет langchain-anthropic не нужен.
Поддерживается ли стриминг?
Да. ChatOpenAI(streaming=True) работает как ожидается — токены приходят по мере генерации.
LangSmith работает с PlusVibe?
LangSmith — это отдельный сервис трейсинга, он работает независимо от того, через какой API идут запросы. Настройка стандартная: LANGCHAIN_TRACING_V2=true + LANGCHAIN_API_KEY.
Есть ли ограничения по RPS?
Зависит от тарифа. На стартовом плане — 60 RPM. Для высоконагруженных пайплайнов LangChain есть корпоративные лимиты — пишите в поддержку.
Запустите LangChain без VPN
GPT-5.5, Claude, Gemini и embeddings — всё через один ключ. Оплата рублями.
Получить ключ →


