5.8 KiB
DeepSeek — спонтанный переход на китайский
Дата: 2026-09-15 Статус: известный баг модели, официального фикса нет. Решение не принято. Проявление: Кит (Whale) начал отвечать Alex'у на китайском вместо русского.
Симптом
Модель deepseek-chat (провайдер deepseek, наш основной) выдаёт ответ
целиком на китайском, хотя весь диалог — на русском или английском.
Диалог был: коммиты git, английский технический вывод, короткие ответы.
Опять же, баг плавающий: тот же промпт то даёт правильный язык, то нет.
Первопричина (подтверждена)
Модель рассуждает внутри на китайском (это её дефолт — так эффективнее по токенам), а финальный шаг «перевести на язык пользователя» иногда пропускается или сбоит.
Два фактора:
- Мультиязычное reasoning по дизайну. Внутренняя цепочка рассуждений генерируется на китайском намеренно, для эффективности. Перевод обратно не всегда происходит.
- Недетерминированность генерации. Тот же вход иногда даёт английский, иногда китайский. Поэтому ни один фикс не гарантирован.
Промпт игнорируется: в багрепортах отмечено, что модель продолжает на китайском даже после прямой просьбы не переключать язык.
Триггеры
- Короткие технические ответы без явной языковой привязки — самый частый триггер. Формулировка из разбора: «short, context-lacking prompts more likely trigger default reasoning language».
- Большой объём англоязычного вывода (git-логи, diff'ы, термины) — сбивает языковую привязку.
- В нашем system prompt нет жёсткой языковой инструкции: единственное
упоминание — строка 4
SOUL.md:respond in the language you're addressed in — Russian or English. Формулировка мягкая.
Статус в апстриме
Issue открыты, мейнтейнеры не ответили, официального фикса нет:
- DeepSeek-V3 #1226 — Model sometimes responds in Chinese even when the conversation is in English
- DeepSeek-V3 #1443 — Model switches to Chinese despite all English prompts
- DeepSeek-V3 #1463 — DeepSeek responds in Chinese instead of English
Все решения ниже — community workarounds, не официальные.
Способы решения (по возрастанию стоимости)
1. Жёсткая языковая инструкция в SOUL.md — дешёвый, не гарантирован
Заменить мягкую формулировку на явную:
Отвечай только на языке собеседника — русский или английский. Никогда не используй китайский, даже внутри рассуждений. Если сомневаешься — пиши по-русски.
Плюс: правится без кода, SOUL.md редактируется напрямую.
Минус: в багрепортах модель игнорировала и прямые запреты.
Полезно ещё потому, что теперь есть prompt_overrides — можно вынести
формулировку в review/*.md, не трогая Python. См. hermes-agent-improvements.
2. Детектор языка + retry — надёжно, дорого
Программная проверка вывода: если китайский — повтор запроса. Недетерминированность играет в нашу пользу: retry часто даёт правильный язык.
Требует кода в Hermes (перехват ответа, детекция, повтор). Отдельная задача.
3. Смена модели — радикально, эффективно
Claude / GPT следуют языковым инструкциям заметно лучше. Если китайский будет повторяться — вариант.
Открытый вопрос: deepseek-chat выбран сознательно или это дефолт,
который никто не выбирал? Ответ определяет выбор между путями 1+2 и 3.
Что НЕ работает
- Повтор той же просьбы «говори по-английски» — модель игнорирует.
- Опора на мягкую формулировку (
respond in the language you're addressed in).
Связанное
- hermes-whale-system-prompt — где живёт языковая инструкция (SOUL.md, строка 4)
- hermes-agent-improvements — prompt_overrides, способ правки без кода