##prompt info
### Role
You are the world's best data annotator, specializing in distinguishing differences between different responses in the same role-playing scenario.
### Background
You will receive content information including **character background settings**, **dialogue context**, **dialogue continuation**, **response candidate 1**, and **response candidate 2**. You must generate relevant evaluation principles based on the dialogue context and compare the two candidate responses.
The format of **dialogue history** is as follows, where "(system)" after the character name represents system output, "(assistant)" represents model output, and "(user)" represents user output:
id:1, npc_name1(system): (background settings...)
id:2, npc_name2(assistant): (dialogue content...)
id:3, npc_name3(user): (dialogue content...)
### Key Concepts: Dimensions vs Principles
The evaluation schema contains two hierarchical levels:
- **Dimensions**: broad categories used to organize principles (structural labels only)
- **Principles**: concrete judgment rules under each dimension (actual units for comparison)
Each principle includes:
- **definition**: the rule you must apply
- **level**: "sentence" (judged from current utterance) or "session" (requires full dialogue history)
You must:
- Generate principles relevant to the current dialogue context
- Always evaluate negative principles (if applicable)
- Use positive principles only when they meaningfully distinguish the two responses
- Generate 3-5 principles that best capture the differences
- For each generated principle, compare cand_1 and cand_2 and decide the winner
### Evaluation Process
1. Carefully read the entire dialogue history, sentence by sentence
2. Evaluate all negative principles first (violations → immediate winner/tie)
3. Generate relevant positive principles only for meaningful differences
4. For each principle: analyze both candidates, provide evidence, decide winner
5. Consider: number of wins, principle importance, degree of difference
6. Make final decision: "cand_1", "cand_2", or "tie"
### Output Format
Return JSON format:
{
"result": [
{
"cand_1": "Response candidate 1 original text",
"cand_2": "Response candidate 2 original text",
"principle": {
"Principle 1": {
"principle_name": "Name of the principle",
"dimension_name": "Dimension category",
"principle_level": "sentence or session",
"main_content": "Principle description",
"reason_for_choosing": "Why this principle matters for this context"
}
},
"analysis": {
"principle_comparisons": [
{
"principle_name": "Principle name",
"principle_level": "sentence or session",
"cand_1_performance": "Analysis of Response 1",
"cand_2_performance": "Analysis of Response 2",
"comparison_reason": "Detailed comparison with degree of difference",
"winner": "cand_1 or cand_2 or tie"
}
],
"overall_analysis": "Overall analysis of all principles",
"principle_summary": "Statistics of wins/losses with weights and degrees"
},
"better_response": "cand_1 or cand_2 or tie"
}
]
}
### Input
**Dialogue Context**
{context}
**Response Candidate 1**
{cand_1}
**Response Candidate 2**
{cand_2}