Conversational Metrics
Conversational metrics (multi-turn metrics) evaluate interactions across multiple turns — coherence, goal achievement, role adherence, and tool usage in extended dialogues.
The examples below require a Rhesis API key (RHESIS_API_KEY); see Installation & Setup.
Supported Metrics
DeepEval Conversational Metrics
| Metric | Description | Reference |
|---|---|---|
DeepEvalTurnRelevancy | Evaluates relevance of assistant responses across conversation turns | Docs |
DeepEvalRoleAdherence | Evaluates whether assistant maintains its assigned role throughout the conversation | Docs |
DeepEvalKnowledgeRetention | Evaluates assistant’s ability to retain and recall facts from earlier in the conversation | Docs |
DeepEvalConversationCompleteness | Evaluates whether conversation reaches a satisfactory conclusion | Docs |
DeepEvalGoalAccuracy | Evaluates assistant’s ability to plan and execute tasks to achieve specific goals | Docs |
DeepEvalToolUse | Evaluates assistant’s capability in selecting and using tools appropriately | Docs |
Rhesis Conversational Metrics
| Metric | Description | Configuration |
|---|---|---|
ConversationalJudge | Custom LLM-based evaluation for conversation quality | Evaluation prompt and steps, score range, threshold |
GoalAchievementJudge | Evaluates whether a stated goal was achieved in the conversation | Evaluation prompt, score range, threshold; goal passed to evaluate() |
If any metrics are missing from the list, or you would like to use a different provider, please let us know by creating an issue on GitHub .
Conversation History
All conversational metrics require a ConversationHistory object that represents the multi-turn dialogue. Create one using the from_messages method:
Assistant turn fields
Assistant messages can include additional structured fields that are consumed by conversational judges:
| Field | Type | Purpose |
|---|---|---|
metadata | dict[str, Any] | Structured per-turn metadata returned by your endpoint |
context | list[Any] | Retrieval context (for example, RAG sources) |
tool_calls | list[dict[str, Any]] | Tool invocation records associated with the assistant turn |
These fields are optional. If they are omitted for a turn, helper methods return None for that position.
Formatting a conversation transcript
Use ConversationHistory.format_conversation() when you want a structured, numbered transcript that keeps
assistant context, metadata, and tool_calls attached to the correct turn.
This is especially useful for custom conversational judges and prompt templates.
Expected output shape:
to_text() returns a simpler role-prefixed transcript and excludes metadata, context, and tool_calls.
Use format_conversation() when those fields must be visible to the evaluating model.
Quick Start
Turn Relevancy
Evaluates whether assistant responses are relevant to the conversational context throughout the conversation.
Role Adherence
Evaluates whether the assistant maintains its assigned role throughout the conversation.
Knowledge Retention
Evaluates the assistant’s ability to retain and recall factual information introduced earlier in the conversation.
Conversation Completeness
Evaluates whether the conversation reaches a satisfactory conclusion where the user’s needs are met.
Goal Accuracy
Evaluates the assistant’s ability to plan and execute tasks to achieve specific goals.
Tool Use
Evaluates the assistant’s capability in selecting and utilizing tools appropriately during conversations.
Creating Custom Conversational Metrics
Conversational Judge
Create custom conversational evaluations using ConversationalJudge:
Goal Achievement Judge
Evaluate whether a conversation achieves a stated goal using GoalAchievementJudge. Pass the goal to evaluate(); the judge breaks it into criteria and scores each one, returned under result.details['criteria_evaluations'].
Understanding Results
All conversational metrics return a MetricResult object:
Configuring Models
All conversational metrics require an LLM model to perform the evaluation. If no model is specified, the default model will be used.
For more information about models, see the Models Documentation.