# Stream‑режим AI‑агента ## Описание проекта Проект реализует **AI‑агент**, построенный на основе LangGraph и LangChain, который взаимодействует с LLM `llama3` через Ollama и использует эмбеддинги от Nomic. Главная особенность – **потоковый вывод** (`stream`) вместо обычного `.invoke()`. Это позволяет видеть ответ токен за токеном в реальном времени, что особенно полезно при работе с длинными запросами или многократным вызовом инструментов. ## Предварительные требования | Компонент | Версия / Минимальные требования | Как установить | |-----------|---------------------------------|----------------| | **Python** | 3.10+ (рекомендуется 3.11) | `python -m venv .venv && source .venv/bin/activate` | | **Ollama** | Любая версия, поддерживающая `llama3` | [Официальная инструкция](https://ollama.com/download) | | **LLM‑модель** (`llama3`) | Доступна в Ollama | `ollama pull llama3` | | **Qdrant** (необязательно, если используете внешнее хранилище) | Любая версия | `docker run -p 6333:6333 qdrant/qdrant` | > ⚠️ Если вы не планируете хранить состояние в Qdrant, можно использовать встроенный `MemorySaver`. ## Установка ```bash # Клонируйте репозиторий (или скачайте файлы) git clone https://github.com/your-username/stream-ai-agent.git cd stream-ai-agent # Создайте и активируйте виртуальное окружение python -m venv .venv source .venv/bin/activate # Windows: .\.venv\Scripts\activate # Установите зависимости pip install -r requirements.txt ``` `requirements.txt` содержит: ```text langgraph==0.1.* langchain==0.2.* langchain-ollama==0.0.* nomic-embed-text==0.3.* python-dotenv==1.0.* ``` ## Запуск ### 1. Инициализация агента (файл `agent.py`) ```bash # Убедитесь, что переменная окружения OLLAMA_MODEL установлена (по умолчанию "llama3") export OLLAMA_MODEL=llama3 # Linux/macOS set OLLAMA_MODEL=llama3 # Windows python agent.py ``` > Внутри `agent.py` реализован потоковый вывод: > ```python > for chunk in graph.stream(state): > print(chunk, end="", flush=True) > ``` ### 2. Тестирование с примером запроса ```bash # Запускаем скрипт и вводим запрос вручную python agent.py ``` Пример ввода: ``` User: Расскажи мне о последних достижениях в области квантовых вычислений. ``` Вывод будет появляться токен за токеном, пока модель генерирует ответ. ## Пример использования ```python from langgraph.graph import StateGraph, START from langchain_ollama import ChatOllama from nomic_embed_text import NomicEmbedText from langgraph.prebuilt.tool_executor import ToolExecutorNode from langgraph.checkpoint.memory import MemorySaver # Инициализация LLM и эмбеддингов llm = ChatOllama(model=os.getenv("OLLAMA_MODEL", "llama3")) embedder = NomicEmbedText() # Создание графа с потоковым выводом graph = StateGraph() graph.add_node("agent_executor", ToolExecutorNode(llm=llm, tools=[])) graph.set_entry_point(START) graph.set_finish_point("agent_executor") state = {"messages": [HumanMessage(content="Привет!")]} # Потоковый вывод for chunk in graph.stream(state): print(chunk, end="", flush=True) ``` > В реальном проекте вы можете подключить собственные инструменты (API‑вызыватели, базы знаний и т.д.) через `ToolExecutorNode`. ## Лицензия MIT © 2026.