Prism / docs /api-spec.md
benroshan's picture
feat: Stage 8 — eval dashboard, mandatory web search, docs update
65cee4e
|
Raw
History Blame Contribute Delete
2.1 kB
# API Specification — Prism
## Base URL
- Local: `http://localhost:8000`
- Production: `https://prism.onrender.com` (set after deploy)
---
## Chat
### POST /api/chat
**Purpose:** Submit a question; returns answer with sources and eval scores.
**Request:**
```json
{ "question": "What was UPI transaction volume in FY24?" }
```
**Response:**
```json
{
"answer": "India processed over 100 billion UPI transactions in FY2024...",
"sources": [
{
"content": "chunk text...",
"source": "npci_upi_report_2024.pdf",
"page": 12,
"similarity_score": 0.87,
"bm25_score": 3.42,
"rrf_score": 0.021,
"rerank_score": 4.91
}
],
"faithfulness": { "score": 4, "reason": "Answer well-grounded in context." },
"retrieval_method": "hybrid+rerank"
}
```
### DELETE /api/chat/memory
**Purpose:** Clear conversation history (new conversation).
**Response:** `{ "status": "cleared" }`
---
## Upload
### POST /api/upload
**Purpose:** Upload a document and re-ingest into the corpus.
**Content-Type:** `multipart/form-data` | Field: `file`
**Allowed types:** `.pdf`, `.txt`, `.csv` | Max size: 20MB
**Response:**
```json
{
"filename": "new_document.pdf",
"chunks_added": 143,
"total_chunks": 990,
"status": "ingested"
}
```
**Error:** 422 if file type unsupported.
---
## Eval
### GET /api/eval/session
**Purpose:** Get per-turn faithfulness log for current session.
**Response:**
```json
[
{
"query": "...",
"answer": "...",
"faithfulness_score": 4,
"reason": "..."
}
]
```
### POST /api/eval/precision
**Purpose:** Run batch Precision@K against ground truth pairs.
**Response:**
```json
{
"mean_precision_at_k": 0.74,
"per_query_results": [...]
}
```
### POST /api/eval/ragas
**Purpose:** Run RAGAS evaluation on last N session QA pairs.
**Request:** `{ "n_pairs": 10 }`
**Response:**
```json
{
"faithfulness": 0.87,
"answer_relevancy": 0.91,
"context_precision": 0.74,
"context_recall": 0.68,
"per_query": [...]
}
```
---
## Health
### GET /health
**Response:** `{ "status": "ok", "version": "2.0.0" }`