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

This commit is contained in:
2026-05-27 15:22:02 +00:00
parent 6fc7aa5736
commit ea0eefc66e
@@ -1,106 +1,107 @@
# Streamрежим AI‑агента # StreamMode AI Agent
## Описание проекта ## 📖 Описание проекта
Этот проект реализует **AI‑агент**, построенный на основе LangGraph и LangChain, который использует модели из Ollama (по умолчанию `llama3`) и векторную базу Qdrant для хранения эмбеддингов. Проект реализует **AI‑агента**, способного выполнять задачи, используя:
Главная особенность – **потоковый вывод** (`stream()`), благодаря которому ответы генерируются токен за токеном и сразу отображаются в консоли, а не после завершения работы. - **LangChain** – фреймворк для построения цепочек и агентов;
- **Ollama** локальный LLM (model `llama3`);
- **Qdrant** – векторная база данных для хранения эмбеддингов;
- **langchainqdrant** интеграция LangChain с Qdrant;
- **langchainollama** обёртка Ollama для LangChain.
## Предварительные требования Главной особенностью является переход от синхронного вызова `.invoke()` к потоковому выводу через `.stream()`. Теперь ответы агента появляются в консоли токен за токеном, что делает взаимодействие более отзывчивым и похожим на ChatGPT.
| Пакет | Версия | Зачем нужен |
|-------|--------|-------------|
| `ollama` | любой актуальный | Запускает локальную модель LLM (llama3) |
| `qdrant` | 1.x+ | Хранит векторные эмбеддинги для быстрых запросов |
| `python>=3.10` | – | Язык выполнения |
> **Важно**: Установите и запустите Ollama и Qdrant перед запуском агента.
## ⚙️ Предварительные требования
- **Python 3.10+**
- **Ollama** (установить можно по инструкции: https://ollama.ai/)
```bash
curl -fsSL https://ollama.com/install.sh | sh
```
После установки скачайте нужную модель:
```bash
ollama pull llama3
```
- **Qdrant**
Можно запустить локально через Docker:
```bash ```bash
# Пример установки Ollama (Linux)
curl -fsSL https://ollama.ai/install.sh | sh
# Запуск модели llama3
ollama run llama3
# Установка Qdrant (Docker)
docker pull qdrant/qdrant
docker run -p 6333:6333 qdrant/qdrant docker run -p 6333:6333 qdrant/qdrant
``` ```
## Установка проекта ## 📦 Установка зависимостей
```bash ```bash
git clone https://github.com/yourname/stream-ai-agent.git
cd stream-ai-agent
pip install -r requirements.txt pip install -r requirements.txt
``` ```
`requirements.txt` содержит все необходимые пакеты, включая `langchain`, `langchain-ollama`, `langchain-qdrant`, `qdrant-client` и др.
`requirements.txt` содержит: ## 🚀 Запуск
```
langchain==0.2.*
langgraph==0.1.*
langchain-ollama==0.1.*
langchain-qdrant==0.1.*
nomic-embed-text==0.3.*
python-dotenv
```
## Запуск
### 1. Инициализация агента (agent.py)
```bash ```bash
# 1. Убедитесь, что Ollama и Qdrant запущены.
# 2. Запустите агента:
python agent.py python agent.py
``` ```
При запуске агент будет ждать ввода команды в консоли, например:
### Пример команды с аргументами (если добавлены CLI‑параметры) ```
> What is the capital of France?
```bash
python agent.py --prompt "Расскажи о последних новостях в области AI"
``` ```
## Пример использования ### 2. Пример использования с потоковым выводом
После запуска вы можете вводить запросы. Ответ будет печататься токен за токеном:
После запуска вы увидите интерактивный ввод:
``` ```
> Какую роль играет Qdrant в работе агента? > Tell me a short story about a robot learning to dance.
Robot: I was built in a factory...
Robot: ...and then I discovered music...
Robot: ...
``` ```
Ответ будет выводиться токен за токеном: ### 3. Остановка
Нажмите `Ctrl+C` или введите команду `exit`.
``` ## 📄 Пример использования кода
Qdrant используется как быстрый
векторный хранилище для эмбеддингов,
что позволяет быстро находить релевантные
тексты и ускорять генерацию ответов.
```
### Пример кода, который можно вставить в `agent.py` (потоковый вывод)
```python ```python
from langchain_ollama import ChatOllama from langchain.agents import create_agent, AgentExecutor
from langchain.tools import tool
from langchain_ollama import OllamaLLM
from langchain_qdrant import QdrantStore
import os
# Инициализация LLM # LLM
llm = ChatOllama(model="llama3") llm = OllamaLLM(model="llama3", temperature=0.7, timeout=60)
# Потоковый вызов # Векторная база (Qdrant)
for chunk in llm.stream(prompt): store = QdrantStore(
print(chunk.content, end="", flush=True) url=os.getenv("QDRANT_URL", "http://localhost:6333"),
print() # Перевод строки после завершения collection_name="my_collection",
embedding_function=OllamaLLM(model="nomic-embed-text")
)
# Инструмент
@tool
def check_wish(wish: str) -> str:
"""Проверка желания на наличие подвоха."""
return f"Wish '{wish}' looks safe."
tools = [check_wish]
# Агент
agent = create_agent(
llm=llm,
tools=tools,
verbose=True
)
executor = AgentExecutor(agent=agent, tools=tools, max_iterations=5)
# Потоковый вывод
for chunk in executor.stream("Will I get a promotion?"):
print(chunk, end="", flush=True)
``` ```
> **Совет**: При работе с LangGraph используйте `AgentExecutor` в режиме `stream=True`, чтобы получать токен за токеном из всех инструментов. ## 📚 Что дальше?
- Добавить более сложные инструменты (запросы к API, работа с файлами и т.д.).
## Вклад - Настроить хранение истории диалога в Qdrant для контекстуального ответа.
- Интегрировать с веб‑интерфейсом или чат‑ботом.
1. Форкните репозиторий.
2. Создайте ветку (`git checkout -b feature/stream-mode`).
3. Сделайте коммит и отправьте PR.
Убедитесь, что тесты проходят: `pytest`.
--- ---
**Автор:** Ваше имя **Happy coding!**
**Дата создания:** 20260527