# Агент с RAG‑памятью **Агент** – это небольшое веб‑приложение на FastMCP, которое использует Retrieval‑Augmented Generation (RAG) для ответа на вопросы пользователя. Векторное хранилище реализовано через Qdrant, а генерация текста выполняется моделью OpenAI. --- ## 📦 Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости из requirements.txt pip install -r requirements.txt ``` `requirements.txt` содержит: ```text fastmcp==0.1.2 # лёгкий веб‑фреймворк langchain==0.2.0 # библиотека для LLM и RAG openai==1.3.5 # клиент OpenAI qdrant-client==1.7.0 # клиент Qdrant rich==13.6.0 # красивый вывод в консоль ``` > **Важно**: > - Установите переменную окружения `OPENAI_API_KEY` с вашим ключом OpenAI. > - Если вы используете удалённый сервер Qdrant, задайте `QDRANT_HOST` и `QDRANT_PORT`. --- ## 🚀 Запуск ### 1️⃣ Подготовка данных (опционально) Если у вас ещё нет коллекции `rag_memory`, добавьте документы: ```python from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores.qdrant import Qdrant loader = TextLoader("path/to/your/docs.txt") docs = loader.load() text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) texts = text_splitter.split_documents(docs) embeddings = OpenAIEmbeddings(openai_api_key=os.getenv("OPENAI_API_KEY")) qdrant_store.add_texts(texts, embeddings=embeddings) ``` > Запустите этот скрипт один раз – он создаст коллекцию в Qdrant. ### 2️⃣ Запуск сервера ```bash python solution.py ``` Сервер будет доступен по умолчанию на `http://localhost:8000`. --- ## 📄 API | Метод | Путь | Описание | |-------|------|----------| | `GET /` | Главная страница | Возвращает простое приветствие. | | `POST /ask` | Вопрос к агенту | Принимает JSON `{ "question": "<текст>" }`. Возвращает ответ и список релевантных документов. | ### Пример запроса ```bash curl -X POST http://localhost:8000/ask \ -H "Content-Type: application/json" \ -d '{"question":"Какой сегодня день недели?"}' ``` Ответ: ```json { "answer": "Сегодня четверг.", "documents": [ { "content": "...", "metadata": { ... } }, ... ] } ``` --- ## 🧪 Пример использования в коде ```python import requests question = "Кто написал «Войну и мир»?" response = requests.post( "http://localhost:8000/ask", json={"question": question} ) data = response.json() print("Ответ:", data["answer"]) for doc in data["documents"]: print("-" * 40) print(doc["content"][:200]) # первые 200 символов ``` --- ## 📚 Что дальше? - Добавьте собственные документы в коллекцию Qdrant. - Настройте `temperature` и другие параметры модели OpenAI для более креативных ответов. - Расширьте API, например, добавив авторизацию или хранение истории диалогов. --- **Автор:** *Ваше имя* **Дата:** 2026‑05‑28