Files
task-6a02e23d-agent-s-rag-p…/README.md
T

108 lines
3.8 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.
# Агент с RAG‑памятью
## Описание проекта
Проект реализует **RAG‑агента** (RetrievalAugmented Generation) на базе FastAPI и LangChain, который хранит документы векторно в Qdrant и использует OpenAI GPT‑4 для генерации ответов.
- Векторизатор: `OpenAIEmbeddings`
- Хранилище: `Qdrant` (локальный сервер или облачный)
- Генерация: `ChatOpenAI` (GPT‑4, температура = 0)
API предоставляет один эндпоинт `/ask`, принимающий вопрос и возвращающий ответ, сформированный на основе найденных векторных документов.
## Установка зависимостей
```bash
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости из requirements.txt
pip install -r requirements.txt
```
`requirements.txt`
```text
fastapi
uvicorn[standard]
pydantic
langchain
openai
qdrant-client
rich
```
> **Важно**
> 1. Запустите сервер Qdrant (локально: `docker run -p 6333:6333 qdrant/qdrant`, облачно получите URL).
> 2. Установите переменную окружения `OPENAI_API_KEY` с вашим ключом OpenAI.
## Конфигурация
```bash
export QDRANT_URL="http://localhost:6333" # адрес сервера Qdrant (по умолчанию)
export QDRANT_COLLECTION="rag_memory" # имя коллекции в Qdrant
export OPENAI_API_KEY="sk-..." # ваш ключ OpenAI
```
## Запуск приложения
```bash
uvicorn solution:app --reload
```
После запуска приложение будет доступно по адресу `http://127.0.0.1:8000`.
Swagger UI можно открыть в браузере по `/docs`.
## Эндпоинты
| Метод | Путь | Описание |
|-------|------|----------|
| POST | /ask | Принимает JSON с полем `question` (строка) и возвращает ответ GPT‑4. |
### Пример запроса
```bash
curl -X POST "http://127.0.0.1:8000/ask" \
-H "Content-Type: application/json" \
-d '{"question":"Какой у меня возраст?"}'
```
### Ожидаемый ответ
```json
{
"answer": "Ваш возраст составляет 30 лет."
}
```
## Как добавить документы в память
Для того чтобы агент мог отвечать на вопросы, необходимо загрузить документы в Qdrant. Это можно сделать вручную через API Qdrant или написать скрипт:
```python
from langchain.document_loaders import TextLoader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.qdrant import Qdrant
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
vectorstore = Qdrant(
client=None,
collection_name="rag_memory",
embeddings=embeddings,
url="http://localhost:6333"
)
loader = TextLoader("path/to/your/document.txt")
docs = loader.load()
vectorstore.add_documents(docs)
```
После добавления документов агент сможет использовать их при генерации ответов.
## Пример использования в коде
```python
import requests
response = requests.post(
"http://127.0.0.1:8000/ask",
json={"question": "Что такое RAG?"}
)
print(response.json()["answer"])
```
---
**Автор:** [Ваше имя]
**Дата:** 20260528