Files
mariahberdnikova b68eb03497 revert 96911dcdb9
revert Delete directory 'solutions'
2026-05-27 07:54:07 +00:00

120 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.