Skip to content

Pr/multilingual#121

Open
raghavm243512 wants to merge 18 commits into
mainfrom
pr/multilingual
Open

Pr/multilingual#121
raghavm243512 wants to merge 18 commits into
mainfrom
pr/multilingual

Conversation

@raghavm243512
Copy link
Copy Markdown
Collaborator

@raghavm243512 raghavm243512 commented May 18, 2026

initial multilingual version

Easily extendable to many language using the add_culture_data script. This will do translation, gender consistent naming, suggest names, extend data, etc. So if anyone wants to run a language not committed in EVA data, it is trivially easy to do so.
Readme section showing basic of adding a language.

This adds:
Multilingual data schema and content (initial utterances, system prompt, name aliases)
multilingual support in code
Prompt updates to support multi languages
Script to "add a language" with high degree of automation
WER metric normalization rules, dynamically set per language and creatable via LLM through adding script
Automatic .env.example adjustments (maintains config app accuracy)

Still TODO:

  • Currencies
  • Phone numbers (airline only problem)
  • Actually committing the translations (didn't want to burn credits until finalized)
  • Analysis
  • Testing a large variety of models to ensure they actually get the language code they expected (es-MX vs es, for example)

Copy link
Copy Markdown
Collaborator

@katstankiewicz katstankiewicz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you also add ensure_ascii=False to AuditLog save()

Comment thread src/eva/utils/culture.py Outdated
Comment thread scripts/run_text_only.py Outdated
Comment thread scripts/run_text_only.py Outdated
Comment thread src/eva/assistant/pipeline/services.py Outdated
),
audit_log=audit_log,
api_key=params["api_key"],
base_url=params.get("url", ""),
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
base_url=params.get("url", ""),

we don't need a url for openai services

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added this because I was testing a side project (self hosted S2S agent). With any luck we will need this so we can leave or remove up to you

Comment thread scripts/add_culture_data.py Outdated
Comment thread scripts/add_culture_data.py
Comment thread scripts/add_culture_data.py Outdated
Comment thread scripts/add_culture_data.py Outdated
@raghavm243512 raghavm243512 marked this pull request as ready for review May 28, 2026 21:14
de: Hallo! Wie kann ich dir heute helfen?
en: Hello! How can I help you today?
es: ¡Hola! ¿En qué puedo ayudarte hoy?
fr: Bonjour ! Comment puis-je vous aider aujourd'hui ?
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't have fq?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

easy to add, will do. The existing languages are just things I saved from testing because why waste them

- Using parameter values returned by a prior tool response (e.g., reusing an ID or record returned by an earlier lookup in a subsequent call)
- Using reasonable defaults that are standard for the tool (e.g., a date format conversion)
- Standard domain mappings from user-stated information (e.g., "Chicago O'Hare" → "ORD", "Miami" → "MIA"; or other unambiguous geographic, enterprise, or industry-standard mappings present in the agent's domain) — unambiguous mappings are considered grounded
- Standard domain mappings from user-stated information (e.g., "Chicago O'Hare" → "ORD"; "sore throat and fever" → ICD-10 code "J06.9"; or other unambiguous geographic, enterprise, or industry-standard mappings present in the agent's domain) — unambiguous mappings are considered grounded
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand that part, where is it coming from?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just an example of medical stuff. I know we are doing HR and not actual patient care but I figure general examples are always good to include even if not about each domain directly

- **0 (Corrupted)**: One or more corruption types occurred — the user's behavior caused the agent to be evaluated against an incorrect database state.

**Language:**
- Always provide analysis in English
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Always provide analysis in English
- Always provide analysis in English.

"turn_id": <int: the turn number from the Intended Turns>,
"transcript": <string: your transcription of the audio for this turn, use only the audio for this not the intended text>
"explanation": "<string: 1-3 sentence analysis of fidelity for this turn, citing specific intended vs actual mismatches, noting any regions skipped due to interruption flags>",
"transcript": <string: your transcription of the audio for this turn using the appropriate script for the language spoken, use only the audio for this not the intended text>
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm confused on this addition, what do we mean by "appropriate script"?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should write 你好 not ni hao

* Quantities: "twenty dollars" not "$20"
* Years: "twenty twenty-four" not "2024"
- Express numbers in linguistically/culturally appropriate spoken form for the conversation language:
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre"; not "1/15/2024")

* Years: "twenty twenty-four" not "2024"
- Express numbers in linguistically/culturally appropriate spoken form for the conversation language:
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig"; not "3:30 PM")

- Express numbers in linguistically/culturally appropriate spoken form for the conversation language:
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러"; not "$20")

* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
* Years: spoken form appropriate to the language, not "2024"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Years: spoken form appropriate to the language, not "2024"
* Years: spoken form appropriate to the language (e.g. English: "twenty twenty-four"; not "2024")

Comment on lines +91 to +94
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
* Years: spoken form appropriate to the language, not "2024"
Copy link
Copy Markdown
Collaborator

@fanny-riols fanny-riols May 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
* Years: spoken form appropriate to the language, not "2024"
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre"; not "1/15/2024")
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig"; not "3:30 PM")
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러"; not "$20")
* Years: spoken form appropriate to the language (e.g. English: "twenty twenty-four"; not "2024")

Comment on lines +154 to +157
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
* Years: spoken form appropriate to the language, not "2024"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre") not "1/15/2024"
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig") not "3:30 PM"
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러") not "$20"
* Years: spoken form appropriate to the language, not "2024"
* Dates: spoken form matching local convention (e.g. English: "January 15th, 2024"; French: "le quinze janvier deux mille vingt-quatre"; not "1/15/2024")
* Times: spoken form (e.g. English: "three thirty PM"; German: "fünfzehn Uhr dreißig"; not "3:30 PM")
* Quantities: spoken form (e.g. English: "twenty dollars"; Korean: "이십 달러"; not "$20")
* Years: spoken form appropriate to the language ("twenty twenty-four" not "2024")

"centre d’ingénierie du centre-ville",
"ingénierie centre-ville",
"bâtiment ingénierie centre-ville",
"le centre d’ingénierie en ville",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would drop this one as it wouldn't be accurate (translating downtown to town)

Suggested change
"le centre d’ingénierie en ville",

Comment on lines +408 to +409
"downtown",
"engineering center",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we have this alias in English, I think we should also add the translations for these two in other languages.

Also, can you sort translation by language please?

"Main Garage"
"a garage",
"main garage",
"garage a",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't that match with the name already?

"name_aliases": [
"Downtown",
"Engineering Center"
"downtown",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, since we have all these alias in each file, shouldn't we put all the aliases in a separate common file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants