Dify の開発中の新機能: Human in the Loop、AgentBox、Vibe Workflow

はじめに

Dify の開発は GitHub 上で行われているので、リリースされていない開発中の新機能も、開発中のブランチを手元で何やかやすると動かして試せます。

というわけで、開発が進んでいる機能の中から、おもしろそうなヤツを 3 つさらっと紹介です。

  • Humal in the Loop(HITL)
  • AgentBox
  • Vibe Workflow

いずれも開発中のものを勝手に動かしているだけなので、最終的にリリースされるモノとは大きく異なる可能性があります(さらにいえば、リリースされることも保証されていません)。

とはいえ、Human in the Loop(HITL)は、おそらくまもなく(今日明日にでも)リリースされるでしょう。

Human in the Loop(HITL)

ワークフローの途中で処理をいったん止めて、人間からの入力を待ってから次に進む機能です。続行前に承認を求めたり、入力に応じて処理を分岐させたりできます。たぶん 1.13.0 でリリースされます。

この機能は、ワークフローの編集画面で、あたらしく Human Input ノード を配置すると使えるようになります。こんなイメージです。

試した段階では、人間に入力を求める方法として、次の二つが用意されていました。

  • アプリの実行画面にフォームを直接表示する
  • メールで任意の宛先にフォームの URL を送信する

人間に提示する UI は、上の画面のように、変数を参照してなにかを表示するほか、テキスト入力欄を表示させてユーザからの入力を受け取るようなことも可能です。また、クリックに応じてその後の処理を分岐させられるボタンを定義できます。『続行 / キャンセル』だったり、『処理 A / 処理 B / 処理 C / キャンセル』だったり、便利に使えそうですね。

フォームをアプリの実行画面に直接表示する方法では、下の画面のように、実行中に UI が割り込んで表示される形です。

メールを送るように設定すれば、指定した宛先にはこのようなメールが届きます。メールの件名や宛先、本文は、これもまた変数などを使って自由に記述できます(ただし本文は Markdown フォーマットではなく HTML でベタ書きが必要です)。

アクセスするとこんな感じの画面が開きます。いずれかのボタンで応答することで、完了画面に遷移します。

AgentBox

ひとことでいうと LLM 向けのサンドボックス環境のようなもので、ChatGPT の Code Interpreter をひとまわり自由にした感じのやつです。

サンドボックス環境には、Docker コンテナ、E2B(AI 向けのサンドボックス環境を提供するプラットフォーム)、ローカルホストのいずれかが利用できます。

組み込みで新しいツール Code Interpreter が実装されており、例えば Agent ノードにこのツールを渡すことで、LLM がサンドボックス環境の中で自由に Bash を触ってコマンドやコードを実行できるようになる感じです。

また、ツール経由の実行だけでなく、あたらしく Command ノード も追加され、これ単体でもサンドボックス環境の中で任意のコマンドを実行できるようになります。手書きしてもよいですし、LLM にコマンドを生成させてそれを変数で渡すのももちろんアリです。

サンドボックス環境に Docker コンテナを選択した場合、このコンテナは フローの実行ごと に使い捨てられます。ノードの実行ごとではない のがミソで、つまり、前のノードで何かをインストールしたりファイルを作ったりするコマンドを実行した場合、後のノードでもその状態が維持されていることになります。

コンテナイメージにはデフォルトでは ubuntu:latest が使われますが、LLM が使いそうな言語やパッケージをあらかじめ詰め込んだ dify-agentbox なるイメージ(リポジトリ)が新しく提供されます。これを使うことで、LLM が Playwright だったり PDF 操作系の何やかやだったりを特別な準備なくいきなり使えるようになります。自前でカスタマイズしたイメージを使うのも簡単そうです。

併せて、そもそも LLM ノードが廃止されて Agent ノードに一本化されていたり、プロンプト中に @ キーからサクサクとツールを足せるようになっていたり、会話の内容からパラメータを抽出する処理をツールのパラメータ欄ひとつでできるようになっていたりと、いろいろ変わっている気配があります。最終的にどうなるか楽しみです。

Vibe Workflow

いわゆるバイブコーディングのワークフロー版です。自然言語で指示をすることで、ワークフローが勝手にできあがるようになります。

この機能は、編集画面で Go to Anything を開いたあと、コマンド /banana で起動できます。ばなな。

生成されたワークフローは右側でプレビューされ、いいやつができたらそのまま編集画面に持ち込めます。各ノードの設定(例えば LLM ノードのプロンプト)も含めて生成されるようです。

できあがるワークフローの精度は、指示にもモデルにも強く依存しそうですが、現段階では、ビジネスレベルの要件をフローに落としてもらう機能というよりは、多少はフローの具体的な処理の流れが指示できる状態でたたき台を作ってもらう機能と捉えるくらいがよさそうな感触でした。

おわりに

開発途中の機能を少しだけ紹介しました。開発途中なので当然バグも多いですが、新しい機能を精力的に増やしていく開発方針は個人的には歓迎しており、引き続き実装面でもコミュニティサポート面でもコントリビューションしていきたい気持ちです。

リリースが楽しみですね。HITL はこのエントリを書いている間にあれよあれよとリリース準備が進んでいるので、まもなくみなさんのお手元でも使えるようになるでしょう。

@kurokobo

くろいです。ギターアンサンブルやら音響やらがフィールドの IT やさんなアルトギター弾き。たまこう 48 期ぎたさん、SFC '07 おんぞう、新日本ギターアンサンブル、Rubinetto。今は野良気味。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です