Paper

论文速读:API 说错语言时,多语言工具调用为何失灵

5 min read ·

arXiv cs.CL 新论文 When the API Speaks the Wrong Language: Revisiting Post-Training for Multilingual Tool Use 把一个长期被低估的问题放到了台前:LLM agent 的工具调用能力,在多语言场景下并不等同于“会翻译”。一个模型可以流畅回答中文问题,却在工具选择、参数映射、日期格式或单位转换上出错。

这对全球化产品很关键。很多团队的工具描述、函数名、schema、错误消息都是英文,但用户输入可能是中文、日文、德文、阿拉伯语或混合语言。模型需要跨语言理解意图,再把意图落到英文工具接口。这中间有多个断点。

工具调用不是翻译题

假设用户说:

帮我查一下上周五上海到北京最早一班高铁,预算别超过 600 元。

一个普通翻译系统只需要翻译句子。工具调用 agent 需要做更多事:

每一步都可能错。模型即使能把原句翻译成英文,也不代表能正确填工具参数。尤其是相对日期、地名、货币、否定约束和排序条件,都是多语言 agent 的高风险点。

多语言断层在哪里

多语言工具调用常见断层有五类。

第一,工具选择断层。用户语言和工具描述语言不同,模型可能选错工具。比如“开票”在中文业务语境里可能是 invoice,不是 open ticket。

第二,参数槽位断层。模型知道要查车票,却把目的地和出发地写反,或者把预算写到 minPrice

第三,格式断层。日期、时间、电话号码、地址、货币、小数分隔符在不同语言和地区里格式不同。

第四,领域术语断层。企业内部术语、医疗术语、金融产品名不一定能被通用翻译正确处理。

第五,错误恢复断层。工具返回英文错误,用户继续用中文追问,模型需要跨语言解释并修正参数。

这些断层说明,评估多语言 agent 不能只看最终回答是否通顺。最终回答可能很通顺,但工具根本没被正确调用。

为什么英文 benchmark 不够

很多工具调用 benchmark 默认英文。模型在这些 benchmark 上表现好,不代表能处理真实国际化流量。原因有三个。

第一,英文工具名和英文用户请求有词面重合。用户说 “book a flight”,工具叫 bookFlight,模型很容易对齐。中文用户说“订机票”,模型要跨语言映射。

第二,英文日期和数字格式较统一。多语言场景里,“05/06/2026”可能有不同解释,中文“下下周一”也需要本地时间语境。

第三,英文 benchmark 往往忽略混合语言。真实用户会写“帮我 book 下周去 Tokyo 的酒店”,企业员工会混用产品名、英文缩写和中文动词。

因此,多语言工具调用必须单独评估。

开发者的评测设计

一个合格的多语言工具调用评测集,至少要覆盖四层指标。

第一层是 intent accuracy:模型是否理解用户要做什么。

第二层是 tool accuracy:模型是否选对工具。

第三层是 argument accuracy:每个参数是否正确,包括日期、单位、枚举和布尔值。

第四层是 answer faithfulness:最终回答是否忠实于工具结果。

可以用这样的样本格式:

{
  "locale": "zh-CN",
  "input": "把明天下午三点和王丽的会议改到下周二上午十点",
  "expectedTool": "rescheduleCalendarEvent",
  "expectedArgs": {
    "attendee": "王丽",
    "fromTime": "2026-08-15T15:00:00+08:00",
    "toTime": "2026-08-18T10:00:00+08:00"
  },
  "risk": ["relative_time", "person_name", "timezone"]
}

注意,日期需要固定测试时区和当前日期。否则“明天”“下周二”会随运行时间变化,回归测试不可重复。

工具 schema 要本地化吗

函数名不一定要本地化,但 schema 描述应该考虑多语言用户。

不建议把同一个工具复制成 searchTrainTicketsZhsearchTrainTicketsEnsearchTrainTicketsJa。这样会让工具数量膨胀,增加维护成本。更好的做法是保留稳定工具名,在描述和枚举值上提供本地化解释。

例如:

{
  "name": "searchTrainTickets",
  "description": "Search train tickets. Supports multilingual user requests including Chinese city names and relative dates.",
  "parameters": {
    "origin": "Departure city, e.g. Shanghai or 上海",
    "destination": "Arrival city, e.g. Beijing or 北京",
    "date": "ISO date after resolving relative local expressions",
    "maxPriceCny": "Maximum price in CNY"
  }
}

关键是让模型知道字段语义,而不是只看到英文变量名。

翻译前置的利弊

一种常见策略是先把所有输入翻译成英文,再做工具调用。这有优点:可以复用英文 benchmark 和工具描述,系统复杂度低。

但它也有问题。

第一,翻译可能丢失本地格式。地址、姓名、机构名和产品名被错误翻译后,工具参数会错。

第二,翻译可能改变约束强度。比如“尽量不要超过”与“不得超过”不是同一约束。

第三,多轮对话会更复杂。用户原文、英文中间表示、工具结果和中文最终回答之间要保持一致。

更稳妥的策略是:翻译作为可观测中间层,但不要让它成为唯一依据。保存用户原文、翻译文本和最终参数,评测时分别检查。

生产系统加固

第一,对高风险字段做确定性解析。日期、货币、单位、地区代码不要完全依赖模型。模型可以提出候选,最终由解析器和校验器确认。

第二,工具返回错误要本地化。用户用中文发起请求,工具错误如果只返回英文机器码,模型可能解释不清楚。

第三,保留原文。日志里必须保存用户原始输入,不能只保存英文翻译。

第四,按语言统计成功率。不要只看全站工具调用成功率。某些语言可能失败率显著更高。

第五,构建混合语言测试。企业用户很常用“中文动词 + 英文产品名 + 缩写”,这比纯中文更真实。

结论

When the API Speaks the Wrong Language 这类研究提醒我们:多语言 agent 的难点不在于把一句话翻译得漂亮,而在于把跨语言意图稳定落到工具接口。工具调用是语言理解、格式解析、业务规则和执行安全的交叉点。

如果你的 agent 面向全球用户或多语言企业团队,不能只跑英文工具 benchmark。至少要建立按语言、地区和字段风险分类的回归集。工具选择正确、参数正确、结果忠实,三者同时成立,多语言 agent 才算真的可用。

Frequently asked questions

多语言工具调用为什么重要?
真实产品会遇到中文、西班牙语、阿拉伯语等多语言用户,如果 agent 只在英文工具描述上训练,工具选择和参数生成容易出错。
这和机器翻译有什么区别?
机器翻译关注文本等价,多语言工具调用还要求模型把用户意图映射到正确工具、字段、单位、日期和执行约束。
开发者应该如何测试?
应准备多语言回归集,分别检查工具选择、参数 schema、格式归一化、工具失败后的修正,以及最终答案是否忠实于工具结果。
能否先把所有输入翻译成英文?
可以作为基线,但翻译会丢失本地格式、语气和领域术语,最好结合本地化 schema 说明和语言特定测试。
最容易被忽略的问题是什么?
日期、货币、地址、姓名顺序、单位和否定表达最容易出错,因为它们既是语言问题,也是工具参数问题。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.