Files
T

107 lines
3.9 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.
# StreamMode AI Agent
## 📖 Описание проекта
Проект реализует **AI‑агента**, способного выполнять задачи, используя:
- **LangChain** – фреймворк для построения цепочек и агентов;
- **Ollama** локальный LLM (model `llama3`);
- **Qdrant** – векторная база данных для хранения эмбеддингов;
- **langchainqdrant** интеграция LangChain с Qdrant;
- **langchainollama** обёртка Ollama для LangChain.
Главной особенностью является переход от синхронного вызова `.invoke()` к потоковому выводу через `.stream()`. Теперь ответы агента появляются в консоли токен за токеном, что делает взаимодействие более отзывчивым и похожим на ChatGPT.
## ⚙️ Предварительные требования
- **Python 3.10+**
- **Ollama** (установить можно по инструкции: https://ollama.ai/)
```bash
curl -fsSL https://ollama.com/install.sh | sh
```
После установки скачайте нужную модель:
```bash
ollama pull llama3
```
- **Qdrant**
Можно запустить локально через Docker:
```bash
docker run -p 6333:6333 qdrant/qdrant
```
## 📦 Установка зависимостей
```bash
pip install -r requirements.txt
```
`requirements.txt` содержит все необходимые пакеты, включая `langchain`, `langchain-ollama`, `langchain-qdrant`, `qdrant-client` и др.
## 🚀 Запуск
### 1. Инициализация агента (agent.py)
```bash
python agent.py
```
При запуске агент будет ждать ввода команды в консоли, например:
```
> What is the capital of France?
```
### 2. Пример использования с потоковым выводом
После запуска вы можете вводить запросы. Ответ будет печататься токен за токеном:
```
> 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`.
## 📄 Пример использования кода
```python
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 = OllamaLLM(model="llama3", temperature=0.7, timeout=60)
# Векторная база (Qdrant)
store = QdrantStore(
url=os.getenv("QDRANT_URL", "http://localhost:6333"),
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)
```
## 📚 Что дальше?
- Добавить более сложные инструменты (запросы к API, работа с файлами и т.д.).
- Настроить хранение истории диалога в Qdrant для контекстуального ответа.
- Интегрировать с веб‑интерфейсом или чат‑ботом.
---
**Happy coding!**