Skip to main content
Loading navigation
Back to prompt library

Report Refinement and Fact-Checking

Linked challenge: Collaborative Technical Research Crew

Prompt source

testing37 lines9 sectionsNo variables1 code block
After the initial report generation, introduce a 'Reviewer' task (or modify an existing agent's role) to perform fact-checking and refinement. This task should utilize `Gemini 2.5 Pro` to cross-reference key statements from the generated report against known facts or by triggering additional targeted `WebSearchTool` queries. The goal is to ensure factual accuracy and improve the report's quality, directly addressing the `FactChecking` evaluation task. Orchestrate this refinement step within your Prefect flow.

```python
# ... (previous agent, tool, and task definitions)

# Add a Reviewer agent (can be the Analyst with an additional task or a new agent)
# For simplicity, let's reuse the Analyst for a review task

task_review_report = Task(
    description=(
        "Review the generated technical report on '{topic}' for factual accuracy, completeness, and coherence. "
        "Identify any unsupported claims or areas needing more detail. "
        "Use the 'retrieve_research' tool to cross-reference facts from ChromaDB, and potentially the 'WebSearchTool' for external verification. "
        "Output a list of identified inaccuracies or suggestions for improvement." 
    ),
    expected_output='A list of factual inaccuracies or suggestions for improving the report.',
    agent=analyst # Assigning to Analyst for review
)

@flow(name="Technical Research & Review Flow")
def technical_research_and_review_flow(topic: str):
    # Ensure reset on ChromaDB for clean runs in evaluation
    chroma_client.reset()
    global chroma_collection # Re-initialize if reset
    chroma_collection = chroma_client.get_or_create_collection(name="tech_research_kb")

    # Instantiate the CrewAI crew
    tech_research_crew = Crew(
        agents=[researcher, analyst, writer],
        tasks=[task_research_topic, task_analyze_findings, task_write_report, task_review_report],
        verbose=True,
        process="sequential" # Execute tasks in sequence
    )

    print(f"Starting research and review on: {topic}")
    crew_result = tech_research_crew.kickoff(inputs={'topic': topic})
    print(f"CrewAI research and review completed. Final output:\n{crew_result}")

    # In a real scenario, you'd parse crew_result to get the final report and review comments
    # For evaluation, you would then pass the report to the FactChecking eval task
    return crew_result

# Example of running the Prefect flow with review:
# technical_research_and_review_flow("The challenges and future of quantum computing in cryptography.")
```