Практическое задание №3: Память и подтверждение действий: README.md
This commit is contained in:
+107
@@ -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 в репозитории. Удачной работы!
|
||||
Reference in New Issue
Block a user