Files
dz/solutions/699cc158d6d3a5544a3ed35b_Stream_режим_AI_агента
mariahberdnikova b68eb03497 revert 96911dcdb9
revert Delete directory 'solutions'
2026-05-27 07:54:07 +00:00
..
2026-05-27 07:54:07 +00:00
2026-05-27 07:54:07 +00:00
2026-05-27 07:54:07 +00:00

Stream‑режим AI‑агента

Stream‑режим AI‑агента – проект, демонстрирующий работу LangGraph‑агента в режиме потоковой генерации ответов.
В отличие от обычного вызова invoke(), который возвращает результат только после завершения работы, здесь используется stream() и вывод токен за токеном прямо в консоль.


📦 Установка зависимостей

# 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 содержит:

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 (необязательно, если вы не планируете использовать поиск).
export OPENAI_API_KEY="sk-..."
# export TAVILY_API_KEY="..."   # при необходимости

🚀 Запуск

1️⃣ Основной скрипт stream_agent.py

python stream_agent.py

Скрипт автоматически:

  1. Создаёт LLM‑обёртку для GPT4o-mini.
  2. Инициализирует инструмент поиска Tavily.
  3. Формирует LangGraph‑агента и запускает его в режиме stream().
  4. Выводит токены ответа по мере их генерации, а также события об использовании инструментов.

2️⃣ Тестовый скрипт (если есть)

Если вы добавили файл test_stream_agent.py, запустите:

pytest test_stream_agent.py

📄 Пример использования

# 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.