功能提案:OpenAI 工具回调协议支持,用于 Chatflow/OpenClaw 集成

问题描述
作为 Dify 工作流构建者,我希望 Dify 支持 OpenAI 风格的外部工具回调协议,以便 Chatflow 编排可以与 OpenClaw 本地执行相结合。

重要性:

  1. 更好的能力组合:Chatflow 可以编排模型/工具策略,而 OpenClaw 在本地执行工具。
  2. 成本效益:根据任务大小和复杂性路由不同的 LLM 节点,减少不必要的 token 使用。
  3. 更高的灵活性:每个 LLM 节点都可以选择作为面向 OpenClaw 的模型端点。
  4. 在多轮以及中断/恢复的运行中,工具调用对话具有更高的可靠性。

PR #32296 中已实现的功能:

  • 在 chat/advanced_chat API 中增加了对工具定义、tool_choice 和 tool_results 的支持。
  • 增加了结构化/openclaw_text 工具调用模式。
  • 通过 SSE 事件流式传输工具调用块。
  • 在消息内存中持久化并重建 tool_calls。
  • 增加了针对待处理工具回调的暂停/恢复工作流处理。
  • 修复了 LLM 节点中孤立 tool_calls 的处理,并改进了 TokenBufferMemory 工具消息解析。
  • 增加了 LLM 节点级别的控制,例如 external_tool_callback_enabled 和 max_tool_call_rounds。

预期成果

  • Dify 可以作为与 OpenAI 兼容的外部工具回调流程的强大编排器。
  • 与类似 OpenClaw 的本地工具生态系统具有更好的互操作性。
  • 在多轮、暂停和恢复的工具调用场景中,行为更可预测。

附加背景
PR: feat: Add Openai response tool call supper by JAVA-LW · Pull Request #32296 · langgenius/dify · GitHub

我正在寻求关于以下方面的反馈:

  1. API 结构和兼容性预期
  2. 工作流暂停/恢复事件设计
  3. 结合云端 LLM + 本地工具执行的团队的实际用例

功能已经实现了,相关代码已经全部开源,可以看看实现效果

【openclaw加入dify自主编排,可以观察龙虾每一步操作】 https://www.bilibili.com/video/BV1GHcSzLE8w/?share_source=copy_web&vd_source=10242135e343fb5da3e6cc7f3773926b