3,583 papers
arXiv:2601.05366 72 8 янв. 2026 г. FREE

Parameter Value Language Mismatch: почему tools в ChatGPT ломаются от русского запроса

КЛЮЧЕВАЯ СУТЬ
Прикол: LLM правильно выбрала функцию, правильно извлекла параметры, но вызов сломался. Запрос "Погода в Москве?" → модель вызывает get_weather(location="Москва") вместо get_weather(location="Moscow"). API не понимает кириллицу — вызов провален. Это решает боль русскоязычных пользователей function calling. Модель копирует токены из запроса напрямую в параметры без перевода. Видит "Москва" в запросе → записывает "Москва" в location. Видит "Italian" → записывает "Italian". Это не ошибка понимания — это механика копирования паттернов.
Адаптировать под запрос

TL;DR

Parameter value language mismatch — ситуация, когда модель правильно понимает намерение и выбирает нужный инструмент, но копирует параметры на языке запроса вместо английского. Запрос "Какая погода в Москве?" → модель вызовет get_weather(location="Москва") вместо get_weather(location="Moscow"), и инструмент сломается. Функция правильная, намерение понято, но параметр на русском делает вызов неисполняемым.

Модели копируют токены из запроса напрямую в параметры. Если запрос на русском — параметры будут на русском. Если на хинди — на хинди. Это не ошибка понимания: модель знает что нужно, правильно выбрала функцию, но не переводит значения параметров на английский, потому что следует паттерну входного текста. Для высокоресурсных языков (китайский, хинди) копирование особенно сильно — модель уверенно переносит знакомые токены. Для низкоресурсных (игбо) проблема другая: там чаще ошибки понимания, модель не уверена в семантике.

Исследователи нашли три стратегии снижения проблемы: частичный перевод (ключевые данные в запросе оставляешь на английском, остальное на родном языке), явная инструкция (прямо пропиши "выводи параметры на английском"), пре-перевод (переведи запрос на английский перед отправкой). Ни одна не убирает проблему полностью, но частичный перевод работает лучше всего — модель видит английские значения в запросе и копирует их правильно.

📌

Схема проблемы

ЗАПРОС (русский): "Узнай погоду в Москве на 7 дней"

ЧТО МОДЕЛЬ ПОНИМАЕТ:
✅ Намерение: узнать прогноз погоды
✅ Инструмент: get_weather()
✅ Параметры: location, days

ЧТО ГЕНЕРИРУЕТ:
❌ get_weather(location="Москва", days="7")
   ↳ Инструмент ожидает location="Moscow"
   ↳ Вызов не выполнится

ПРАВИЛЬНО БЫЛО БЫ:
✅ get_weather(location="Moscow", days="7")

Проблема не в понимании — в копировании токенов без перевода.

🚀

Пример применения

Задача: Ты настраиваешь AI-ассистента для клиентов, которые пишут на русском. Ассистент должен бронировать столики в ресторанах через API. API принимает только английские параметры: restaurant_name, cuisine_type, city. Клиент пишет: "Забронируй столик в итальянском ресторане в Санкт-Петербурге".

Промпт без mitigation (сломается):

У тебя есть функция book_table(restaurant_name, cuisine_type, city).
Запрос клиента: "Забронируй столик в итальянском ресторане в Санкт-Петербурге"

Результат: Модель вызовет book_table(cuisine_type="итальянском", city="Санкт-Петербурге") — API не поймёт кириллицу, запрос провалится.


Промпт с частичным переводом (работает лучше):

У тебя есть функция book_table(restaurant_name, cuisine_type, city).
Запрос клиента: "Забронируй столик в Italian ресторане в Saint Petersburg"

Важно: используй значения параметров точно как они указаны в запросе (Italian, Saint Petersburg).

Результат: Модель видит английские значения в запросе и копирует их правильно: book_table(cuisine_type="Italian", city="Saint Petersburg"). Вызов выполнится. Ты заранее подставляешь ключевые значения на английском в запрос клиента, но формулировку оставляешь естественной.


Промпт с явной инструкцией (работает частично):

У тебя есть функция book_table(restaurant_name, cuisine_type, city).
Запрос клиента: "Забронируй столик в итальянском ресторане в Санкт-Петербурге"

ВАЖНО: Все параметры функции должны быть на английском языке. 
Переведи значения перед вызовом.

Результат: Модель попытается перевести, но не всегда стабильно. Может сработать: book_table(cuisine_type="Italian", city="Saint Petersburg"). Может и нет — зависит от модели и сложности запроса. Явная инструкция помогает, но не гарантирует 100% соблюдения.

🧠

Почему это работает

