readme: add RAG / AI-assistant section
README.md
- `rag` app row in the app table.
- new "دستیار هوش مصنوعی (RAG)" subsection: what /api/ai/ask does now,
the OPENAI_/QDRANT_ keys it needs, how to test it in Swagger, the
stream flag, rag_catalog, and the internal ingest endpoints.
- production-notes bullet updated: /api/ai/ask is real RAG when keys are
set, no longer "stub only".
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
19
README.md
19
README.md
@@ -11,6 +11,7 @@
|
||||
| `content` | پایهها، مباحث، درسها، سوالها، پیشرفت |
|
||||
| `progress` | آمار، لیدربرد، streak |
|
||||
| `ai_tutor` | مکالمات دستیار هوش مصنوعی |
|
||||
| `rag` | لایهی RAG: بازیابی از Qdrant + تولید با GPT، پشتِ `POST /api/ai/ask` |
|
||||
| `subscription` / `payment` / `discount` | پلن، سفارش، تراکنش، کد تخفیف |
|
||||
| `notifications`, `affiliate`, `support`, `family` | امکانات جانبی |
|
||||
| `statuslog` | لاگ عمومی تغییر status، مستقل از بقیهی اپها |
|
||||
@@ -91,6 +92,20 @@ python manage.py createsuperuser # اختیاری، برای /admin
|
||||
python manage.py test # اجرای کل تستسوییت
|
||||
```
|
||||
|
||||
### دستیار هوش مصنوعی (RAG)
|
||||
|
||||
`POST /api/ai/ask` پاسخ را از روی محتوای واقعیِ کتاب میسازد: embedding سوال →
|
||||
جستجوی Qdrant محدود به همان درس/فصل → تولید با GPT. تیکههای استفادهشده در
|
||||
`usedChunks` برمیگردند.
|
||||
|
||||
- نیازمندِ `OPENAI_API_KEY` و `QDRANT_API_KEY` در `.env` (اپ `rag`؛ تنظیماتِ
|
||||
`OPENAI_*` / `RAG_*` در `config/settings.py`). بدونِ کلید، همان پاسخِ stub قبلی.
|
||||
- تست در Swagger: `POST /api/ai/ask` با
|
||||
`{"userQuestion":"...","subject":"ریاضی","grade":"ششم","lessonNumber":2}`.
|
||||
- `"stream": true` پاسخ را بهصورت SSE توکنبهتوکن میفرستد (قراردادِ JSON بدونِ این فلگ دستنخورده).
|
||||
- `python manage.py rag_catalog` فهرستِ زندهی collectionهای Qdrant را نشان میدهد (فقطخواندنی).
|
||||
- افزودنِ محتوای خودمان: `POST /api/rag/ingest/text` و `/api/rag/ingest/pdf` (داخلی، هدرِ `X-Internal-Key`).
|
||||
|
||||
---
|
||||
|
||||
## ۲. راهنمای دیپلوی پروداکشن
|
||||
@@ -183,8 +198,8 @@ curl -i -X POST https://<host>/api/auth/session \
|
||||
- همهی لاگهای ساختاریافتهی درخواست (`method`/`path`/`status`/`duration`/`user`، بدونِ
|
||||
بدنه/هدر/سکرت) روی stdout و — وقتی `LOG_DIR` ست باشه (مثلِ داخلِ Docker) — در
|
||||
`/var/log/django/app.log` نوشته میشن؛ قابلِ مشاهده در Grafana از طریقِ استکِ بالا.
|
||||
- `POST /api/ai/ask` فعلاً پاسخ stub برمیگردونه؛ محلِ اتصالِ مدلِ واقعی
|
||||
`generate_tutor_answer` در `ai_tutor/views.py` است.
|
||||
- `POST /api/ai/ask` با تنظیمِ `OPENAI_API_KEY`/`QDRANT_API_KEY` پاسخِ واقعیِ RAG میدهد
|
||||
(اپ `rag`)؛ بدونِ کلید همان stub. جزئیات: بخشِ «دستیار هوش مصنوعی (RAG)» بالاتر.
|
||||
- ارسالِ OTP از طریقِ کاوهنگار (`KAVENEGAR_API_KEY`) انجام میشه؛ شکستِ ارسال بهجای
|
||||
موفقیتِ ساختگی، خطای صریحِ `503` برمیگردونه.
|
||||
- هر خطای پیشبینینشده (نه فقط خطاهای شناختهشدهی API) همیشه پاسخِ JSON برمیگردونه،
|
||||
|
||||
Reference in New Issue
Block a user