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:

{ "question": "What was UPI transaction volume in FY24?" }

Response:

{
  "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:

{
  "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:

[
  {
    "query": "...",
    "answer": "...",
    "faithfulness_score": 4,
    "reason": "..."
  }
]

POST /api/eval/precision

Purpose: Run batch Precision@K against ground truth pairs. Response:

{
  "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:

{
  "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" }