From ea0eefc66ea10be0bcf527777f8c778320d56d12 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Wed, 27 May 2026 15:22:02 +0000 Subject: [PATCH] =?UTF-8?q?Stream-=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=20AI-?= =?UTF-8?q?=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 157 +++++++++--------- 1 file changed, 79 insertions(+), 78 deletions(-) diff --git a/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md b/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md index e27108d..2de0981 100644 --- a/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md +++ b/solutions/699cc158d6d3a5544a3ed35b_Stream-режим_AI-агента/README.md @@ -1,106 +1,107 @@ -# Stream‑режим AI‑агента +# Stream‑Mode AI Agent -## Описание проекта -Этот проект реализует **AI‑агент**, построенный на основе LangGraph и LangChain, который использует модели из Ollama (по умолчанию `llama3`) и векторную базу Qdrant для хранения эмбеддингов. -Главная особенность – **потоковый вывод** (`stream()`), благодаря которому ответы генерируются токен за токеном и сразу отображаются в консоли, а не после завершения работы. +## 📖 Описание проекта +Проект реализует **AI‑агента**, способного выполнять задачи, используя: +- **LangChain** – фреймворк для построения цепочек и агентов; +- **Ollama** – локальный LLM (model `llama3`); +- **Qdrant** – векторная база данных для хранения эмбеддингов; +- **langchain‑qdrant** – интеграция LangChain с Qdrant; +- **langchain‑ollama** – обёртка 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 + docker run -p 6333:6333 qdrant/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`, `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 -# 1. Убедитесь, что Ollama и Qdrant запущены. -# 2. Запустите агента: python agent.py ``` - -### Пример команды с аргументами (если добавлены CLI‑параметры) - -```bash -python agent.py --prompt "Расскажи о последних новостях в области AI" +При запуске агент будет ждать ввода команды в консоли, например: +``` +> What is the capital of France? ``` -## Пример использования - -После запуска вы увидите интерактивный ввод: +### 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 -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 = ChatOllama(model="llama3") +# LLM +llm = OllamaLLM(model="llama3", temperature=0.7, timeout=60) -# Потоковый вызов -for chunk in llm.stream(prompt): - print(chunk.content, end="", flush=True) -print() # Перевод строки после завершения +# Векторная база (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) ``` -> **Совет**: При работе с LangGraph используйте `AgentExecutor` в режиме `stream=True`, чтобы получать токен за токеном из всех инструментов. - -## Вклад - -1. Форкните репозиторий. -2. Создайте ветку (`git checkout -b feature/stream-mode`). -3. Сделайте коммит и отправьте PR. - -Убедитесь, что тесты проходят: `pytest`. +## 📚 Что дальше? +- Добавить более сложные инструменты (запросы к API, работа с файлами и т.д.). +- Настроить хранение истории диалога в Qdrant для контекстуального ответа. +- Интегрировать с веб‑интерфейсом или чат‑ботом. --- -**Автор:** Ваше имя -**Дата создания:** 2026‑05‑27 \ No newline at end of file +**Happy coding!** \ No newline at end of file