diff --git a/README.md b/README.md index 9309547..8f0b734 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,40 @@ # Практическое задание №3: Память и подтверждение действий -## Описание +Минимальный пример AI-agent с потоковой выдачей ответа. -Данное задание демонстрирует работу агента на LangGraph с включенной памятью, паузой перед вызовом инструмента и подтверждением пользователем. Агент использует OpenAI модели, библиотеку `rich` для красивого вывода и `MemorySaver` для сохранения истории. +## Что внутри + +- `stream_agent.py` - агент с синхронным и потоковым режимом. +- `test_stream_agent.py` - быстрые проверки stream-логики без внешнего API. +- `requirements.txt` - зависимости для запуска. ## Установка ```bash -# Клонируйте репозиторий -git clone -cd - -# Создайте и активируйте виртуальное окружение (необязательно) -python -m venv venv -source venv/bin/activate # Windows: venv\Scripts\activate - -# Установите зависимости +python -m venv .venv +source .venv/bin/activate pip install -r requirements.txt - -# Установите переменную окружения с ключом OpenAI -export OPENAI_API_KEY=your_key_here # Windows: set OPENAI_API_KEY=your_key_here ``` ## Запуск +Оффлайн-режим без ключей: + ```bash -python agent.py +python stream_agent.py "Объясни, что такое stream режим" ``` -Вы будете видеть диалог с агентом. При каждом вызове инструмента агент попросит подтвердить действие. Нажмите `y` для выполнения или `n` для отмены. +С OpenAI-compatible API: -## Пример - -``` -Вы: Какая погода в Казани сегодня? - - --- --- --- - -get_price({'city': 'Казань', 'date': 'сегодня'}) -Агент хочет вызвать утилиту get_price({'city': 'Казань', 'date': 'сегодня'}) -Разрешить? (Y/n): y - -Казань сегодня: 25°C, облачно +```bash +export OPENAI_API_KEY=your_key +export OPENAI_BASE_URL=https://openrouter.ai/api/v1 +export OPENAI_MODEL=openai/gpt-oss-20b:free +python stream_agent.py "Напиши короткий план проекта" ``` -## Технологии -- Python 3.11+ -- LangGraph -- OpenAI LLM -- Rich -- MemorySaver -- LangGraph tools +## Тесты + +```bash +python -m pytest +```