Agent and workflow evaluation
Single agent
Wrap a non-persistent ordinary agent with AgentEvaluationTarget. Each case is
serialized canonically, executed through Agent.agenerate(), and must yield
exactly one agent observation plus a ModelResponse. Conversation history is
restored after the case.
from praval import Agent
from praval.eval import AgentEvaluationTarget
target_agent = Agent(
"answerer",
provider="openai",
model="gpt-5.4-mini",
persist_state=False,
)
target = AgentEvaluationTarget(target_agent)
For a multi-turn conversation, model the whole conversation as one case and
execute it behind one custom EvaluationTarget. The returned output should be
the structured terminal outcome, and the observation should aggregate the
turn/model/tool facts. Do not reuse conversation state between cases.