Spaces:
Running
Running
| """ | |
| CLI entry point. All the actual pipeline logic (index building, | |
| retrieval, generation, evaluation loop) lives in pipeline_service.py so | |
| it can be shared with api.py — this file just calls it and prints the | |
| result. | |
| Run with: python main.py | |
| """ | |
| from pipeline_service import answer_query | |
| if __name__ == "__main__": | |
| user_query = "What is hallucination and cause?" | |
| result = answer_query(user_query) | |
| print(f"Route: {result['route']} " | |
| f"(intent={result['intent']['intent']}, " | |
| f"confidence={result['intent']['confidence']})") | |
| print(f"\nAttempts: {result['attempts']} Decision: {result['decision']} " | |
| f"Passed: {result['passed']}") | |
| print(f"Metrics: {result['metrics']}") | |
| print(f"Checks: {result['checks']}") | |
| print("\n==============================") | |
| print("Retrieved Context") | |
| print("==============================") | |
| for i, src in enumerate(result["sources"], 1): | |
| print(f"\nDocument {i}: {src}") | |
| print("\n==============================") | |
| print("Final Answer") | |
| print("==============================") | |
| print(result["answer"]) | |
| if not result["passed"]: | |
| print("\n[Note: did not pass all quality thresholds; showing best available answer.]") | |
| print("\n==============================") | |
| print("Cited Answer") | |
| print("==============================") | |
| print(result["cited_answer"]) | |
| print("\n==============================") | |
| print("Hallucination Detection (NLI)") | |
| print("==============================") | |
| hr = result["hallucination_report"] | |
| print(f"Hallucination rate: {hr.get('hallucination_rate')} Flagged: {hr.get('flagged')}") | |
| for r in hr.get("sentence_results", []): | |
| status = "OK" if r["supported"] else "UNSUPPORTED" | |
| print(f" [{status}] ({r['entailment_score']}, source={r['best_source']}) {r['sentence']}") | |
| print("\n==============================") | |
| print("Evidence Verification (LLM)") | |
| print("==============================") | |
| vr = result["verification_report"] | |
| if not vr.get("verifiable"): | |
| print("Could not parse verification output.") | |
| else: | |
| print(f"All claims supported: {vr.get('all_supported')}") | |
| for c in vr.get("claims", []): | |
| status = "OK" if c.get("supported") else "UNSUPPORTED" | |
| print(f" [{status}] {c.get('claim')}") | |
| if c.get("evidence"): | |
| print(f" evidence: {c['evidence']}") | |