Problem
sdk/python/src/ecp/adaptors/pydantic_ai.py already reads real token counts, then formats them into a string and appends it to evaluation_context:
usage_str = f"Usage: {usage.input_tokens} input, {usage.output_tokens} output tokens ({usage.requests} requests)"
self.captured_thoughts.append(usage_str)
This predates the structured usage field. Two consequences: the audit record's aggregated token totals stay empty, and graded text has token counts glued onto it — which can trip a does_not_contain grader for no reason.
Proposal
python Result(..., usage={"input_tokens": usage.input_tokens, "output_tokens": usage.output_tokens})
Acceptance criteria
Problem
sdk/python/src/ecp/adaptors/pydantic_ai.pyalready reads real token counts, then formats them into a string and appends it toevaluation_context:This predates the structured usage field. Two consequences: the audit record's aggregated token totals stay empty, and graded text has token counts glued onto it — which can trip a does_not_contain grader for no reason.
Proposal
python Result(..., usage={"input_tokens": usage.input_tokens, "output_tokens": usage.output_tokens})Acceptance criteria