課題のストーリー
Difyワークフロービルダーとして、DifyがOpenAIスタイルの外部ツールコールバックプロトコルをサポートし、ChatflowオーケストレーションとOpenClawローカル実行を組み合わせられるようにしたいと考えています。
これが重要な理由:
- より良い機能の組み合わせ:Chatflowがモデル/ツール戦略をオーケストレーションし、OpenClawがツールをローカルで実行できます。
- コスト効率:タスクのサイズと複雑さによって異なるLLMノードをルーティングし、不要なトークン使用量を削減します。
- 高い柔軟性:各LLMノードは、オプションでOpenClawに面するモデルエンドポイントとして機能できます。
- マルチターンおよび中断/再開された実行におけるツール呼び出し会話の信頼性の向上。
PR #32296で実装された内容:
- chat/advanced_chat APIにツール定義、tool_choice、tool_resultsのサポートを追加しました。
- structured/openclaw_textツール呼び出しモードを追加しました。
- SSEイベントを通じてツール呼び出しチャンクをストリーミングしました。
- メッセージメモリにtool_callsを永続化し、再構築しました。
- 保留中のツールコールバックに対するワークフローの一時停止/再開処理を追加しました。
- LLMノードでの孤立したtool_callsの処理を修正し、TokenBufferMemoryのツールメッセージ解析を改善しました。
- external_tool_callback_enabledやmax_tool_call_roundsなどのLLMノードレベルの制御を追加しました。
期待される成果
- DifyがOpenAI互換の外部ツールコールバックフローのための堅牢なオーケストレーターとして機能できるようになります。
- OpenClawのようなローカルツールエコシステムとの相互運用性が向上します。
- マルチターン、一時停止、再開されたツール呼び出しシナリオで、より予測可能な動作が得られます。
追加のコンテキスト
PR: feat: Add Openai response tool call supper by JAVA-LW · Pull Request #32296 · langgenius/dify · GitHub
フィードバックを求めている点:
- APIの形状と互換性の期待
- ワークフローの一時停止/再開イベントの設計
- クラウドLLMとローカルツール実行を組み合わせるチームからの実世界のユースケース