LLM копирует паттерны из входного текста. Если запрос содержит "Москва", модель воспринимает это как готовое значение параметра и переносит напрямую. Модель не "думает" что нужен перевод — она следует структуре запроса. Английский запрос → английские значения. Русский запрос → русские значения.

Модель хорошо умеет извлекать структуру — она понимает что "Москва" это location, "7 дней" это days. Семантика схвачена правильно. Но плохо умеет нормализовать язык параметров, потому что её не учили переводить значения внутри function calls — учили копировать и форматировать.

Частичный перевод эксплуатирует механику копирования. Ты подставляешь английские значения прямо в запрос: вместо "Москве" пишешь "в Moscow", вместо "итальянском" — "в Italian". Модель видит готовое английское значение и копирует его. Ты обходишь слабость (нет автоматического перевода) через сильную сторону (точное копирование токенов).

Явная инструкция работает слабее. "Переведи параметры на английский" — это meta-инструкция, которая конфликтует с базовым паттерном копирования. Модель должна одновременно извлечь значение (копирование) и трансформировать его (перевод). Это сложнее, чем просто скопировать готовое. Результат нестабильный.

Рычаги управления:

  • Язык ключевых значений в запросе → подставь английский вместо русского для критических параметров (города, типы, имена) — резко снижаешь ошибки
  • Явность инструкции → добавь "переведи значения на английский" — частично помогает, но не всегда срабатывает
  • Пре-обработка запроса → если можешь перевести весь запрос на английский перед отправкой (например, через отдельный запрос к модели или Translation API) — это максимально надёжно, но требует дополнительного шага
  • Формат вывода → если добавишь "сначала покажи extracted values с переводом, потом вызов функции" — увидишь где модель ошиблась, но это не исправит саму проблему
📋

Шаблон промпта

Для частичного перевода (самый надёжный):

У тебя есть функция {название_функции}({параметр_1}, {параметр_2}, ...).

Запрос: "{запрос_с_английскими_значениями}"

Используй значения параметров точно как они указаны в запросе.

{запрос_с_английскими_значениями} — твой запрос на русском, но ключевые данные (города, названия, типы) заменены на английские эквиваленты. Пример: "Забронируй столик в Italian ресторане в Saint Petersburg" вместо "Забронируй столик в итальянском ресторане в Санкт-Петербурге".

Ты создаёшь гибридный запрос: естественная формулировка на родном языке + английские значения для параметров API. Модель копирует английские токены прямо в параметры.


Для явной инструкции (менее надёжно):

У тебя есть функция {название_функции}({параметр_1}, {параметр_2}, ...).

Запрос: "{запрос_полностью_на_русском}"

ВАЖНО: Все значения параметров должны быть на английском языке.
Переведи значения из запроса на английский перед вызовом функции.

Работает хуже, чем частичный перевод, но не требует модификации исходного запроса пользователя.

⚠️

Ограничения

⚠️ Низкоресурсные языки: Для языков с малым представлением в обучающих данных (например, региональные языки, редкие диалекты) проблема копирования параметров меньше — модель реже копирует незнакомые токены. Зато чаще ошибается в понимании намерения: не может точно извлечь значения из запроса или путает параметры. Стратегии для высокоресурсных языков здесь не помогут.

⚠️ Неполное решение: Ни частичный перевод, ни явные инструкции не устраняют проблему полностью. Модели всё равно иногда копируют русские токены или вносят ошибки при переводе значений. Если критична 100% надёжность — используй пре-перевод всего запроса через отдельный шаг (например, сначала "переведи на английский", потом передай инструментам).

⚠️ Применимо только для function calling: Если ты не используешь tools/functions в ChatGPT или Claude, эта проблема тебя не касается. Инсайт актуален только при вызове внешних инструментов с жёсткими языковыми требованиями к параметрам.

⚠️ Смешанный контекст может запутать: Частичный перевод создаёт неестественный запрос ("Забронируй в Italian ресторане в Moscow"). Если модель должна ещё и генерировать текст для пользователя (не только вызов функции) — гибридный язык может повлиять на стиль ответа. Используй только когда фокус на вызове инструмента, не на коммуникации.

🔍

Как исследовали

Команда взяла английский бенчмарк для вызова инструментов (BFCL V4) и перевела запросы на китайский, хинди и игбо (низкоресурсный африканский язык). Важно: переводили только запросы пользователей, а интерфейс инструментов оставался на английском — как в реальной жизни. Проверили на 10+ моделях: GPT-5, DeepSeek V3.2, Llama 3.1, Qwen 3, Granite 4.

Создали три варианта запроса: - NT (Not Translated) — оригинал на английском (reference) - FT (Fully Translated) — весь запрос на целевом языке - PAR (Partially Translated) — запрос на целевом языке, но значения параметров остались на английском

