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

This commit is contained in:
2026-05-27 12:30:17 +00:00
parent b55d22b7d8
commit 5db81fb2ee
@@ -0,0 +1,107 @@
# 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.