diff --git a/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md b/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md new file mode 100644 index 0000000..ed0634c --- /dev/null +++ b/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md @@ -0,0 +1,107 @@ +# Практическое задание №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](https://ollama.ai/) | +| **Qdrant** | 1.10+ (локальный сервер) | `docker run -p 6333:6333 qdrant/qdrant` | +| **Rich** | 13.x | `pip install rich` | + +> ⚠️ Убедитесь, что Ollama запущен и модели `llama3` и `nomic-embed-text` загружены: +> ```bash +> ollama pull llama3 +> ollama pull nomic-embed-text +> ``` + +## Установка зависимостей проекта + +```bash +# В корне репозитория +pip install -r requirements.txt +``` + +Файл `requirements.txt` содержит: + +```text +langchain==0.2.* +langgraph==0.1.* +langchain-ollama==0.1.* +langchain-qdrant==0.1.* +rich==13.* +``` + +> Если вы используете виртуальное окружение, активируйте его перед установкой. + +## Запуск + +### 1. Запустить агента (`agent.py`) + +```bash +python agent.py +``` + +Пример вывода: + +``` +🤖 Agent: Здравствуйте! Чем могу помочь? +User: Какой сегодня прогноз погоды в Москве? +🤖 Agent (tool: weather): ... +``` + +> Агент будет запрашивать подтверждение перед каждым вызовом инструмента. Пользователь отвечает `yes`/`no`. + +### 2. Запустить клиент (`client.py`) + +```bash +python client.py +``` + +Пример взаимодействия: + +``` +Client: Какой сегодня прогноз погоды в Москве? +Agent: ... +``` + +> Скрипт демонстрирует простое API‑взаимодействие с агентом. + +## Пример использования + +1. **Запуск агента** + ```bash + python agent.py + ``` +2. **Ввод запроса** + ``` + User: Расскажи мне о последних новостях в области ИИ. + ``` +3. **Подтверждение вызова инструмента** + Агент предложит вызвать инструмент `news`. Вы отвечаете: + ``` + yes + ``` +4. **Получение ответа** + Агент возвращает результат, а история диалога сохраняется для последующих вопросов. + +> Память позволяет агенту учитывать контекст предыдущих сообщений, а подтверждение повышает контроль над выполнением действий. + +## Дополнительные сведения + +- Для изменения модели или параметров памяти отредактируйте `agent.py`. +- В `client.py` можно подключить собственный веб‑интерфейс или REST API. +- Логи и вывод форматируются библиотекой **Rich** для удобства чтения в терминале. + +--- + +Если возникли вопросы, откройте issue в репозитории. Удачной работы! \ No newline at end of file