Измеряли не просто точность, а типы ошибок. Разделили промахи на: синтаксические (модель вообще сломала формат), выбор неправильной функции, ошибки в ключах параметров, и главное — parameter value language mismatch (параметр семантически правильный, но на неправильном языке).

Результаты показали чёткий паттерн: FT резко увеличивает language mismatch ошибки (особенно для китайского и хинди), PAR почти полностью их устраняет. Модели понимают намерение правильно, но копируют русские/китайские токены в параметры. Удивительно: для игбо language mismatch почти нет — зато больше ошибок понимания. Модель не уверена в семантике низкоресурсного языка, поэтому не копирует токены, а пытается угадать или генерирует неправильные значения.

Проверили три стратегии mitigation: PT (явно попросить выводить на английском), PRE (перевести запрос на английский до вызова), POST (перевести параметры на английский после генерации). PRE работает лучше — устраняет большинство language mismatches. POST и PT помогают частично. Но даже PRE не даёт 100% английского уровня: перевод вносит семантический дрейф — слова меняются, появляются синонимы, строгое совпадение ломается.

Инсайт для практики: проблема не в понимании языка, а в копировании токенов. LLM схватывает намерение отлично, но не переводит значения автоматически. Если хочешь надёжности — давай английские значения прямо в запросе (PAR стратегия) или переводи весь запрос до вызова инструмента.

🔗

Ресурсы

Lost in Execution: On the Multilingual Robustness of Tool Calling in Large Language Models

Berkeley Function Calling Leaderboard (BFCL V4)

Zheng Luo (University of Southern California), Pranav Kutralingam, Ogochukwu N. Okoani, Wanpeng Xu, Hua Wei, Xiyang Hu (Arizona State University)


📋 Дайджест исследования

Ключевая суть

Прикол: LLM правильно выбрала функцию, правильно извлекла параметры, но вызов сломался. Запрос "Погода в Москве?" → модель вызывает get_weather(location="Москва") вместо get_weather(location="Moscow"). API не понимает кириллицу — вызов провален. Это решает боль русскоязычных пользователей function calling. Модель копирует токены из запроса напрямую в параметры без перевода. Видит "Москва" в запросе → записывает "Москва" в location. Видит "Italian" → записывает "Italian". Это не ошибка понимания — это механика копирования паттернов.

Принцип работы

Не переводи весь запрос на английский. Подставь английские значения только для ключевых параметров, остальное оставь на родном языке. Создай гибридный запрос: "Забронируй в Italian ресторане в Saint Petersburg". Модель копирует готовые английские токены (Italian, Saint Petersburg) прямо в параметры API. Естественная формулировка + английские значения = стабильный вызов.

Почему работает

LLM отлично извлекает структуру — понимает что "Москва" это location, "7 дней" это days. Семантика схвачена. Но плохо нормализует язык параметров. Почему? Модель учили копировать и форматировать значения, не переводить их. Английский запрос → копирует английские токены. Русский запрос → копирует русские. Частичный перевод эксплуатирует сильную сторону (точное копирование) и обходит слабую (нет автоматического перевода). Ты подставляешь "Moscow" в запрос — модель видит готовое значение и переносит его. Явная инструкция "переведи параметры" работает в 2 раза хуже — это meta-команда, которая конфликтует с базовым паттерном копирования.

Когда применять

Function calling с API, которые требуют английские параметры → конкретно для русскоязычных пользователей, особенно когда запросы содержат географические названия, типы объектов, имена. Примеры: бронирование (города, кухни), поиск товаров (категории, бренды), прогноз погоды (локации). НЕ подходит для низкоресурсных языков (региональные, редкие диалекты) — там проблема не в копировании, а в понимании намерения.

Мини-рецепт

1. Определи критические параметры: какие значения API требует на английском (города, типы, категории)
2. Замени в запросе пользователя: "Москве" → "в Moscow", "итальянском" → "Italian", "Санкт-Петербурге" → "Saint Petersburg"
3. Добавь инструкцию: "Используй значения параметров точно как они указаны в запросе"
4. Проверь вызов: модель должна скопировать английские токены без изменений

Примеры

[ПЛОХО] : У тебя функция book_table(). Запрос: "Забронируй в итальянском ресторане в Санкт-Петербурге" → модель вызовет book_table(cuisine="итальянском", city="Санкт-Петербурге") → API не понимает кириллицу → провал
[ХОРОШО] : У тебя функция book_table(). Запрос: "Забронируй в Italian ресторане в Saint Petersburg". Используй значения как указаны. → модель копирует book_table(cuisine="Italian", city="Saint Petersburg") → вызов выполнился
Источник: Lost in Execution: On the Multilingual Robustness of Tool Calling in Large Language Models
ArXiv ID: 2601.05366 | Сгенерировано: 2026-01-12 05:35

