Skip to main content
subject (passed to client.evaluations.run()) tells AgentX what it’s evaluating. It’s used by AI analysis to check instruction adherence and to power the Sovereignty & Portability matrix; it never changes how scoring itself runs.

Fields

Every field is optional: kind defaults to "custom_agent" and runtime to "local". Set at least displayName and framework so the dashboard can label the run; use "other" when your stack isn’t in the framework list (any value outside it is rejected - see the note on the OpenAI Agents SDK example). Snake_case keys (display_name, agent_instructions, …) are accepted too.

Return values from your agent function

Whatever callable you pass to .execute() can return:
  • A string: used directly as the output text.
  • A dict: "output" (or "text"/"response") is the output text. Recognized optional keys: "trace_id" links the result to a recorded trace (enabling View trace, trajectory-aware judging, and expected-trajectory matching); "retrieval_context" (string or chunk list) feeds RAG judging; "metadata" (dict) is stored on the result; "input_tokens"/"output_tokens" fill in the timing detail; "trace" attaches a lightweight {"events": [...]} observable trace; "error" marks the case as failed.
  • An EvaluationResult: full manual control, including the observable trace and timings. Case identity fields are required by the model (the SDK re-stamps them from the case anyway):
For most agents the dict form is all you need; reach for EvaluationResult only when you want to hand-build the observable trace or error object.
The SDK uploads only what your callable returns, plus the case’s query as the result’s input. Nothing else from your process (environment, prompts you didn’t return, other variables) is sent.