First_agent_template / verifier.py
Realistvik0's picture
Create verifier.py
389b23b verified
Raw History Blame Contribute Delete
1.87 kB
from research_state import ResearchState
def verify_research(state: ResearchState) -> dict:
results = []
for claim in state.claims:
evidence = state.evidence_for_claim(claim)
if not evidence:
results.append(
{
"claim": claim,
"status": "UNVERIFIED",
"reason": "No evidence was collected.",
"sources": [],
}
)
continue
supporting = [
item for item in evidence
if item.supports_claim is True
]
contradicting = [
item for item in evidence
if item.supports_claim is False
]
if contradicting:
status = "CONFLICTING"
elif supporting:
status = "SUPPORTED"
else:
status = "UNCERTAIN"
results.append(
{
"claim": claim,
"status": status,
"reason": _build_reason(
supporting,
contradicting,
evidence,
),
"sources": [
item.source_url
for item in evidence
],
}
)
return {
"question": state.question,
"claims": results,
"verified": all(
item["status"] == "SUPPORTED"
for item in results
),
}
def _build_reason(supporting, contradicting, evidence):
if contradicting:
return "At least one source contradicts the claim."
if supporting:
return f"{len(supporting)} source(s) support the claim."
return (
f"Evidence was found from {len(evidence)} source(s), "
"but it has not been explicitly classified as supporting."
)