# Agent conversationnel : une réponse en anglais à une question posée en français

> Symptôme observé sur le widget d'assistance d'un site de recrutement, diagnostic d'une langue non transmise au modèle, correctif appliqué et mesures de prévention.

- Auteur : Clément Hadrot
- Publié le : 2026-04-19
- Mis à jour le : 2026-04-19
- Catégorie : Multilingue
- URL : https://wpmoderne.dev.wordpress-developpement.fr/multilingue/agent-conversationnel-reponse-anglais-question-francais/

## L’essentiel

- Le modèle répond dans la langue dominante de son prompt, pas de la question
- Transmettre la locale visiteur explicitement dans le contexte système
- Vérifier la langue de réponse à chaque appel, pas seulement au déploiement

« What position are you interested in? » a répondu le widget d'assistance du site de recrutement Talenza à une candidate ayant tapé sa question entièrement en français. Le site, pourtant conçu pour un public francophone avec quelques offres traduites en anglais pour des postes internationaux, exposait un agent conversationnel intégré au tableau de bord candidat, connecté à un modèle de langage via une API externe.

Ce symptôme touchait de façon irrégulière environ une conversation sur cinq, sans schéma évident au premier abord : certaines questions en français recevaient une réponse en français, d'autres basculaient en anglais sans raison apparente pour l'équipe qui a d'abord soupçonné un problème de qualité du modèle plutôt qu'un problème de configuration.

## Symptôme : une bascule de langue imprévisible

L'équipe a d'abord tenté de reformuler le prompt système pour insister sur la nécessité de répondre en français, sans effet stable : la bascule vers l'anglais continuait à se produire sur certaines conversations, en particulier lorsque le message de la candidate contenait un terme technique de recrutement en anglais, comme un intitulé de poste international copié depuis une offre.

## Diagnostic : la langue déduite du contenu, pas transmise explicitement

> L'essentiel à retenir : Le modèle répond dans la langue dominante de son prompt, pas de la question ; Transmettre la locale visiteur explicitement dans le contexte système ; Vérifier la langue de réponse à chaque appel, pas seulement au déploiement

L'inspection du code d'intégration a révélé que le prompt système ne précisait la langue de réponse attendue nulle part de façon explicite et invariable : l'instruction reposait sur une phrase générale du type « réponds dans la langue de l'utilisateur », qui laissait le modèle déduire la langue à partir du contenu du message plutôt que de recevoir une consigne ferme indépendante du contenu. Un message contenant plusieurs mots techniques en anglais suffisait à faire pencher cette déduction vers une réponse anglophone.

```
// Avant correctif : la langue est déduite, pas transmise
$system_prompt = "Tu es l'assistant recrutement de Talenza. "
                . "Réponds dans la langue de l'utilisateur.";
```

## Correctif : transmettre la locale du visiteur, sans ambiguïté

Le correctif consiste à récupérer la locale active du visiteur côté WordPress, via `determine_locale()`, puis à l'injecter explicitement dans le prompt système comme une instruction ferme, plutôt que de laisser le modèle déduire la langue à partir du contenu de la question posée :

```
// Après correctif
$locale = determine_locale();
$langue = ( 0 === strpos( $locale, 'en' ) ) ? 'anglais' : 'français';

$system_prompt = "Tu es l'assistant recrutement de Talenza. "
                . "Réponds impérativement en {$langue}, quelle que soit la langue "
                . "des termes techniques présents dans le message de l'utilisateur.";
```

Cette formulation retire toute marge d'interprétation au modèle : la langue de réponse dépend uniquement de la locale du site telle que déterminée par WordPress, jamais du vocabulaire employé par la personne qui pose la question.

## Prévention : tester avec du vocabulaire mixte

Le test le plus révélateur de ce genre de problème ne consiste pas à poser une question entièrement dans une langue, mais à mélanger volontairement des termes techniques d'une autre langue dans la question, exactement comme le fait naturellement une candidate qui copie un intitulé de poste international.

- Transmettre la locale du visiteur explicitement, jamais la laisser déduire du contenu
- Tester avec des messages contenant du vocabulaire technique dans une autre langue que celle attendue
- Vérifier la langue de chaque réponse en conditions réelles, pas uniquement lors du déploiement initial

> Un modèle de langage ne devine pas la langue attendue mieux qu'il ne suit une consigne explicite : autant lui donner la consigne plutôt que de compter sur la déduction.

## En résumé

Une réponse d'agent conversationnel dans la mauvaise langue signale presque toujours une consigne de langue trop vague dans le prompt système, jamais un défaut du modèle lui-même. Transmettre la locale déterminée par WordPress comme une instruction ferme, indépendante du contenu du message, corrige ce type de bascule imprévisible sans nécessiter de changement de modèle.
