Интеграция LangChain для AI-пайплайнов в мобильном приложении
LangChain — это не магия, это оркестратор. Он связывает компоненты AI-пайплайна: LLM-вызовы, инструменты, память, векторные хранилища — в цепочки (chains) и агентов. Мобильное приложение с LangChain не запускает Python на устройстве: всё это работает на backend, приложение получает готовые ответы через API.
Где LangChain нужен, а где избыточен
LangChain решает задачи, которые сложно строить вручную:
- RAG (Retrieval-Augmented Generation): поиск по документам + генерация ответа
- Multi-step агенты: ассистент использует инструменты (калькулятор, поиск, API) для ответа
- Conversation memory с персистентностью между сессиями
- Routing: разные запросы направляются к разным цепочкам
Для простого чата с одним системным промптом LangChain — лишний слой абстракции. Прямой вызов OpenAI SDK быстрее и проще.
RAG-пайплайн: разбор на компонентах
Сценарий: мобильный ассистент отвечает на вопросы по внутренней документации компании (PDF, Notion-страницы).
# Backend — FastAPI + LangChain
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import PGVector
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.3)
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
# pgvector — хранилище документов
vectorstore = PGVector(
embeddings=embeddings,
collection_name="company_docs",
connection=DATABASE_URL,
)
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})
# Промпт с контекстом из документов
prompt = ChatPromptTemplate.from_messages([
("system", "Ты ассистент компании. Отвечай только на основе предоставленного контекста.\n\nКонтекст:\n{context}"),
("human", "{input}")
])
chain = create_retrieval_chain(retriever, create_stuff_documents_chain(llm, prompt))
@app.post("/api/chat")
async def chat(request: ChatRequest):
result = await chain.ainvoke({"input": request.message})
return {"answer": result["answer"]}
Мобильное приложение делает обычный POST-запрос. Вся сложность RAG скрыта на сервере.
Conversation Memory с LangChain
Память между сессиями — частая потребность. LangChain предлагает несколько типов:
| Тип памяти | Принцип | Когда использовать |
|---|---|---|
ConversationBufferMemory |
Вся история | Короткие сессии |
ConversationSummaryMemory |
Саммари через LLM | Длинные сессии |
ConversationBufferWindowMemory |
Последние K сообщений | Стандартный выбор |
VectorStoreRetrieverMemory |
Семантический поиск по истории | Долгосрочная память |
Персистентность истории — через PostgresChatMessageHistory или RedisChatMessageHistory. Session ID передаётся с мобильного клиента, бэкенд подгружает нужную историю.
Агенты с инструментами
LangChain-агент с инструментами позволяет ассистенту выполнять реальные действия: проверить баланс счёта, создать задачу, найти ближайший магазин через геолокацию API.
from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain.tools import tool
@tool
def get_account_balance(account_id: str) -> str:
"""Возвращает текущий баланс счёта пользователя."""
balance = database.get_balance(account_id)
return f"Баланс счёта {account_id}: {balance} USD"
@tool
def create_payment(amount: float, recipient: str) -> str:
"""Создаёт платёж. Требует подтверждения."""
payment_id = payments.create(amount, recipient, status="pending")
return f"Платёж {payment_id} создан, ожидает подтверждения."
agent = create_openai_functions_agent(llm, [get_account_balance, create_payment], prompt)
executor = AgentExecutor(agent=agent, tools=[get_account_balance, create_payment], verbose=True)
Критично: деструктивные операции (платежи, удаление) должны проходить через explicit confirmation на мобильном UI, а не автоматически выполняться агентом.
Мониторинг через LangSmith
LangChain нативно интегрируется с LangSmith — платформой для трейсинга цепочек. Каждый вызов chain видно по шагам: сколько токенов потратил retriever, сколько — generation, где возникли задержки. Включается через переменные окружения, без изменений кода.
Процесс работы
Анализ требований к пайплайну → выбор компонентов (chain / agent / RAG) → разработка и тестирование на backend → API для мобильного приложения → нагрузочное тестирование и оптимизация latency → мониторинг через LangSmith.
Ориентиры по срокам
Простой RAG-пайплайн с pgvector — 3–5 дней. Многошаговый агент с кастомными инструментами — 1–2 недели. Полная система с памятью, мониторингом и fallback — 2–4 недели.







