Repository navigation
Judge prompts: guidance for de, nl, fr, fr-CA, es, it, hi, ko, ja - #251
Open
fanny-riols wants to merge 68 commits into
Open
fanny-riols wants to merge 68 commits into
fanny-riols wants to merge 68 commits into
Conversation
Adds German guidance to the judge prompts. It is rendered only for German conversations, so other languages are unchanged. - agent_speech_fidelity (de): 10 rules - conciseness (de): 2 rules - faithfulness (de): 5 rules - transcription_accuracy_key_entities (de): 2 rules - tts_fidelity (de): 10 rules - user_speech_fidelity (de): 10 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds Dutch guidance to the judge prompts. It is rendered only for Dutch conversations, so other languages are unchanged. - agent_speech_fidelity (nl): 9 rules - conciseness (nl): 2 rules - faithfulness (nl): 4 rules - tts_fidelity (nl): 9 rules - user_speech_fidelity (nl): 9 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds French and Canadian French guidance to the judge prompts. It is rendered only for French and Canadian French conversations, so other languages are unchanged. - agent_speech_fidelity (fr): 9 rules - agent_speech_fidelity (fr-CA): 3 rules - conciseness (fr): 3 rules - conciseness (fr-CA): 1 rule - faithfulness (fr): 3 rules - faithfulness (fr-CA): 2 rules - tts_fidelity (fr): 9 rules - tts_fidelity (fr-CA): 3 rules - user_speech_fidelity (fr): 9 rules - user_speech_fidelity (fr-CA): 3 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds Spanish guidance to the judge prompts. It is rendered only for Spanish conversations, so other languages are unchanged. - agent_speech_fidelity (es): 9 rules - faithfulness (es): 4 rules - tts_fidelity (es): 9 rules - user_speech_fidelity (es): 9 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds Italian guidance to the judge prompts. It is rendered only for Italian conversations, so other languages are unchanged. - agent_speech_fidelity (it): 8 rules - faithfulness (it): 3 rules - tts_fidelity (it): 8 rules - user_speech_fidelity (it): 8 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds Hindi guidance to the judge prompts. It is rendered only for Hindi conversations, so other languages are unchanged. - agent_speech_fidelity (hi): 9 rules - conciseness (hi): 3 rules - faithfulness (hi): 5 rules - speakability (hi): 3 rules - transcription_accuracy_key_entities (hi): 4 rules - tts_fidelity (hi): 9 rules - user_speech_fidelity (hi): 9 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds Korean guidance to the judge prompts. It is rendered only for Korean conversations, so other languages are unchanged. - agent_speech_fidelity (ko): 7 rules - conciseness (ko): 2 rules - faithfulness (ko): 4 rules - transcription_accuracy_key_entities (ko): 2 rules - tts_fidelity (ko): 7 rules - user_speech_fidelity (ko): 7 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
Adds Japanese guidance to the judge prompts. It is rendered only for Japanese conversations, so other languages are unchanged. - agent_speech_fidelity (ja): 10 rules - conciseness (ja): 3 rules - conversation_progression (ja): 4 rules - faithfulness (ja): 5 rules - speakability (ja): 3 rules - transcription_accuracy_key_entities (ja): 3 rules - tts_fidelity (ja): 10 rules - user_speech_fidelity (ja): 10 rules Review by a native speaker: check that each rule is correct and natural for the language, and that nothing important is missing.
The guidance slot, the shared rules and the per-language guidance change the prompt or source of these metrics, so their scores are not comparable with earlier versions: - conciseness v0.1 -> v0.2 - conversation_progression v0.2 -> v0.3 - faithfulness v0.3 -> v0.4 - speakability v0.3 -> v0.4 - agent_speech_fidelity v0.4 -> v0.5 - tts_fidelity v0.3 -> v0.4 - user_speech_fidelity v0.2 -> v0.3 - transcription_accuracy_key_entities v0.4 -> v0.5 - user_behavioral_fidelity v0.1 -> v0.2 (source only: shared base class) metrics_version is not changed.
This was referenced Oct 29, 2026
…-language-guidance-content # Conflicts: # tests/fixtures/metric_signatures.json
- agent_speech_fidelity: drop the entries that rated a clearly spoken
but wrong value 0 ('halb drei' for 3:30, soixante-sept for 77, ...).
The judge leaves the value to faithfulness and rates articulation only,
as in its own "$315" example. The reading facts stay.
- tts_fidelity hi and ja: a mispronounced non-entity word is no longer
garbled_hallucination, which means unintelligible noise. It rates 0
only if it changes the meaning.
- Speech fidelity nl, es, it and ko: the first bullet now lists the
English letter and digit names typically heard, as de and fr do,
instead of restating the shared rule in three variants.
- Example values that occur in the datasets are replaced with synthetic
ones (codes, user names, a surname). "M comme Marcel" stays: it is the
standard French spelling alphabet.
- The metric signature fixture is regenerated.
- Speech fidelity: add the regional 'viertel drei' = 2:15 next to 'drei viertel drei' = 2:45. - Speech fidelity: drop "Meier/Meyer-type spelling variants are fine"; the shared prompt already says it. - Conciseness: keep the written-out date example and drop the restated shared rule.
- Conciseness: "Ik ga meteen kijken" and "Ik ga uw reservering er direct bij zoeken" are single hold phrases, so they are fine on their own. They are filler only when stacked with another hold phrase or lead-in. - Speech fidelity: "bee, cee, dee, pee, tee sound like English" was phonetically wrong (Dutch B is /beː/, close to English "bay"). It now says these written names are the Dutch names. - Speech fidelity: the acronym exemption covers acronyms used as words or names (ID, FMLA, I-9). The letters of a spelled code or identifier still need Dutch names, as the rest of the guidance says. - Speech fidelity: the vowel-change example used 'veer', which is not a digit. The rule now says "makes a digit unrecognisable or turns it into another digit". - Speech fidelity: drop "Upper or lower case need not be spoken", which is not specific to Dutch.
French: - Faithfulness: a code with a compound-number sequence no longer always needs digit-by-digit confirmation. Flag the missing confirmation only if the trace shows the ambiguity mattered, as the shared rule says. - Conciseness: "Je peux vous aider avec ça ?" is a calque; use "Puis-je vous aider ?". Vous-forms are described as normal register instead of restating the shared spoken-length rule. - Speech fidelity: dix-huit is liaison, not elision. 'trois heures et quart' = 3:15 moves here from fr-CA, since it is standard French. Canadian French (adds to the French text, which fr-CA also gets): - Faithfulness: drop the compound-number bullet, which only repeated fr. - Speech fidelity: drop the bullet that repeated the fr and shared rules on English letter names and phrases. - Speech fidelity: the time bullet now gives the Québec forms 'trois heures moins quart' (without 'le') and the colloquial 'quart à trois', both 2:45, so the fr 'moins le quart' entry doesn't reject them. - Conciseness: keep the warm-phrase examples, drop the restated rule.
- Speech fidelity: the B/V bullet said 'be' and 've' sound the same, then called 'be' for V a letter error. Now only a clearly distinguishing name is a letter error: 'uve' / 've corta' said for B, or 'be larga' / 'be de Barcelona' said for V. - Faithfulness: the target is European Spanish, so note that with distinción, C before e/i and Z (/θ/) are distinct from S (/s/). The S/C/Z merge applies to seseo speakers.
Speech fidelity: - "a Italian listener" → "an Italian listener". - The realistic wrong date form is "l'uno marzo", not "il uno marzo". - Spell out the 'Gioia' example: the letter J read as the word 'Gioia' instead of 'i lunga'.
EVA supports Hindi–English code-switching, so the judges no longer
penalise English words or phrases inside a Hindi sentence.
- Faithfulness: English loanwords, procedural terms ("Employee ID",
"last name") and short phrases ("six digits") are never a language
violation, in either script. Only a whole English sentence or turn is.
This replaces the rule that rated repeated English procedural phrases
at most 2, which also contradicted the shared rating scale. The list of
Hindi equivalents goes with it, including उपनाम, which usually means
nickname rather than last name.
- Faithfulness: evidence is a whole English sentence or turn, not Latin
script, which on its own says nothing about the language spoken.
- Speech fidelity: English words and phrases inside a Hindi sentence are
not wrong language. For tts_fidelity and user_speech_fidelity, only a
whole English sentence that is not in the intended text is.
- Speech fidelity: the mispronunciation examples now say what the wrong
pronunciation sounds like ('aisle' said as 'es-le'); the others gave
none and are dropped.
Faithfulness: 공 (0) does not sound like the letter O. The real collisions are that the letter O (오) is also the digit 5 (오), and that O is easily confused with 0 in writing.
Speech fidelity: - Counter readings: ななじ is as standard as しちじ for 7時, and じっぷん is a standard reading of 10分; both are added. - く (9) is not confusable with シー (C) or いち (1); drop it from that list. - Keep the katakana examples of a letter group read as a word, and drop the "codes must be read letter by letter" rule, which is not specific to Japanese.
…-language-guidance-content # Conflicts: # tests/fixtures/metric_signatures.json
…-language-guidance-content
…-language-guidance-content # Conflicts: # tests/fixtures/metric_signatures.json
The fabricating_tool_parameters note on confusable letters now points to the language-specific guidance, which this branch adds. The note is in the shared prompt, so the English faithfulness prompt gets the pointer too; "if any" covers languages without guidance.
Group each language entry by what its items mean for the rating, with the rating in the judge's own scale in each group heading. Move the fr-CA entries into fr, so Canadian French gets the French guidance only. Carry confusable pairs and homophones already listed for a language in one judge over to that language's entries in the other judges, and add Korean entries for speakability glosses and conversation_progression homophones.
…rules' into pr/fr/judge-language-guidance-content # Conflicts: # tests/fixtures/metric_signatures.json
…es agree Dutch: an acronym used as a word in a sentence may use English letter names, but the letters of a spelled code still follow the English letter names rule. Hindi: English digit names are correct when the text writes the digit as a numeral or in English, and only unusual when it spells out the Hindi digit word. agent_speech_fidelity, tts_fidelity and user_speech_fidelity share their per-language facts; a test now checks that the groups whose items do not depend on the rating scale list the same items in all three files.
Items such as "Stacked acknowledgements: Parfait, très bien, d'accord, merci beaucoup" or a list of loanwords could be read as the only cases to flag or to accept. They now say they are examples (e.g., such as, for example), and the loanword headings say the list is not complete.
…rd note for ko and hi Merge the latest shared judge rules. Dutch conciseness no longer lists lead-ins that announce the next step as filler. Korean and Hindi faithfulness now say, as Japanese does, that a transcript rendering a spoken loanword in Latin letters is not evidence of English speech.
2 tasks
tiffanyannedo
requested changes
Nov 12, 2026
tiffanyannedo
left a comment
Collaborator
There was a problem hiding this comment.
Reviewed JA additions to the prompts. Made some comments/suggestions.
| **Correct, does not lower the rating:** | ||
| - These are the Japanese names of Latin letters in a spelled code, in katakana; a letter said this way is correct, even with an English-like accent: エー, ビー, シー, ディー, イー, エフ, ジー, エイチ/エッチ, アイ, ジェー, ケー, エル, エム, エヌ, オー, ピー, キュー, アール, エス, ティー, ユー, ブイ/ヴィー, ダブリュー, エックス, ワイ, ゼット/ズィー. | ||
| - These are the Japanese digit names in a spelled code; a digit said this way is correct: ゼロ/れい, いち, に, さん, よん, ご, ろく, なな, はち, きゅう. | ||
| - This is how numbers are read with counters in Japanese; a number read this way is correct (し, しち, く are right here): 4時 よじ, 7時 しちじ/ななじ, 9時 くじ, 4月 しがつ, 7月 しちがつ, 9月 くがつ, 1日 ついたち, 2日 ふつか, 4日 よっか, 8日 ようか, 20日 はつか, 24日 にじゅうよっか, 1分 いっぷん, 10分 じゅっぷん/じっぷん, 2人 ふたり, 4人 よにん. |
Collaborator
There was a problem hiding this comment.
ななじ is not a way to say 7時. But, 7月 can be said as なながつ.
Dates all have special readings. Should this be exhaustive?
じっぷん is not a way to say 10分 and mean the time/duration, it is a way to say "enough"
Same with counting people, should be this be exhaustive?
Suggested change
| - This is how numbers are read with counters in Japanese; a number read this way is correct (し, しち, く are right here): 4時 よじ, 7時 しちじ/ななじ, 9時 くじ, 4月 しがつ, 7月 しちがつ, 9月 くがつ, 1日 ついたち, 2日 ふつか, 4日 よっか, 8日 ようか, 20日 はつか, 24日 にじゅうよっか, 1分 いっぷん, 10分 じゅっぷん/じっぷん, 2人 ふたり, 4人 よにん. | |
| - This is how numbers are read with counters in Japanese; a number read this way is correct (し, しち, く are right here): 4時 よじ, 7時 しちじ, 9時 くじ, 4月 しがつ, 7月 しちがつ/なながつ, 9月 くがつ, 1日 ついたち, 2日 ふつか, 3日 みっか, 4日 よっか, 5日 いつか, 6日 むいか, 7日 なのか, 8日 ようか, 9日 ここのか, 10日 とおか, 14日 じゅうよっか, 20日 はつか, 24日 にじゅうよっか, 1分 いっぷん, 10分 じゅっぷん, 1人 ひとり, 2人 ふたり, 4人 よにん. |
Collaborator
Author
There was a problem hiding this comment.
How exhaustive would that be? If it's just as big as these rows, then yes, please.
Collaborator
There was a problem hiding this comment.
Yes, the suggestions are all the ones I think we should add
…rules' into pr/fr/judge-language-guidance-content # Conflicts: # tests/fixtures/judge_prompts_en.json # tests/fixtures/metric_signatures.json
…rules' into pr/fr/judge-language-guidance-content # Conflicts: # tests/fixtures/metric_signatures.json
…rules' into pr/fr/judge-language-guidance-content # Conflicts: # tests/fixtures/judge_prompts_en.json # tests/fixtures/metric_signatures.json
Co-authored-by: tiffanyannedo <142948481+tiffanyannedo@users.noreply.github.com>
gabegma
reviewed
Nov 12, 2026
gabegma
reviewed
Nov 12, 2026
gabegma
reviewed
Nov 12, 2026
gabegma
reviewed
Nov 12, 2026
…rules' into pr/fr/judge-language-guidance-content # Conflicts: # tests/fixtures/judge_prompts_en.json # tests/fixtures/metric_signatures.json
… informative English clause is rated 1
… your own transcript
…o, not by your own transcript
…, not by your own transcript
…ntent' into pr/fr/judge-language-guidance-content # Conflicts: # configs/prompts/judge_language_guidance/agent_speech_fidelity.yaml # configs/prompts/judge_language_guidance/tts_fidelity.yaml # configs/prompts/judge_language_guidance/user_speech_fidelity.yaml # tests/fixtures/metric_signatures.json
…the Japanese review, as in tts_fidelity and user_speech_fidelity
…rules' into pr/fr/judge-language-guidance-content # Conflicts: # tests/fixtures/judge_prompts_en.json # tests/fixtures/metric_signatures.json
… with kanji; invalid name forms (review suggestions)
…t outside IT (Spanish review)
…de times, same-sound pairs in names (Spanish review)
…añana/tarde times, same-sound pairs in names (Spanish review)
…ñana/tarde times, same-sound pairs in names (Spanish review)
…ith them; drop the Québec register line
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Native speakers reviewed EVA conversations in 9 languages. Some judge errors they found come from not knowing how the language works.
#249 added a place in each judge prompt where language-specific text can be inserted. #250 changed the rules shared by all languages. This PR writes the language-specific text: one YAML file per judge in
configs/prompts/judge_language_guidance/, with one entry per language. When a conversation is in that language, its entry is added to the judge prompt under a### <Language>-specific guidanceheading. English conversations get nothing, so English prompts don't change, except for one line in faithfulness (see below). Canadian French has no entry of its own: it gets the French entry, which includes the Québec items.How each entry is written. Each entry groups its items by what they mean for the rating, and each group heading says the rating in that judge's own scale. For example, in tts_fidelity: "Correct, does not lower the rating", "Rating = 0 with
entity_error".Version bump
The versions of all metrics whose prompt or source changes in the stack (#249, #250 and this PR) are bumped once here.
metrics_versionis not changed.tests/fixtures/metric_signatures.jsonis regenerated.What changes, per judge
faithfulness (de, nl, fr, es, it, hi, ko, ja)
agent_speech_fidelity, tts_fidelity, user_speech_fidelity (de, nl, fr, es, it, hi, ko, ja). These three files are generated from one source, so they say the same thing, with the rating wording adapted to each judge's scale. For each language they list:
conciseness (fr, de, nl, hi, ko, ja)
speakability (hi, ko, ja)
transcription_accuracy_key_entities (de, hi, ko, ja)
conversation_progression (ja, ko)
Validation
Before is #249, which renders the same prompts as
mainbefore this stack. After is this PR, which includes #250.Unit tests.
Rendered prompts: every judge prompt was rendered in all 10 languages, with this PR and with Judge prompts: shared rules for spelled codes, mixed-language speech, glosses and politeness #250.
Judge validation datasets (
docs/metrics/judge_validation_datasets/), production judge models, 3 runs per side, accuracy / macro-F1, mean ± std:us.anthropic.claude-opus-4-6-v1)gpt-5.2)gpt-5.2)gpt-5.2), entity F1 / matched accuracyRe-scoring existing runs: 134 non-English trials (de, nl, fr, fr-CA, es, it, hi, ko, ja), including the conversations the native-speaker reviewers commented on (150 selected). The column "Noise" below is the variation between two runs of Judge prompts: shared rules for spelled codes, mixed-language speech, glosses and politeness #250 (before adding language guidance) on the same trials, with the same prompt. Agreement with the reviewers: their per-turn comments in German, French, Canadian French, Hindi and Japanese, turned into 234 verdicts saying the rating they saw should be lower, higher or the same; that count is in the "reviewer verdicts". We added "Agree before → after" column to count agreement of judge with reviewers.
* For agent_speech_fidelity and user_speech_fidelity, "after" agreement uses Gemini 3.8 Flash (
gemini-3.8-flash, Use Gemini 3.8 Flash as the default audio judge #263) as the audio judge.Stack