Stream‑режим AI‑агента
Описание проекта
Этот проект реализует AI‑агент, построенный на основе LangGraph и LangChain, который использует модели из Ollama (по умолчанию llama3) и векторную базу Qdrant для хранения эмбеддингов.
Главная особенность – потоковый вывод (stream()), благодаря которому ответы генерируются токен за токеном и сразу отображаются в консоли, а не после завершения работы.
Предварительные требования
| Пакет | Версия | Зачем нужен |
|---|---|---|
ollama |
любой актуальный | Запускает локальную модель LLM (llama3) |
qdrant |
1.x+ | Хранит векторные эмбеддинги для быстрых запросов |
python>=3.10 |
– | Язык выполнения |
Важно: Установите и запустите Ollama и Qdrant перед запуском агента.
# Пример установки 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
Установка проекта
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
Запуск
# 1. Убедитесь, что Ollama и Qdrant запущены.
# 2. Запустите агента:
python agent.py
Пример команды с аргументами (если добавлены CLI‑параметры)
python agent.py --prompt "Расскажи о последних новостях в области AI"
Пример использования
После запуска вы увидите интерактивный ввод:
> Какую роль играет Qdrant в работе агента?
Ответ будет выводиться токен за токеном:
Qdrant используется как быстрый
векторный хранилище для эмбеддингов,
что позволяет быстро находить релевантные
тексты и ускорять генерацию ответов.
Пример кода, который можно вставить в agent.py (потоковый вывод)
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, чтобы получать токен за токеном из всех инструментов.
Вклад
- Форкните репозиторий.
- Создайте ветку (
git checkout -b feature/stream-mode). - Сделайте коммит и отправьте PR.
Убедитесь, что тесты проходят: pytest.
Автор: Ваше имя
Дата создания: 2026‑05‑27