SuperAPI AI 工具集

language-injection

智能体与模型

查看项目

更新于 10-16 00:31

技能介绍

用途:这是 Data Formulator 项目的开发者规范,指导在修改 Agent 提示词、新增 Agent 端点、处理用户可见后端消息(message_code)或前端 i18n 字符串时,如何正确进行多语言注入。前置要求是先阅读 docs/dev-guides/6-i18n-language-injection.md。

主要能力:架构链路为前端 i18n.language → Accept-Language 请求头 → get_language_instruction() → build_language_instruction()(位于 agents/agent_language.py),并区分 mode="full"(文本密集型 Agent)与 mode="compact"(代码生成型 Agent)。核心模块包括 agents/agent_language.py 的 build_language_instruction() 与 inject_language_instruction(),支持 20 种语言,英语返回空字符串;routes/agents.py 的 get_language_instruction() 与 _get_ui_lang();前端 src/app/utils.tsx 的 fetchWithIdentity() 与 translateBackend()。

使用方式:路由处理器中调用 get_language_instruction(mode="compact") 并拼接为 system 提示后缀;Agent 构造时用 inject_language_instruction(system_prompt, language_instruction),复杂提示可传 marker 参数插入到指定标记前。Python 侧固定字符串不要直接翻译,应返回 message_code(如 agent.emptyDataframe)及可选 message_params,由前端 translateBackend() 翻译,翻译键放在 src/i18n/locales/{en,zh}/messages.json 的 messages.agent.* 下。

新增语言:在 agents/agent_language.py 的 LANGUAGE_DISPLAY_NAMES 添加语言代码与显示名,可选在 LANGUAGE_EXTRA_RULES 添加额外规则,并在 src/i18n/locales/<lang>/ 添加前端翻译,无需改动 Agent 代码。

限制与反模式:禁止使用 os.environ.get("DF_DEFAULT_LANGUAGE")(进程级,破坏多用户)、全局 LLM 客户端拦截器、新建 MessageBuilder 类、提示词中硬编码“回答请使用中文”、后端翻译字典 agent_messages.py,以及 .tsx 中未用 t() 的硬编码英文。