|
Download README.md from Angshul/FGAO-API: direct link, hf CLI and curl.
- Browser
- Download file 3.26 kB
-
https://huggingface.co/spaces/Angshul/FGAO-API/resolve/main/README.md
- Command line
-
hf download hf://spaces/Angshul/FGAO-API/README.md
-
curl -L -o README.md https://huggingface.co/spaces/Angshul/FGAO-API/resolve/main/README.md
3.26 kB
| title: FGAO API | |
| emoji: 🧭 | |
| colorFrom: indigo | |
| colorTo: gray | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| short_description: HTTP API for training-free FGAO orchestration of RAG | |
| # FGAO API | |
| FGAO (Feedback-Greedy Agentic Orchestration) is a **retrieval-augmented question-answering API**. | |
| ## What it does | |
| For each question, FGAO decides step by step which retrieval and LLM operations to run: | |
| - **Sources:** which source to query, and how deep to search it. | |
| - **Grading:** whether to grade the passages first. | |
| - **Fallback:** when to fall back to a second source. | |
| - **Checking:** when to check the answer against the passage it came from. | |
| - **Abstaining:** when to stop and give no answer. | |
| It returns an answer only if that answer is **grounded** in a retrieved passage and **passed a support check**; otherwise it returns `answer: null`. Every response includes the decision trace. | |
| ## Why it is supposed to be better | |
| - **No LLM decides the control flow.** Each step is chosen by an explicit score: predicted progress on checkable goals, minus cost, plus a one-step lookahead. Decisions are cheap, deterministic and inspectable. A prompt cannot talk the pipeline out of verifying. | |
| - **Feedback within the question.** When an operation fails, FGAO's estimate for it and for similar operations drops, so it escalates instead of repeating itself. Fixed pipelines such as CRAG and Self-RAG hard-code those rules. | |
| - **Budget-aware.** Each operation has a cost. FGAO stops when nothing left is worth its cost, rather than running a fixed sequence. | |
| - **Abstains when unsure.** An answer that is not grounded and supported is never returned. | |
| - **Training-free.** There are no learned weights, so any LLM and any retriever can be swapped in. | |
| ## How to use | |
| 1. Add a Space secret `HF_TOKEN` (Settings → Variables and secrets). The LLM is called through Hugging Face Inference Providers; change `model` in `fgao.yaml` to use another model. | |
| 2. Optionally add `FGAO_API_KEYS=key1,key2` to require `Authorization: Bearer <key>`. | |
| Ask with your own passages: | |
| ```bash | |
| curl -X POST https://<space-host>/v1/answer -H "Content-Type: application/json" -d '{ | |
| "question": "What is the capital of Peru?", | |
| "documents": ["Lima is the capital of Peru.", {"title": "Chile", "text": "Santiago is the capital of Chile."}], | |
| "trace": false | |
| }' | |
| ``` | |
| To ask over the built-in corpus instead (`data/kb.jsonl`, one `{"text", "title", "id"}` per line; replace it with your own), omit `documents`. | |
| From Python: | |
| ```python | |
| import requests | |
| r = requests.post("https://<space-host>/v1/answer", json={"question": "...", "documents": [...]}).json() | |
| r["answer"], r["support_passage"], r["trace"] | |
| ``` | |
| | endpoint | | | |
| |---|---| | |
| | `POST /v1/answer` | `question`, plus optional `documents`, `web_documents`, `budget`, `trace` | | |
| | `POST /v1/answer/stream` | the same, as Server-Sent Events: one `step` per decision, then `result` | | |
| | `POST /v1/batch` | `questions: [...]`, plus optional `documents` | | |
| | `GET /v1/info`, `/health`, `/metrics`, `/docs` | configuration, health, Prometheus metrics, interactive API docs | | |
| The `<space-host>` is shown under "Embed this Space" → "Direct URL", for example `angshul-fgao-api.hf.space`. | |
| Library and source: https://github.com/AngshulMajumdar/FGAO | |