LangChain: как построить AI-приложение с памятью, инструментами и цепочками

LangChain: как построить AI-приложение с памятью, инструментами и цепочками

Большие языковые модели (LLM) стали основой современной разработки. Но простой запрос к модели — это ещё не приложение. Настоящие LLM-системы включают цепочки, память, подключение к API, размышления и даже действия.

Для таких задач был создан LangChain — фреймворк, который объединяет модели, данные, инструменты и цепочки в единое целое.

В этой статье — подробный разбор возможностей LangChain, установка, и множество примеров кода.

🔧 Установка LangChain

Минимальная установка:

pip install langchain

Поддержка OpenAI:

pip install openai

Для локальных моделей через Ollama

pip install langchain-ollama

Для RAG:

pip install langchain-community chromadb

🤖 Первое приложение на LangChain

from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage model = ChatOpenAI( api_key="YOUR_KEY", model="gpt-4o-mini" ) response = model([HumanMessage(content="Что такое LangChain?")]) print(response.content)

🔗 Chain — фундамент LangChain

Цепочка (Chain) — последовательность шагов. Это позволяет контролировать процесс взаимодействия с моделью.

📌 Пример: цепочка преобразования текста

from langchain.chains import SequentialChain from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage llm = ChatOpenAI(api_key="YOUR_KEY", model="gpt-4o-mini") def clean_text(text: str) -> str: return text.replace("\n", " ").strip() def summarize(text: str) -> str: msg = [HumanMessage(content=f"Кратко перескажи: {text}")] return llm(msg).content chain = SequentialChain(chains=[clean_text, summarize]) text = """ LangChain — это инструмент, который позволяет управлять цепочками взаимодействия с LLM, добавлять память, векторные базы и API-инструменты. """ print(chain.run(text))

🧠 Memory — память для диалогов

LangChain поддерживает:

  • краткосрочную память
  • долговременную память
  • векторные хранилища

Пример:

from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain from langchain.chat_models import ChatOpenAI memory = ConversationBufferMemory() conversation = ConversationChain( llm=ChatOpenAI(api_key="KEY", model="gpt-4o-mini"), memory=memory ) print(conversation.predict(input="Привет, я Артём.")) print(conversation.predict(input="Как меня зовут?"))

Модель будет помнить имя без повторного ввода.

📚 RAG — поиск по документам + LLM

LLM сам по себе не знает вашей базы знаний. RAG (Retrieval Augmented Generation) решает это.

from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI # Индексация texts = [ "Polars — очень быстрая библиотека DataFrame.", "LangChain — фреймворк для создания LLM-агентов." ] db = Chroma.from_texts(texts, embedding=OpenAIEmbeddings(api_key="KEY")) qa = RetrievalQA.from_chain_type( llm=ChatOpenAI(api_key="KEY", model="gpt-4o-mini"), retriever=db.as_retriever() ) print(qa("Что такое LangChain?"))

⚒ Инструменты: модель может работать с API

Пример — модель может выполнить Python код:

from langchain.agents import load_tools, initialize_agent, AgentType from langchain.chat_models import ChatOpenAI llm = ChatOpenAI(api_key="KEY", model="gpt-4o-mini") tools = load_tools(["python_repl"]) agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, ) print(agent.run("Вычисли 2 * 3 * 7"))

Модель сможет использовать Python как инструмент.

🧩 Подключение локальной модели (Ollama)

from langchain_ollama import ChatOllama model = ChatOllama(model="llama3.1") result = model.invoke("Привет! Объясни пользу LangChain.") print(result)

🧑‍💻 Создание полноценного агента

from langchain.agents import initialize_agent, load_tools, AgentType from langchain.chat_models import ChatOpenAI tools = load_tools(["serpapi", "python_repl"]) llm = ChatOpenAI(api_key="KEY", model="gpt-4o-mini") agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION ) agent.run("Найди курс доллара и вычисли его возведение в квадрат.")

Агент:

  • ищет информацию
  • обрабатывает данные
  • выполняет код

🎯 Итог статьи по LangChain

LangChain — это не просто библиотека для работы с LLM. Это полноценный фреймворк, который позволяет создавать интеллектуальные системы:

  • чат-боты
  • агенты
  • RAG-системы
  • интеграции с API
  • инструменты автоматизации

LangChain превращает LLM в инструмент, способный выполнять реальные задачи.

🙌 Если статья была полезной
Буду рад лайку и комментариям — это помогает продвигать материалы и подсказывает, какие темы разобрать в следующих публикациях.

1
Начать дискуссию