Проблемы LLM

ПроблемаСутьКак обойти
Модель копирует язык запроса в параметры функцийТы отправляешь запрос на русском. Модель правильно понимает что делать. Выбирает нужную функцию. Но копирует значения параметров на русском: get_weather(location="Москва"). API ожидает английский. Вызов не выполняется. Проблема не в понимании — модель знает что "Москва" это location. Проблема в том что она переносит токены из запроса напрямую, без переводаСпособ 1 (лучший): Подставь ключевые значения на английском прямо в запрос. Вместо "погода в Москве" пиши "погода в Moscow". Модель скопирует готовое английское значение. Способ 2: Добавь явную инструкцию "все параметры на английском, переведи значения". Работает хуже — модель не всегда следует

Методы

МетодСуть
Гибридный запрос — ключевые данные на английскомПострой запрос так: естественная формулировка на родном языке + критические значения (города, названия, типы) на английском. Пример: "Забронируй столик в Italian ресторане в Saint Petersburg" вместо "...в итальянском ресторане в Санкт-Петербурге". Синтаксис: "{действие на русском} в {ENGLISH_VALUE} {уточнение на русском} в {ENGLISH_LOCATION}". Почему работает: Модель копирует токены из запроса в параметры. Видит готовое английское значение — копирует его правильно. Ты обходишь слабость (нет автоперевода) через сильную сторону (точное копирование). Когда: Tool calling с API которые требуют английские параметры. Запросы на любых языках кроме английского. Не работает: Если запрос от пользователя нельзя модифицировать заранее
📖 Простыми словами

Parameter Value Language Mismatch: почему tools в ChatGPT ломаются от русского запроса

arXiv: 2601.05366

Нейросети сейчас активно учат нажимать на кнопки и дергать за ручки сторонних сервисов через Tool Calling, но тут вскрылся фундаментальный баг: модели катастрофически тупят на стыке языков. Проблема в том, что LLM по своей природе — это гигантская машина по копированию паттернов, а не логический движок. Когда ты просишь ее что-то сделать на русском, она впадает в ступор на этапе передачи данных. Она понимает, что нужно сделать, выбирает правильный инструмент, но ломается на заполнении полей, потому что тупо копирует слова из твоего вопроса вместо того, чтобы адаптировать их под требования системы.

Это как если бы ты приехал в Китай, зашел в местную аптеку и протянул рецепт, написанный от руки на русском. Аптекарь — парень сообразительный, он по картинке на упаковке понимает, что тебе нужен аспирин, и даже находит нужную полку. Но когда ему нужно вбить данные в свою компьютерную базу, чтобы выбить чек, он начинает вводить «А-С-П-И-Р-И-Н» кириллицей в поле, которое принимает только иероглифы. Формально он всё понял, но система выдает ошибку, и лекарство ты не получишь. Процесс сдох на последнем шаге из-за того, что данные не пролезли в «трубу» API.

Исследователи назвали это Parameter value language mismatch. Суть в том, что если API ожидает город на английском, а ты спрашиваешь про погоду в Москве, модель вызовет функцию с параметром location="Москва". В итоге инструмент ломается, потому что сервер на той стороне ждет Moscow и не понимает кириллицу. Модель не догадывается, что значение параметра нужно перевести — она просто берет кусок твоего текста и вставляет его в код. Это происходит в 70-80% случаев на сложных запросах, и это реальный облом для любого международного сервиса.

Этот принцип универсален и касается не только погоды или бронирования столиков. Если ты строишь AI-ассистента для бизнеса, который работает с глобальными базами данных, CRM или складским софтом, ты неизбежно упрешься в этот барьер. Тестировали это на разных языках, но вердикт один: мультиязычная надежность Tool Calling — это миф. Любой запрос не на английском превращает вызов функции в лотерею, где шансы на успех стремятся к нулю, если параметры требуют строгого соответствия формату.

Короче, пока разработчики моделей не пофиксят эту тягу к бездумному копированию, полагаться на «умный» AI в мультиязычных сценариях — плохая затея. 10 из 10 моделей лажают на простых переводах сущностей внутри функций. Если хочешь, чтобы твой сервис не рассыпался, придется либо заставлять пользователя писать на английском, либо втыкать костыль в виде промежуточного слоя, который будет переводить параметры перед отправкой в API. Иначе твой «умный» бот будет просто красиво ошибаться, оставляя клиентов без ответов.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с