From 14c03fe2c57e73f74fc422e4b98c0066b277a161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Wed, 27 May 2026 07:17:42 +0000 Subject: [PATCH] =?UTF-8?q?Stream=E2=80=91=D1=80=D0=B5=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=20AI=E2=80=91=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 solutions/699cc158d6d3a5544a3ed35b_Stream_режим_AI_агента/README.md diff --git a/solutions/699cc158d6d3a5544a3ed35b_Stream_режим_AI_агента/README.md b/solutions/699cc158d6d3a5544a3ed35b_Stream_режим_AI_агента/README.md new file mode 100644 index 0000000..5dec197 --- /dev/null +++ b/solutions/699cc158d6d3a5544a3ed35b_Stream_режим_AI_агента/README.md @@ -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‑обёртку для GPT‑4o-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. \ No newline at end of file