] 用户显示错误: 未知错误: API错误: 400 详细信息: { "error": { "message": "Tool names must be uni...

2026年05月15日 21:37 19.96 秒 success

错误信息

ERROR] 用户显示错误: 未知错误: API错误: 400 详细信息: { "error": { "message": "Tool names must be unique.", "type": "rix_api_e...

AI 解决方案

🌐 错误翻译


原文:Tool names must be unique.
译文:工具名称必须唯一。

🎯 原因分析


根本原因:在调用API时,您传递的请求体(通常包含tools参数)中存在重复的工具名称(tool name)
📍 错误位置:API服务器在解析您的请求参数时,检测到tools数组或对象中定义了多个同名的工具,因此拒绝了请求并返回HTTP 400错误。

💡 解决方案


请检查您构建API请求的代码,特别是构造tools参数的部分,确保每个工具的name字段都是唯一的。

以Python伪代码为例,修复方法如下:

# 错误的示例(存在重复的工具名"search")
tools = [
    {"name": "search", "description": "搜索网络信息"},
    {"name": "calculator", "description": "进行数学计算"},
    {"name": "search", "description": "本地文件搜索"}  # ❌ 重复的名称 "search"
]

# ✅ 正确的修复方案:确保所有工具名称唯一
tools = [
    {"name": "web_search", "description": "搜索网络信息"},      # 修改为唯一名
    {"name": "calculator", "description": "进行数学计算"},
    {"name": "local_file_search", "description": "本地文件搜索"} # 修改为唯一名
]

# 如果工具是动态生成的,添加去重逻辑
tool_names = set()
unique_tools = []
for tool in tools:
    if tool['name'] not in tool_names:
        tool_names.add(tool['name'])
        unique_tools.append(tool)
    else:
        # 可以选择记录日志或自动重命名,例如:
        # tool['name'] = f"{tool['name']}_{counter}"
        print(f"警告:发现重复的工具名 '{tool['name]}',已跳过。")

🛡️ 预防措施


  • 建立命名规范:为工具制定清晰的命名规范(如动作_对象search_webcalculate_math),避免歧义和冲突。

  • 添加预校验逻辑:在构建API请求前,对tools列表进行校验,确保name字段的唯一性。可以封装一个简单的函数来执行此检查。

  • 使用常量管理:将常用的工具名称定义为代码中的常量,避免硬编码字符串带来的输入错误。