MaxyZand's picture
Upload 15 files
f565efa verified
Raw
History Blame Contribute Delete
2.46 kB
"""
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']}")