Обучение и инструменты 20.11.2025 1,981 просмотров

LangChain для начинающих: первый ИИ-агент с памятью за 1 вечер

#LangChain #начинающие #ИИ-агент #память #Python #tutorial
Статья на тему: LangChain для начинающих: первый ИИ-агент с памятью за 1 вечер

Введение

Для многих разработчиков первое знакомство с большими языковыми моделями (LLM), такими как ChatGPT или Claude, ограничивается отправкой простых текстовых запросов через API и получением ответов. Однако, когда вы пытаетесь создать что-то более сложное — например, бота техподдержки, который должен помнить контекст диалога недельной давности, или ассистента, способного читать ваши локальные PDF-документы — базового API становится недостаточно. Вам приходится писать сотни строк шаблонного кода (boilerplate) на Python просто для того, чтобы склеить все эти куски воедино.

Именно эту боль решает LangChain — самый популярный open-source фреймворк для разработки приложений на базе ИИ. В этой статье мы пройдем путь от абсолютного новичка до создания вашего первого осмысленного ИИ-агента с долгосрочной памятью всего за один вечер. Мы разберем базовые концепции фреймворка, поймем, почему он стал стандартом индустрии, и напишем реальный, работающий код.

Что такое LangChain и из чего он состоит?

LangChain можно сравнить с конструктором LEGO для искусственного интеллекта. Вместо того чтобы писать логику взаимодействия с каждой нейросетью или базой данных с нуля, вы берете готовые "кубики" (модули) и соединяете их в нужной последовательности. Архитектура фреймворка строится вокруг нескольких ключевых компонентов:

  • Models (Модели): Универсальный интерфейс для подключения любых LLM. Сегодня вы можете использовать OpenAI, а завтра, изменив всего одну строчку кода, переключиться на локальную модель через Ollama или на Anthropic Claude.
  • Prompts (Промпты): Шаблонизаторы запросов. Позволяют динамически подставлять переменные во входящий текст, управляя поведением нейросети без жесткого хардкода.
  • Chains (Цепочки): Главный элемент классического LangChain. Они связывают промпт, модель и парсер ответа в единый конвейер. Данные перетекают от одного звена к другому.
  • Memory (Память): То, ради чего многие и приходят во фреймворк. Модули памяти позволяют внедрять историю предыдущих сообщений в текущий контекст запроса.
  • Agents (Агенты) и Tools (Инструменты): Вишенка на торте. Агенты — это системы, которые используют LLM для принятия решений о том, какие действия нужно предпринять. Агенту дается набор инструментов (поиск в Google, калькулятор, запрос к SQL-базе), и он сам выбирает, что использовать для ответа на вопрос пользователя.

Проблема контекста: Зачем агенту нужна память?

Важно понимать фундаментальное ограничение всех современных LLM — они stateless (не имеют состояния). Если вы отправили запрос "Привет, меня зовут Даниил", модель ответит "Привет, Даниил". Но если ваш следующий запрос будет "Как меня зовут?", модель ответит: "К сожалению, вы не назвали своего имени". API нейросетей не запоминает предыдущие вызовы.

Чтобы бот мог вести диалог, вы, как разработчик, обязаны каждый раз отправлять ему весь контекст предыдущей беседы вместе с новым вопросом. Если беседа длинная, вы быстро упретесь в лимит токенов (контекстное окно), и запрос станет слишком дорогим.

LangChain элегантно решает эту проблему через встроенные классы памяти. Например, ConversationSummaryMemory не просто хранит всю историю сообщений, а периодически просит саму LLM сделать краткую выжимку (саммари) предыдущей беседы. Таким образом, даже после 100 сообщений, контекст агента остается компактным: "Пользователь Даниил, любит Python, пишет бота для Telegram".

Пишем код: Ваш первый агент с памятью

Давайте перейдем к практике. Вам потребуется Python версии 3.9+ и ключ OpenAI API. Установите базовые библиотеки через консоль: pip install langchain langchain-openai.

Ниже приведен минимальный рабочий код для создания разговорного бота с памятью:


from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferWindowMemory
from langchain.chains import ConversationChain

# 1. Инициализируем модель (укажите ваш OPENAI_API_KEY в переменных окружения)
llm = ChatOpenAI(temperature=0.7, model="gpt-4o-mini")

# 2. Настраиваем память. 
# BufferWindowMemory хранит только k последних взаимодействий (вопрос-ответ), 
# чтобы не перегружать контекст.
memory = ConversationBufferWindowMemory(k=5)

# 3. Собираем всё в единую цепочку
conversation = ConversationChain(
    llm=llm, 
    memory=memory,
    verbose=True # Удобно для отладки: вы увидите, что именно отправляется под капотом
)

# 4. Тестируем диалог
reply1 = conversation.predict(input="Привет! Я пишу статью про ИИ. Меня зовут Алекс.")
print("AI:", reply1)

reply2 = conversation.predict(input="Подскажи 3 крутые темы для моего блога.")
print("AI:", reply2)

# Проверяем память!
reply3 = conversation.predict(input="Кстати, напомни, как меня зовут?")
print("AI:", reply3) # Бот ответит: "Тебя зовут Алекс."
        

От цепочек к агентам: Добавляем инструменты

Простой разговорный бот — это отлично, но что если нам нужно, чтобы он умел узнавать погоду? Обычная LLM этого не сделает, так как ее знания ограничены датой обучения. Здесь нам нужны Агенты.

В LangChain вы можете импортировать утилиту поиска, например Tavily Search или DuckDuckGo, обернуть её в объект Tool и передать вашему агенту.

За кулисами происходит следующая магия (паттерн ReAct — Reason and Act):

  1. Пользователь спрашивает: "Какая сейчас погода в Дубае?"
  2. LLM "думает": "Я не знаю текущую погоду. У меня есть инструмент 'Web_Search'. Я должна использовать его с запросом 'погода Дубай сейчас'."
  3. LangChain выполняет Python-функцию поиска в интернете.
  4. LLM получает результат 검색 ("+32, солнечно"), анализирует его и формирует красивый финальный ответ для пользователя.

Заключение и следующий шаг

Разработка ИИ-агентов больше не является прерогативой исследовательских лабораторий. Благодаря LangChain, порог входа снизился до базовых знаний Python. За один вечер вы вполне способны написать бота, который не только поддерживает осмысленную беседу, опираясь на модуль памяти, но и способен "ходить" в интернет или делать запросы в вашу базу данных.

Конечно, базовый LangChain — это лишь верхушка айсберга. Когда ваши агенты станут сложнее — с ветвлениями, циклами и необходимостью строгого контроля состояния — вам предстоит познакомиться с LangGraph (о котором мы писали в предыдущих статьях). Но именно первый простой агент на цепочках (Chains), написанный своими руками, дает то самое понимание архитектуры LLM-приложений, необходимое для профессионального роста в 2025 году.

Полезные материалы по теме