106 lines
3.7 KiB
Markdown
106 lines
3.7 KiB
Markdown
# 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`.
|
||
|
||
---
|
||
|
||
**Автор:** Ваше имя
|
||
**Дата создания:** 2026‑05‑27 |