Практическое задание №3 – Память и подтверждение действий
Описание проекта
В этом проекте реализован чат‑бот на основе LangChain + LangGraph с поддержкой:
- Памяти разговора (сохраняется история диалога в памяти
MemorySaver). - Подтверждения каждого вызова инструмента пользователем.
- Взаимодействия с локальными моделями Ollama (
llama3,nomic‑embed-text) и хранением эмбеддингов в Qdrant.
Файлы проекта:
agent.py– основной скрипт, создающий агента и запускающий диалог.client.py– пример клиентского кода для взаимодействия с агентом через API.
Предварительные требования
| Компонент | Версия / Минимальные требования | Как установить |
|---|---|---|
| Python | 3.10+ | python -m venv .venv && source .venv/bin/activate |
| Ollama | Любая версия, поддерживающая модели llama3 и nomic-embed-text |
Скачать Ollama |
| Qdrant | 1.10+ (локальный сервер) | docker run -p 6333:6333 qdrant/qdrant |
| Rich | 13.x | pip install rich |
⚠️ Убедитесь, что Ollama запущен и модели
llama3иnomic-embed-textзагружены:ollama pull llama3 ollama pull nomic-embed-text
Установка зависимостей проекта
# В корне репозитория
pip install -r requirements.txt
Файл requirements.txt содержит:
langchain==0.2.*
langgraph==0.1.*
langchain-ollama==0.1.*
langchain-qdrant==0.1.*
rich==13.*
Если вы используете виртуальное окружение, активируйте его перед установкой.
Запуск
1. Запустить агента (agent.py)
python agent.py
Пример вывода:
🤖 Agent: Здравствуйте! Чем могу помочь?
User: Какой сегодня прогноз погоды в Москве?
🤖 Agent (tool: weather): ...
Агент будет запрашивать подтверждение перед каждым вызовом инструмента. Пользователь отвечает
yes/no.
2. Запустить клиент (client.py)
python client.py
Пример взаимодействия:
Client: Какой сегодня прогноз погоды в Москве?
Agent: ...
Скрипт демонстрирует простое API‑взаимодействие с агентом.
Пример использования
- Запуск агента
python agent.py - Ввод запроса
User: Расскажи мне о последних новостях в области ИИ. - Подтверждение вызова инструмента
Агент предложит вызвать инструментnews. Вы отвечаете:yes - Получение ответа
Агент возвращает результат, а история диалога сохраняется для последующих вопросов.
Память позволяет агенту учитывать контекст предыдущих сообщений, а подтверждение повышает контроль над выполнением действий.
Дополнительные сведения
- Для изменения модели или параметров памяти отредактируйте
agent.py. - В
client.pyможно подключить собственный веб‑интерфейс или REST API. - Логи и вывод форматируются библиотекой Rich для удобства чтения в терминале.
Если возникли вопросы, откройте issue в репозитории. Удачной работы!