Stream‑режим AI‑агента: README.md

This commit is contained in:
2026-05-27 07:17:42 +00:00
parent ecf3a0f3e3
commit 14c03fe2c5
@@ -0,0 +1,120 @@
# Stream‑режим AI‑агента
**Stream‑режим AI‑агента** – проект, демонстрирующий работу LangGraph‑агента в режиме потоковой генерации ответов.
В отличие от обычного вызова `invoke()`, который возвращает результат только после завершения работы, здесь используется `stream()` и вывод токен за токеном прямо в консоль.
---
## 📦 Установка зависимостей
```bash
# 1️⃣ Клонируйте репозиторий
git clone https://github.com/your-username/stream-agent.git
cd stream-agent
# 2️⃣ Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# 3️⃣ Установите зависимости из requirements.txt
pip install -r requirements.txt
```
`requirements.txt` содержит:
```text
langchain-core>=0.2.0
langgraph>=0.1.0
langchain-community>=0.2.0
tavily-python>=0.1.0
openai>=1.0.0
python-dotenv>=1.0.0 # для загрузки переменных окружения
```
> **Важно**:
> - Установите ключ OpenAI в переменную окружения `OPENAI_API_KEY`.
> - Если используете Tavily, добавьте `TAVILY_API_KEY` (необязательно, если вы не планируете использовать поиск).
```bash
export OPENAI_API_KEY="sk-..."
# export TAVILY_API_KEY="..." # при необходимости
```
---
## 🚀 Запуск
### 1️⃣ Основной скрипт `stream_agent.py`
```bash
python stream_agent.py
```
Скрипт автоматически:
1. Создаёт LLM‑обёртку для GPT4o-mini.
2. Инициализирует инструмент поиска Tavily.
3. Формирует LangGraph‑агента и запускает его в режиме `stream()`.
4. Выводит токены ответа по мере их генерации, а также события об использовании инструментов.
### 2️⃣ Тестовый скрипт (если есть)
Если вы добавили файл `test_stream_agent.py`, запустите:
```bash
pytest test_stream_agent.py
```
---
## 📄 Пример использования
```python
# stream_agent.py
import os
from langchain_community.tools.tavily_search import TavilySearchResults
from langgraph.prebuilt import create_agent_executor
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
llm = client.chat.completions.create
search_tool = TavilySearchResults(max_results=3)
agent = create_agent_executor(
llm=llm,
tools=[search_tool],
agent_type="openai-functions",
)
# Запускаем в режиме стрима
stream = agent.stream(
{"messages": [{"role": "human", "content": "Расскажи о последних новостях по искусственному интеллекту"}]},
stream_mode=["messages", "updates"],
)
for chunk_type, data in stream:
if chunk_type == "messages":
print(data["content"], end="", flush=True)
elif chunk_type == "updates":
# Можно логировать события использования инструментов
pass
print("\n--- Конец ответа ---")
```
При запуске вы увидите вывод токен за токеном, а также сообщения о вызове инструмента поиска.
---
## 📚 Что дальше?
- **Добавить обработку ошибок**: если LLM не отвечает или инструмент падает.
- **Интегрировать с UI**: например, в Streamlit для веб‑интерфейса.
- **Расширить набор инструментов**: добавить поиск в Wikipedia, генерацию изображений и т.д.
---
## 📄 Лицензия
MIT © 2026.