Difyのワークフロー機能(ベータ)を触ってみた

この記事では、Difyのベータ版提供中のワークフロー機能について紹介しています。Difyはノーコードで生成AIを使ったアプリケーションを作成できるオープンソースプロダクトで、AWSやローカルマシン、マネージド版の利用も可能です。ワークフローを作成する際はビジュアルエディタを使用し、ブロックを追加して線で接続することで処理を設計できます。複数ステップや条件分岐も可能で、作成したアプリはAPIやブラウザから利用できます。

広告ここから
広告ここまで

目次

    この記事では、ベータ版提供中のワークフロー機能でどんなことができるかを簡単に紹介します。Difyアドベントカレンダー8日目の記事として作成しました。

    Difyとは

    Difyは生成AIを使ったアプリケーションをノーコードで作成できるオープンソースプロダクトです。実行環境をAWSやローカルマシンに用意することもできますし、マネージド版のDifyを利用することでノーコードSaaSとしても使えます。

    https://dify.ai

    SaaS版Difyは、GitHub or Googleアカウントもしくはメールアドレスにてアカウントが作成できます。カード登録なども不要ですので、かなり気軽に試すことができます。

    Difyでワークフローを作ってみる

    Difyでワークフローを作るには、新しくアプリを作りましょう。テンプレートから簡単にユースケースに応じたアプリを作ることもできますが、今回は機能理解を目的としているので、最初から作成することにします。

    アプリを新しく作る場合、アプリの種類をまず選択します。チャットボットやエージェントも気になるところですが、アドベントカレンダー向けの記事ということで、BETAラベルのついているワークフローを選んでいきましょう。

    種類とアプリ名を設定すると、ノーコードツールらしいビジュアルエディタが表示されます。タスクをブロックとして追加し、シーケンスのように線で接続させることでワークフローを作れる様子ですね。生成AI呼び出しだけでなく、変数処理や外部API呼び出し、IF文なども使える様子でした。

    初めに開始ブロックの設定を行います。ここではどのような入力を受け取るかを設定します。ここで設定した値は、APIやアプリUIのフォームに反映されます。

    生成AIは回答生成以外のブロックも用意されています。例えば「質問分類器」ブロックでは、入力された値がどの種類に該当するかを分類して次のステップに結果を渡してくれます。このブロックを使うことで、例えばサービスに関する質問か、それとも契約に関する質問かなどを分類し、ワークフローを分岐できます。

    シンプルな例として、分類した結果を出力するだけのワークフローを作ってみました。終了ブロックでは、質問分類機ブロックの結果を出力変数に設定します。

    実効ボタンをクリックして、テストしてみましょう。[こんにちは]と入力した場合、出力は「それ以外である」と判定されました。質問文を入れると、「質問文である」と出力されますので、正しく分類されていることがわかります。

    複数ステップのワークフローを作ってみる

    Difyのワークフローでは、先ほどの質問分類器などを使って条件分岐のある複数ステップのワークフローが作れます。例えば以下のワークフローでは、2つのシナリオをサポートしています。1つ目は、質問に対する回答文生成です。もう1つはフィードバックが送られた場合に、そのフィードバック内容とフィードバックがポジティブ・ネガティブ・中立のどれかを判定しています。

    質問文を送信してみましょう。シンプルに「Difyとはどんなサービスですか?」と尋ねてワークフローを実行します。

    すると実行結果は、Difyに関する説明文章が出力されました。これは質問分類からの分岐で、回答文生成のフローに正しく移動できたことがわかります。

    トレースタブを開くと、ワークフローの推移やステップごとの処理時間なども確認できます。もし意図しない生成結果が出た時などは、ここを使って調査しましょう。

    「このツールはとても便利ですね」のようにフィードバックを送信してみると、出力が変わります。今度はフィードバック文章とフィードバック文章の感情判定結果が出力されました。

    このように複数ステップのワークフローや分岐のある作業を簡単に作れるのが、Difyワークフローの特徴です。

    作成したワークフローをAPIやブラウザから利用できるようにする

    作成したアプリを利用するには、公開操作が必要です。アプリ管理画面の公開するボタンから公開しましょう。

    Screenshot

    公開すると、3つの実行方法が提示されます。GUIで操作したい場合は「アプリを実行」を選びましょう。API連携機能として使いたい場合や、定期タスクとして実行したい場合は、それぞれの対応したボタンをクリックすると、案内が表示されます。

    アプリUIはこのような形になっています。公開ツールとして利用できるようにする場合や、セルフホストでアクセス制御をつけて公開する場合などに使えそうです。

    APIの場合は、DifyのREST APIを呼び出す形で実行します。

    公開したアプリ・APIを非公開にする方法

    公開したアプリを無効化することもできます。これはアプリの設定画面側で、APIとアプリそれぞれに設定ボタンがついていますので、必要に応じて操作しましょう。

    触ってみた感想

    生成AIやRAGの仕組みを理解したいという意図で、あまりノーコードツールは触ってきませんでした。しかし実際に触ってみると、なかなか痒い所に手が届くような作りになっていたり、視覚的な形でフローを設計できるのはとても便利だなと感じています。無料である程度使うこともできそうですので、簡単なアプリ開発や個人向けツール・タスクランナーとして使うのも良さそうですね。

    一方でワークフローの設計や不具合が起きた場合の調査などになってくると、やはり生成AIアプリがどのような仕組みで動作するのかなどの理解は必要になるなとも感じています。LangChain / LangSmithなどを触っていた分、トレースや分岐などの仕組みを見ても「あぁ、あれか」とすぐに理解できましたが、これが初めて生成AIを触る人にとってもそうなのかは、まだあまり自信がありません。

    そういった意味では、Difyを触る会などを開催して、みんなでいろいろディスカッションしても面白いかもしれませんね。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark