Skip to main content
HoneyHive provides a list of server-side evaluator templates for some of the most commonly used metrics across autonomous agents, RAG, and other use-cases.
In this document, we will cover how to properly set up tracing in your application to ensure the required information is captured in the expected format for server-side evaluators. Additionally, we will provide a detailed list of Python and LLM evaluator templates, complete with code examples and descriptions for each, to help you implement and customize them for your specific use case.
These templates provide ready-to-use examples. For detailed instructions on creating custom evaluators from scratch, see the Python Evaluators and LLM Evaluators documentation.
Output key varies by event type: Templates below use outputs.content (common for model events from LLM calls). If evaluating chain events from @trace decorated functions, use outputs.result instead. Click Show Schema in the evaluator console to see available fields for your events.

Configuring Tracing for Server-Side Evaluators

Server-side evaluators operate on event objects, so when instrumenting your application for sending traces to HoneyHive, you need to ensure the correct event properties are being captured and traced. For example, suppose you want to set up a Python evaluator that requires both the model’s response and a provided ground truth, as well as an LLM evaluator that requires the model’s response and a provided context. In this case, you can wrap your model call within a function and enrich the event object with the necessary properties:
The traced function will automatically be mapped to a chain event, as it groups together a model event within it. The chain event will be named after the traced function. When setting up an evaluator in HoneyHive for the example above, follow these steps:
  1. Select Filters
    • event type: chain
    • event name: generate_response
    • Optionally, click + to add filters on any event property (e.g., inputs.query contains "help") - see Event Filters for details
  2. Accessing properties
    • For Python Evaluators:
      • Access output content with event["outputs"]["result"]
      • Access ground truth with event["feedback"]["ground_truth"]
      • Access context with event["inputs"]["context"]
    • For LLM Evaluators:
      • Access output content with {{ outputs.result }}
      • Access ground truth with {{ feedback.ground_truth }}
      • Access context with {{ inputs.context }}
For instance, creating a custom Python evaluator that uses the output from the response along with the provided ground truth would look like this:
While creating an LLM custom evaluator that uses the response’s output in combination with the provided context would look like this:

Python Evaluator Templates

Remember to adjust the event attributes in the code to align with your setup, as demonstrated in the tracing section above.

Response length

Python
Measures response verbosity by counting words. Useful for controlling output length and monitoring response size.

Semantic Similarity

Measures semantic similarity between model output and ground truth using OpenAI embedding models.

Levenshtein Distance

Calculates normalized Levenshtein distance between model output and ground truth. Returns a score between 0 and 1, where 1 indicates perfect match.

ROUGE-L

Calculates ROUGE-L (Longest Common Subsequence) F1 score between generated and reference texts. Scores range 0-1, with higher values indicating better alignment.

BLEU

Calculates BLEU score, measuring translation quality by comparing n-gram overlap between system output and reference text.

JSON Schema Validation

Validates JSON output against a predefined schema. Ideal for ensuring consistent API responses or structured data output.

SQL Parse Check

Validates SQL syntax using SQLGlot parser. Essential for database query generation and SQL-related applications.

Flesch Reading Ease

Calculates text readability score. Higher scores (0-100) indicate easier reading. Useful for ensuring content accessibility.

JSON Key Coverage

Analyzes completeness of JSON array outputs by checking for required fields. Returns count of missing fields.

Tokens per Second

Calculates token generation speed. Useful for performance monitoring and optimization.

Keywords Assertion

Checks for presence of required keywords in output. Useful for ensuring coverage of specific topics or requirements.

OpenAI Moderation Filter

Uses OpenAI Moderation API to check content safety. Returns true if content is flagged for review.

External API Example

Template for external API integration. Demonstrates proper error handling and response processing.

Compilation Success

Validates Python code syntax without execution. Essential for code generation applications.

Precision/Recall/F1 Metrics

Computes classification metrics (precision, recall, F1-score) for evaluating prediction quality against ground truth labels.

LLM Evaluator Templates

Remember to adjust the event attributes in the code to align with your setup, as demonstrated in the tracing section above.

Answer Faithfulness

Evaluates if the answer is faithful to the provided context in RAG systems

Answer Relevance

Evaluates if the answer is relevant to the user query

Context Relevance

Evaluates if the retrieved context is relevant to the user query in RAG systems

Format Adherence

Evaluates if the response follows the required format and structure

Tool Usage

Evaluates if the AI assistant uses the correct tools appropriately

Intent Identification

Intent Taxonomy Section: The [Intent Taxonomy] section is a key part of this evaluator. You should customize it with your application’s specific intents to help the LLM judge accurately assess whether the assistant correctly identified the user’s intent. Replace the example intents with your own taxonomy that reflects the types of requests your application handles.
Evaluates if the AI correctly identifies and addresses the user intent

Toxicity

Evaluates the response for harmful, toxic, or inappropriate content

Coherence

Evaluates if the response is logically structured and well-organized

Chain-of-Thought Faithfulness

Evaluates logical consistency and validity of chain-of-thought reasoning in agent systems

Plan Coverage

Evaluates whether the agent’s plan comprehensively addresses all requirements and constraints

Trajectory Plan Faithfulness

Evaluates alignment between planned and executed actions in agent systems (session-level)

Failure Recovery

Evaluates the agent’s ability to detect and recover from errors gracefully (session-level)

Policy Compliance

Evaluates adherence to specified policies, rules, and regulatory requirements

Harm Avoidance

Evaluates whether the response avoids harmful, unsafe, or inappropriate content

Context Coverage

Evaluates effective utilization of provided context in RAG systems

Tone Appropriateness

Evaluates whether the response maintains appropriate tone for the given context

Translation Fluency

Evaluates the naturalness and grammatical correctness of translated text

Conversation Evaluator Templates

These templates use Jinja2 templating to extract the relevant turns from multi-turn conversations when the evaluated event already includes a conversation array.
These templates loop over a message array. They look for common paths like inputs.chat_history, inputs.messages, outputs.chat_history, and metadata.inputs.chat_history. Confirm the field exists in Show Schema and replace the fallback block if your event uses a different path. Loops require an actual array, not a JSON string.
For integrations such as OpenAI and OpenAI Agents SDK, chat history is commonly captured on individual model events. The root session event may not include a rolled-up inputs.chat_history by default, and online evaluators do not wait for a session-finalization step. For online evaluation, target events that already contain the chat history, or use session-level filters only when the session event already has a conversation array at evaluation time. If you target model events, the evaluator runs once per matching model call, so earlier turns may be scored with partial conversation context.

User Satisfaction

Judges subjective user satisfaction from the user’s turns only, filtering out assistant and tool messages

User Frustration

Detects rising frustration or escalation signals across the user’s turns

Conversation Resolution

Compares the user’s opening request and full set of asks against the assistant’s final reply to judge whether the goal was met

Context Retention

Checks whether the latest assistant reply honors constraints the user stated in earlier turns

Tool Trajectory

Extracts ordered tool calls (name and arguments) from messages that contain tool calls and judges whether the agent used them correctly and efficiently

Turn-by-Turn Helpfulness

Reconstructs user-assistant turn pairs by index and judges whether response quality holds up or degrades over the conversation

User Intent Clarity

Compares the first and last user messages to judge whether intent stayed focused or drifted across turns

Repetition Loop

Flags conversations where the user repeats or rephrases the same request, signalling the agent is stuck

Coding Agent Evaluator Templates

These templates are designed for evaluating coding agent sessions. They classify and assess sessions across key dimensions: what kind of work was done, its strategic type, how complex it was, and how specific the developer’s prompt was.
Coding agent templates use inputs and outputs (top-level): These evaluators assess entire coding agent sessions, so they use {{ inputs }} for the user prompt and {{ outputs }} for the agent’s full session output. For example, {{ inputs }} might resolve to the user’s prompt string, and {{ outputs }} to the full agent session log.

Task Category

Classifies a coding agent session into one of 12 work categories.

Work Type

Classifies sessions by strategic work type: Maintenance (KTLO), Bug Fixing, or New Features.

Task Complexity

Rates task complexity on a 1-5 scale based on scope, technical depth, and reasoning required.

Prompt Specificity

Prompt Specificity only uses {{ inputs }}: This evaluator intentionally omits {{ outputs }} because it evaluates only the user’s prompt, not the agent’s response.
Measures how specific and actionable the developer’s prompt is on a 1-5 scale.

Multi-Agent Evaluator Templates

These templates evaluate coordination quality in multi-agent systems - how well agents hand off work, stay in scope, and produce coherent combined outputs.
Multi-agent templates use inputs and outputs (top-level): These evaluators assess agent handoffs, delegation plans, session traces, and assembled outputs. For example, {{ inputs }} might contain the agent’s role definition or task context, and {{ outputs }} might contain the agent’s actions or assembled output.

Handoff Completeness

Evaluates whether an agent’s output contains everything the downstream agent needs to continue the task.

Integration Coherence

Assesses whether assembled multi-agent outputs form a coherent, unified whole.

Scope Adherence

Evaluates whether an agent stayed within its assigned decision space and responsibilities.

Escalation Appropriateness

Checks whether agents appropriately flag uncertainty and escalate issues before they become errors.

Delegation Appropriateness

Evaluates whether the orchestrator chose the right decomposition strategy for the task’s complexity.

Information Sufficiency

Checks whether agents received the right amount of context, not too much and not too little.

Role Clarity

Evaluates whether agents have clear, non-overlapping responsibilities.

Retrospective Quality

Assesses the depth of an agent’s self-reflection and error analysis after completing a task.