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):
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.
