|
| 1 | +{ |
| 2 | + "metrics": [ |
| 3 | + { |
| 4 | + "name": "response_usefulness", |
| 5 | + "definition": "Whether the agent final response provides a genuinely useful, substantive answer to the user question. A response that apologizes, says it cannot help, returns no data, provides only generic filler, or loops without resolving the question is NOT useful.", |
| 6 | + "categories": [ |
| 7 | + { |
| 8 | + "name": "meaningful", |
| 9 | + "definition": "The response directly and substantively addresses the user question with specific, actionable information." |
| 10 | + }, |
| 11 | + { |
| 12 | + "name": "unhelpful", |
| 13 | + "definition": "The response does NOT meaningfully answer the user question. This includes: (1) The agent said 'I don't have that information', gave generic advice, or directed the user elsewhere instead of using its tools. (2) The agent apologized without answering. (3) Empty data results or generic filler text. (4) The agent looped without resolution." |
| 14 | + }, |
| 15 | + { |
| 16 | + "name": "partial", |
| 17 | + "definition": "The response partially addresses the question but is incomplete, missing key details, or only tangentially relevant." |
| 18 | + } |
| 19 | + ], |
| 20 | + "required": true, |
| 21 | + "scope_aware": true, |
| 22 | + "declined_category": { |
| 23 | + "name": "declined", |
| 24 | + "definition": "The TOPIC of the question is explicitly listed as out of scope (see AGENT SCOPE CONTEXT above) and the agent correctly declined. Use this ONLY when the topic itself is out of scope -- NOT when the agent simply failed to find an answer for an in-scope topic.", |
| 25 | + "insert_after": "meaningful" |
| 26 | + }, |
| 27 | + "scope_suffix": " UNLESS the question is outside the agent's defined scope, in which case a polite decline IS a correct and meaningful response." |
| 28 | + }, |
| 29 | + { |
| 30 | + "name": "task_grounding", |
| 31 | + "definition": "Whether the agent response is grounded in actual data retrieved from its tools, or is fabricated / hallucinated general knowledge.", |
| 32 | + "categories": [ |
| 33 | + { |
| 34 | + "name": "grounded", |
| 35 | + "definition": "The response is clearly based on data retrieved from the agent tools (search results, database lookups, API calls)." |
| 36 | + }, |
| 37 | + { |
| 38 | + "name": "ungrounded", |
| 39 | + "definition": "The response appears to be fabricated or based on the LLM general knowledge rather than actual tool results. The tool may have returned empty data and the agent filled in anyway." |
| 40 | + }, |
| 41 | + { |
| 42 | + "name": "no_tool_needed", |
| 43 | + "definition": "The question did not require tool usage and a direct LLM response was appropriate." |
| 44 | + } |
| 45 | + ], |
| 46 | + "required": true |
| 47 | + }, |
| 48 | + { |
| 49 | + "name": "correctness", |
| 50 | + "definition": "Whether the facts stated in the agent response are accurate. Evaluate based on the information the agent retrieved from its tools and whether it was conveyed faithfully.", |
| 51 | + "categories": [ |
| 52 | + { |
| 53 | + "name": "correct", |
| 54 | + "definition": "All facts stated by the agent are accurate and consistent with the tool results retrieved." |
| 55 | + }, |
| 56 | + { |
| 57 | + "name": "mostly_correct", |
| 58 | + "definition": "The response is mostly correct but contains a minor inaccuracy, omission, or imprecise wording." |
| 59 | + }, |
| 60 | + { |
| 61 | + "name": "incorrect", |
| 62 | + "definition": "The response contains wrong facts, hallucinated information, or claims contradicted by the tool results." |
| 63 | + } |
| 64 | + ], |
| 65 | + "required": true |
| 66 | + }, |
| 67 | + { |
| 68 | + "name": "tool_usage", |
| 69 | + "definition": "Whether the agent used its available tools correctly to answer the question, rather than relying on general knowledge.", |
| 70 | + "categories": [ |
| 71 | + { |
| 72 | + "name": "proper", |
| 73 | + "definition": "The agent used its tools and based the answer on the tool results. Tools were called with appropriate parameters." |
| 74 | + }, |
| 75 | + { |
| 76 | + "name": "partial", |
| 77 | + "definition": "The agent partially used tools, or tool usage was unclear or incomplete. Some information may not be tool-derived." |
| 78 | + }, |
| 79 | + { |
| 80 | + "name": "none", |
| 81 | + "definition": "The agent answered from general knowledge without looking up information via tools, even though tools were available and the question warranted their use." |
| 82 | + } |
| 83 | + ], |
| 84 | + "required": true |
| 85 | + }, |
| 86 | + { |
| 87 | + "name": "specificity", |
| 88 | + "definition": "Whether the agent response provides specific, concrete details (numbers, dates, dollar amounts, limits) rather than vague or generic statements.", |
| 89 | + "categories": [ |
| 90 | + { |
| 91 | + "name": "specific", |
| 92 | + "definition": "The response includes specific and complete details: exact numbers, percentages, dollar amounts, dates, or limits." |
| 93 | + }, |
| 94 | + { |
| 95 | + "name": "somewhat_specific", |
| 96 | + "definition": "The response is somewhat specific but missing some key details that would make it fully actionable." |
| 97 | + }, |
| 98 | + { |
| 99 | + "name": "vague", |
| 100 | + "definition": "The response is vague, generic, or missing key specifics that the user needs to act on the information." |
| 101 | + } |
| 102 | + ], |
| 103 | + "required": true |
| 104 | + }, |
| 105 | + { |
| 106 | + "name": "scope_compliance", |
| 107 | + "definition": "Whether the agent correctly handled the scope of the question. An agent should answer in-scope questions and politely decline out-of-scope ones.", |
| 108 | + "categories": [ |
| 109 | + { |
| 110 | + "name": "compliant", |
| 111 | + "definition": "The agent correctly answered an in-scope question OR correctly declined an out-of-scope question." |
| 112 | + }, |
| 113 | + { |
| 114 | + "name": "partially_compliant", |
| 115 | + "definition": "The agent answered but with unnecessary caveats, excessive hedging, or was partially out of scope." |
| 116 | + }, |
| 117 | + { |
| 118 | + "name": "non_compliant", |
| 119 | + "definition": "The agent tried to answer an out-of-scope question it should have declined, OR refused to answer an in-scope question it should have handled." |
| 120 | + } |
| 121 | + ], |
| 122 | + "required": true, |
| 123 | + "scope_aware": true |
| 124 | + }, |
| 125 | + { |
| 126 | + "name": "first_time_right", |
| 127 | + "definition": "Whether the agent's FIRST response in the conversation was satisfactory, without needing user corrections or follow-ups to fix errors. For single-turn conversations, evaluate the only response. For multi-turn, focus on whether the first substantive answer was correct.", |
| 128 | + "categories": [ |
| 129 | + { |
| 130 | + "name": "correct", |
| 131 | + "definition": "The first response was correct and complete. No correction or significant clarification was needed from the user." |
| 132 | + }, |
| 133 | + { |
| 134 | + "name": "clarification_needed", |
| 135 | + "definition": "The first response was mostly right but needed minor clarification or a follow-up to be fully useful." |
| 136 | + }, |
| 137 | + { |
| 138 | + "name": "correction_needed", |
| 139 | + "definition": "The first response was wrong, vague, or incomplete enough that the user had to push back or correct the agent." |
| 140 | + } |
| 141 | + ], |
| 142 | + "required": true |
| 143 | + } |
| 144 | + ] |
| 145 | +} |
0 commit comments