LangChain — мощный open-source фреймворк для создания AI-приложений. Это самый популярный инструмент для разработки приложений на базе больших языковых моделей (LLM). С AITUNNEL вы можете использовать LangChain в России без VPN.
Что такое LangChain?
LangChain — это фреймворк, который упрощает создание сложных AI-приложений:
- Agents — автономные AI-системы, принимающие решения
- RAG — поиск и использование релевантной информации
- Chains — последовательности операций с LLM
- Memory — сохранение контекста между запросами
- Tools — интеграция с внешними сервисами
Установка
bash
# Базовый пакет
pip install langchain
# Интеграция с OpenAI-совместимыми API
pip install langchain-openai
# Для работы с документами
pip install langchain-community
# Для векторных хранилищ
pip install faiss-cpu # или faiss-gpu для GPUБазовая настройка с AITUNNEL
python
from langchain_openai import ChatOpenAI
# Настройка LLM через AITUNNEL
llm = ChatOpenAI(
model="gpt-5.2",
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/",
temperature=0.7,
max_tokens=4096
)
# Простой запрос
response = llm.invoke("Привет! Что такое LangChain?")
print(response.content)
# Streaming
for chunk in llm.stream("Расскажи длинную историю"):
print(chunk.content, end="", flush=True)Настройка Embeddings
python
from langchain_openai import OpenAIEmbeddings
# Embeddings для векторного поиска
embeddings = OpenAIEmbeddings(
model="text-embedding-3-small",
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/"
)
# Получение вектора для текста
vector = embeddings.embed_query("Пример текста")
print(f"Размерность вектора: {len(vector)}")
# Batch embeddings
vectors = embeddings.embed_documents([
"Документ 1",
"Документ 2",
"Документ 3"
])RAG (Retrieval Augmented Generation)
RAG позволяет AI отвечать на вопросы, используя ваши документы.
Базовый RAG
python
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# 1. Загрузка документов
loader = TextLoader("./data/document.txt")
documents = loader.load()
# 2. Разбиение на чанки
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
splits = text_splitter.split_documents(documents)
# 3. Создание векторного хранилища
embeddings = OpenAIEmbeddings(
model="text-embedding-3-small",
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/"
)
vectorstore = FAISS.from_documents(splits, embeddings)
# 4. Настройка LLM
llm = ChatOpenAI(
model="gpt-5.2",
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/"
)
# 5. Создание RAG chain
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": 5})
)
# 6. Запрос
answer = qa_chain.invoke({"query": "Какие основные темы в документе?"})
print(answer["result"])Продвинутый RAG с историей
python
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
# Память для хранения истории
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
# Conversational RAG
qa_chain = ConversationalRetrievalChain.from_llm(
llm=llm,
retriever=vectorstore.as_retriever(),
memory=memory
)
# Диалог с памятью
response1 = qa_chain.invoke({"question": "Что такое RAG?"})
response2 = qa_chain.invoke({"question": "А какие есть альтернативы?"})Типы RAG архитектур
LangChain поддерживает различные RAG архитектуры:
| Тип | Описание | Когда использовать |
|---|---|---|
| 2-step RAG | Быстрый поиск + генерация | Простые вопросы |
| Agentic RAG | Агент решает как искать | Сложные запросы |
| Adaptive RAG | Анализ запроса + самокоррекция | Разнородные данные |
| Corrective RAG | Оценка качества + повторный поиск | Критичные приложения |
| Self-RAG | Саморефлексия и оценка | Максимальная точность |
AI Agents
Агенты — это AI-системы, которые сами решают какие действия выполнять.
Базовый агент с инструментами
python
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_core.tools import tool
from langchain_core.prompts import ChatPromptTemplate
# Определение инструментов
@tool
def search_web(query: str) -> str:
"""Поиск информации в интернете"""
# Здесь была бы реальная реализация
return f"Результаты поиска для: {query}"
@tool
def calculate(expression: str) -> str:
"""Вычисление математических выражений"""
try:
result = eval(expression)
return f"Результат: {result}"
except:
return "Ошибка вычисления"
@tool
def get_weather(city: str) -> str:
"""Получение погоды в городе"""
return f"Погода в {city}: +20°C, солнечно"
# Промпт для агента
prompt = ChatPromptTemplate.from_messages([
("system", "Ты полезный ассистент. Используй инструменты для ответа на вопросы."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}")
])
# Создание агента
tools = [search_web, calculate, get_weather]
agent = create_openai_tools_agent(llm, tools, prompt)
# Executor для запуска
executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # Показывать ход мыслей
max_iterations=5
)
# Запуск
result = executor.invoke({
"input": "Какая погода в Москве и сколько будет 25 * 4?"
})
print(result["output"])Мульти-агентные системы
python
from langchain.agents import AgentExecutor
from langgraph.prebuilt import create_react_agent
# Агент-исследователь
researcher = create_react_agent(
llm,
[search_web],
state_modifier="Ты исследователь. Находи информацию."
)
# Агент-писатель
writer = create_react_agent(
llm,
[],
state_modifier="Ты писатель. Создавай контент на основе данных."
)
# Orchestration через LangGraph
# (требует pip install langgraph)Chains (Цепочки)
Chains позволяют комбинировать несколько операций:
python
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# Цепочка: промпт -> LLM -> парсер
chain = (
ChatPromptTemplate.from_template("Переведи на английский: {text}")
| llm
| StrOutputParser()
)
result = chain.invoke({"text": "Привет, мир!"})
print(result) # "Hello, world!"
# Параллельные цепочки
from langchain_core.runnables import RunnableParallel
parallel_chain = RunnableParallel(
translation=ChatPromptTemplate.from_template("Переведи: {text}") | llm,
summary=ChatPromptTemplate.from_template("Резюмируй: {text}") | llm
)
results = parallel_chain.invoke({"text": "Длинный текст..."})Document Loaders
LangChain поддерживает загрузку из множества источников:
python
from langchain_community.document_loaders import (
TextLoader,
PDFLoader,
CSVLoader,
JSONLoader,
WebBaseLoader,
GitLoader
)
# Текстовые файлы
docs = TextLoader("file.txt").load()
# PDF
docs = PDFLoader("document.pdf").load()
# CSV
docs = CSVLoader("data.csv").load()
# Веб-страницы
docs = WebBaseLoader("https://example.com").load()
# Git репозиторий
docs = GitLoader(
clone_url="https://github.com/user/repo",
branch="main"
).load()Память (Memory)
python
from langchain.memory import (
ConversationBufferMemory,
ConversationSummaryMemory,
ConversationBufferWindowMemory
)
# Полная история
memory = ConversationBufferMemory()
# Только последние N сообщений
memory = ConversationBufferWindowMemory(k=10)
# Суммаризация истории
memory = ConversationSummaryMemory(llm=llm)Рекомендуемые модели для LangChain
| Задача | Рекомендуемая модель |
|---|---|
| RAG | gpt-5.2, claude-sonnet-4.5 |
| Agents | gpt-5.2-pro, claude-opus-4.5 |
| Embeddings | text-embedding-3-small |
| Быстрые задачи | gpt-5-mini, gemini-2.5-flash |
| Экономия | deepseek-v3.2 |
Преимущества AITUNNEL для LangChain
- Все модели — GPT, Claude, Gemini через один API
- Работает в России — без VPN
- Embeddings — text-embedding-3-small/large
- Streaming — потоковые ответы
- Оплата в рублях — от 299₽
Ключевые возможности
- RAG (Retrieval Augmented Generation)
- AI Agents
- Chains и Pipelines
- Vector stores
- Document loaders
- Memory системы
- Мульти-агенты
- Streaming
Подключите этот инструмент через AITUNNEL
Все инструменты и модели доступны через единый API. Работает из России, оплата в рублях.
Единый API50+ моделейОплата в рублях
Начать работуРегистрация за 1 минуту