Skip to content

Conversation

@hotwa
Copy link

@hotwa hotwa commented Aug 27, 2025

Enhanced robustness and user experience of tool calling in FnCallAgent

主要改进内容 / Key Improvements:

  1. 工具调用参数处理增强 / Enhanced tool call parameter handling:

    • 确保传递给MCP工具的参数始终为JSON字符串格式
    • 添加参数类型检查和自动转换机制
    • 防止因参数类型不匹配导致的TypeError异常
  2. 工具调用安全防护 / Tool call safety protections:

    • 添加工具名白名单验证,防止调用未注册的工具
    • 实现function_id去重机制,避免重复调用同一工具
    • 添加function_id缺失时的自增ID生成机制
  3. 异常处理优化 / Exception handling optimization:

    • 统一工具异常处理,将异常对象转换为格式化字符串
    • 添加工具返回值类型检查和自动转换
    • 防止异常对象直接传递到消息内容中
  4. 调用配额和限制控制 / Call quota and limit control:

    • 添加单轮工具调用数量限制(MAX_TOOL_CALLS_PER_TURN)
    • 实现配额用尽时的友好提示消息
    • 防止模型在单轮中触发过多工具调用
  5. JSON参数完整性校验 / JSON parameter integrity validation:

    • 仅在参数是完整可解析的JSON时才触发工具调用
    • 避免阶梯式调用问题
    • 等待流式输出拼接完成后再执行工具调用
  6. 空值安全处理 / Null safety handling:

    • 对out.extra字段进行空值兜底处理
    • 避免NoneType.get()导致的AttributeError异常

这些改进显著提高了FnCallAgent在各种边界情况下的稳定性和可靠性,
特别是在与MCP工具和llama-box后端配合使用时的表现。

These improvements significantly enhance the stability and reliability of FnCallAgent in various edge cases, especially when working with MCP tools and llama-box backend.

Enhanced robustness and user experience of tool calling in FnCallAgent

### 主要改进内容 / Key Improvements:

1. 工具调用参数处理增强 / Enhanced tool call parameter handling:
   - 确保传递给MCP工具的参数始终为JSON字符串格式
   - 添加参数类型检查和自动转换机制
   - 防止因参数类型不匹配导致的TypeError异常

2. 工具调用安全防护 / Tool call safety protections:
   - 添加工具名白名单验证,防止调用未注册的工具
   - 实现function_id去重机制,避免重复调用同一工具
   - 添加function_id缺失时的自增ID生成机制

3. 异常处理优化 / Exception handling optimization:
   - 统一工具异常处理,将异常对象转换为格式化字符串
   - 添加工具返回值类型检查和自动转换
   - 防止异常对象直接传递到消息内容中

4. 调用配额和限制控制 / Call quota and limit control:
   - 添加单轮工具调用数量限制(MAX_TOOL_CALLS_PER_TURN)
   - 实现配额用尽时的友好提示消息
   - 防止模型在单轮中触发过多工具调用

5. JSON参数完整性校验 / JSON parameter integrity validation:
   - 仅在参数是完整可解析的JSON时才触发工具调用
   - 避免阶梯式调用问题
   - 等待流式输出拼接完成后再执行工具调用

6. 空值安全处理 / Null safety handling:
   - 对out.extra字段进行空值兜底处理
   - 避免NoneType.get()导致的AttributeError异常

这些改进显著提高了FnCallAgent在各种边界情况下的稳定性和可靠性,
特别是在与MCP工具和llama-box后端配合使用时的表现。

These improvements significantly enhance the stability and reliability of FnCallAgent
in various edge cases, especially when working with MCP tools and llama-box backend.
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.

1 participant