Skip to main content
This example demonstrates using Agent as Judge as an async post-hook on a Team to automatically evaluate team responses.
1

Add the following code to your Python file

agent_as_judge_team_post_hook_async.py
import asyncio

from agno.agent import Agent
from agno.db.sqlite import AsyncSqliteDb
from agno.eval.agent_as_judge import AgentAsJudgeEval
from agno.models.openai import OpenAIChat
from agno.team.team import Team


async def main():
    # Setup database to persist eval results
    db = AsyncSqliteDb(db_file="tmp/agent_as_judge_team_post_hook_async.db")

    # Eval runs as post-hook, results saved to database
    agent_as_judge_eval = AgentAsJudgeEval(
        name="Team Response Quality",
        model=OpenAIChat(id="gpt-4o-mini"),
        criteria="Response should be well-researched, clear, comprehensive, and show good collaboration between team members",
        scoring_strategy="numeric",
        threshold=7,
        db=db,
    )

    # Setup a team with researcher and writer
    researcher = Agent(
        name="Researcher",
        role="Research and gather information",
        model=OpenAIChat(id="gpt-4o"),
    )

    writer = Agent(
        name="Writer",
        role="Write clear and concise summaries",
        model=OpenAIChat(id="gpt-4o"),
    )

    research_team = Team(
        name="Research Team",
        model=OpenAIChat("gpt-4o"),
        members=[researcher, writer],
        instructions=["First research the topic thoroughly, then write a clear summary."],
        post_hooks=[agent_as_judge_eval],
        db=db,
    )

    response = await research_team.arun("Explain quantum computing")
    print(response.content)

    # Query database for eval results
    print("Evaluation Results:")
    eval_runs = await db.get_eval_runs()
    if eval_runs:
        latest = eval_runs[-1]
        if latest.eval_data and "results" in latest.eval_data:
            result = latest.eval_data["results"][0]
            print(f"Score: {result.get('score', 'N/A')}/10")
            print(f"Status: {'PASSED' if result.get('passed') else 'FAILED'}")
            print(f"Reason: {result.get('reason', 'N/A')[:200]}...")


if __name__ == "__main__":
    asyncio.run(main())

2

Create a virtual environment

Open the Terminal and create a python virtual environment.
python3 -m venv .venv
source .venv/bin/activate
3

Install libraries

pip install -U agno openai
4

Export your OpenAI API key

  export OPENAI_API_KEY="your_openai_api_key_here"
5

Run the example

python agent_as_judge_team_post_hook_async.py