diff --git a/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md b/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md new file mode 100644 index 0000000..de34029 --- /dev/null +++ b/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md @@ -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. \ No newline at end of file