Skip to content

fix: Function calling with duplicate parameter usage, indicating the …#951

Open
1141520944 wants to merge 1 commit intoTencent:mainfrom
1141520944:feat/fix_duplicate_params
Open

fix: Function calling with duplicate parameter usage, indicating the …#951
1141520944 wants to merge 1 commit intoTencent:mainfrom
1141520944:feat/fix_duplicate_params

Conversation

@1141520944
Copy link
Copy Markdown
Contributor

Pull Request

描述 (Description)

本 PR 针对 Agent 在 Function Calling 场景下出现“同一工具参数重复调用导致思考循环”的问题,新增并接入工具调用去重保护逻辑。
核心行为是在执行工具前,对当前调用与历史 assistant tool calls、以及当前响应中已出现的 tool calls 做参数语义级比对(基于 JSON 规范化),命中重复时不再实际执行工具,而返回系统提示引导模型调整参数或继续基于已有结果推理。

变更类型 (Type of Change)

  • 🐛 Bug 修复 (Bug fix)
  • ✨ 新功能 (New feature)
  • 💥 破坏性变更 (Breaking change)
  • 📚 文档更新 (Documentation update)
  • 🎨 代码重构 (Code refactoring)
  • ⚡ 性能优化 (Performance improvement)
  • 🧪 测试相关 (Test related)
  • 🔧 配置变更 (Configuration change)
  • 🐳 Docker 相关 (Docker related)
  • 🎨 前端 UI/UX (Frontend UI/UX)

影响范围 (Scope)

  • 后端 API (Backend API)
  • 前端界面 (Frontend UI)
  • 数据库 (Database)
  • 文档解析服务 (Document Reader Service)
  • MCP 服务器 (MCP Server)
  • Docker 配置 (Docker Configuration)
  • 配置文件 (Configuration)
  • 其他 (Other): Agent 工具调用执行链路(internal/agent

测试 (Testing)

  • 单元测试 (Unit tests)
  • 集成测试 (Integration tests)
  • 手动测试 (Manual testing)
  • 前端测试 (Frontend testing)
  • API 测试 (API testing)

测试步骤 (Test Steps)

  1. 构造包含重复 tool call 参数的 agent 请求(同一工具、同一参数)并观察执行日志。
  2. 验证重复调用命中后返回系统提示,不再实际执行底层工具。
  3. 复测复杂问题场景,确认不会因同参数反复调用快速耗尽最大工具调用次数。

检查清单 (Checklist)

  • 代码遵循项目的编码规范
  • 已进行自我代码审查
  • 代码变更已添加适当的注释
  • 相关文档已更新
  • 变更不会产生新的警告
  • 已添加测试用例证明修复有效或功能正常
  • 新功能和变更已更新到相关文档
  • 破坏性变更已在描述中明确说明

相关 Issue

Fixes #950

截图/录屏 (Screenshots/Recordings)

无(后端逻辑修复)

数据库迁移 (Database Migration)

  • 需要数据库迁移
  • 不需要数据库迁移

配置变更 (Configuration Changes)

无配置项变更。

部署说明 (Deployment Notes)

无特殊部署要求,按常规后端发布流程即可。

其他信息 (Additional Information)

  • 去重覆盖两类场景:
    1. 与历史 assistant tool calls 重复;
    2. 同一轮 LLM 响应内前序 tool calls 重复。
  • 参数比较采用 JSON 规范化后比对,忽略格式差异(如空白、对象键顺序)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: function calling 参数重复调用,思考出现循环

1 participant