Files
T

106 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Stream‑режим AI‑агента
## Описание проекта
Этот проект реализует **AI‑агент**, построенный на основе LangGraph и LangChain, который использует модели из Ollama (по умолчанию `llama3`) и векторную базу Qdrant для хранения эмбеддингов.
Главная особенность – **потоковый вывод** (`stream()`), благодаря которому ответы генерируются токен за токеном и сразу отображаются в консоли, а не после завершения работы.
## Предварительные требования
| Пакет | Версия | Зачем нужен |
|-------|--------|-------------|
| `ollama` | любой актуальный | Запускает локальную модель LLM (llama3) |
| `qdrant` | 1.x+ | Хранит векторные эмбеддинги для быстрых запросов |
| `python>=3.10` | – | Язык выполнения |
> **Важно**: Установите и запустите Ollama и Qdrant перед запуском агента.
```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
```
## Установка проекта
```bash
git clone https://github.com/yourname/stream-ai-agent.git
cd stream-ai-agent
pip install -r requirements.txt
```
`requirements.txt` содержит:
```
langchain==0.2.*
langgraph==0.1.*
langchain-ollama==0.1.*
langchain-qdrant==0.1.*
nomic-embed-text==0.3.*
python-dotenv
```
## Запуск
```bash
# 1. Убедитесь, что Ollama и Qdrant запущены.
# 2. Запустите агента:
python agent.py
```
### Пример команды с аргументами (если добавлены CLI‑параметры)
```bash
python agent.py --prompt "Расскажи о последних новостях в области AI"
```
## Пример использования
После запуска вы увидите интерактивный ввод:
```
> Какую роль играет Qdrant в работе агента?
```
Ответ будет выводиться токен за токеном:
```
Qdrant используется как быстрый
векторный хранилище для эмбеддингов,
что позволяет быстро находить релевантные
тексты и ускорять генерацию ответов.
```
### Пример кода, который можно вставить в `agent.py` (потоковый вывод)
```python
from langchain_ollama import ChatOllama
# Инициализация LLM
llm = ChatOllama(model="llama3")
# Потоковый вызов
for chunk in llm.stream(prompt):
print(chunk.content, end="", flush=True)
print() # Перевод строки после завершения
```
> **Совет**: При работе с LangGraph используйте `AgentExecutor` в режиме `stream=True`, чтобы получать токен за токеном из всех инструментов.
## Вклад
1. Форкните репозиторий.
2. Создайте ветку (`git checkout -b feature/stream-mode`).
3. Сделайте коммит и отправьте PR.
Убедитесь, что тесты проходят: `pytest`.
---
**Автор:** Ваше имя
**Дата создания:** 20260527