🌀

Dify Trigger(トリガー)機能 実施手順

に公開

Dify Trigger(トリガー) 」機能がクラウド版1.10.0 でリリースされましたので、使い方の手順を理解するため、公式LangGenius社が掲載している Qiita ブログの 「クイックスタート:GitHub PR インテリジェントアシスタント」を再現してみました。

https://qiita.com/DifyJapan/items/d68cf1ab5f2c933bf1f8

GitHub Trigger(Webhooks)プラグインの設定方法について、プラグインの詳細ページに記載がありますが、備忘録として、さらに詳しく手順化してみました。

https://marketplace.dify.ai/plugins/langgenius/github_trigger?source=http%253A%252F%252Flocalhost&theme=system

環境

  • クラウド版
  • Dify バージョン
    • 1.10.0

目的

新しくバージョン1.10.0 でリリースされた「トリガー」機能の使い方を学ぶため

結果

  • GitHub で特定のリポジトリにプルリクエストを作成すると、 要点を Slack に通知する
  • Slack
  • Dify ワークフロー

Trigger(トリガー)機能の概要

公式で以下のように説明がありました。

https://docs.dify.ai/ja-jp/guides/workflow/node/trigger

トリガーは開始ノードの一種で、ユーザーや API 呼び出しによる能動的な開始を待つのではなく、スケジュールに従って、または外部システム(例:GitHub、Gmail、または独自の内部システム)からのイベントに応じて、workflow を自動的に実行できるようにします。
トリガーは、反復タスクの自動化や、workflow をサードパーティアプリケーションと統合して自動的なデータ同期と処理を実現するのに最適です。
1 つの workflow は、並行して実行される複数のトリガーを持つことができます。また、同じキャンバス上に複数の独立した workflow を構築し、それぞれが独自のトリガーで開始することもできます。

トリガーの種類には、以下の3つが実装されております。

  • スケジュールトリガー
    • 指定された時刻または間隔で workflow を実行します。
    • 例:毎朝 9 時に日次売上レポートを自動生成し、チームにメールで送信します。
  • プラグイントリガー
    • トリガープラグインを通じたイベントサブスクリプションにより、外部システムで特定のイベントが発生したときに workflow を実行します。
    • 例:Slack トリガープラグインを通じてチャンネル内の新規メッセージイベントをサブスクライブすることで、特定の Slack チャンネル内の新規メッセージを自動的に分析およびアーカイブします。
  • Webhook トリガー
    • カスタム webhook を介して外部システムで特定のイベントが発生したときにworkflow を実行します。
    • 例:e コマースプラットフォームから注文詳細を含む HTTP リクエストに応答して、新規注文を自動的に処理します。

実施手順

今回は、プラグイントリガーを試しております。

実施手順の全体像は以下です。

  1. Dify のワークフローを開き、Github Trigger プラグインのノードを作成する
  2. GitHub 側の設定
  3. Dify 側のワークフローの設定
  4. 動作確認

1. Dify のワークフローを開き、Github Trigger プラグインのノードを作成する

  • Dify クラウド版のトップページから「最初から作成」→「ワークフロー」を選択して、作成します。
    (アプリ名等は任意の値)

  • 「トリガー」を選びます。

  • 「Github」の「インストール」をクリックします。

  • 「インストール」を押します。

  • 今回の参考ブログに沿って「プルリクエスト」を選択しました。

  • 初期画面は以下です。

2. GitHub 側の設定

セットアップ手順

    1. Difyにプラグインをインストール
    1. 認証戦略を選択(管理者)
    • OAuth(推奨):ユーザーは自分のGitHub IDで認可し、Difyは更新可能なアクセストークンのみ>を保存します。
    • 個人アクセストークン:管理者がWebhook管理権限を付与するPATを貼り付けます;すべてのサブス>クリプションが同じトークンを共有します。
  • 3.(OAuthのみ)GitHub OAuth Appを作成
    • GitHub Settings → Developer settings → OAuth Apps → New OAuth App
      URL: https://github.com/settings/applications/new
    • 設定:
      • Application name: わかりやすい名前(例:「Dify GitHub Trigger」)
      • Homepage URL: DifyコンソールのURL
      • Authorization callback URL: https://<your-dify->host>/console/api/plugin/oauth/callback
    • 生成されたClient IDとClient Secretを取得します。
    • 必要に応じてスコープを調整します;プラグインのデフォルトは read:user admin:repo_hook で、リ>ポジトリ全体へのアクセスなしでWebhook管理を可能にします。
    1. Difyにクレデンシャルを入力(管理者)
    • OAuthの場合:
      • client_id: OAuth Appから。
      • client_secret: OAuth Appから。
      • scope(オプション):追加のGitHub APIが必要でない限り、デフォルトのままにします。
    1. ユーザー:サブスクリプションを作成
      (略)
  • 記載のある https://github.com/settings/applications/new のGitHubのページにアクセスします。以下の通り、公式手順に沿って入力して「Register application」をクリックします。

3. Dify 側のワークフローの設定

  • Dify 側に戻ります。「新しいサブスクリプション」「OAuth経由」をクリックします。

  • 「OAuthで作成」のモーダルウィンドウが表示されるので、以下のように先ほど取得した「クライアントID」「クライアントシークレット」をコピペする。

    ※ 表示された「OAuthで作成」の上部の「OAuthクライアント」の部分にURLがあるので、こちらのURLを利用して、GitHub の リダイレクト先のURLに設定し直すと成功しました。

  • 以下のような承認画面に遷移するので、「 … を承認する」ボタンを押します。

  • 次に、モーダルウィンドウが表示され、以下のように設定して、「作成」ボタンを押します。

    • サブスクリプション名: 任意
    • リポジトリ : 先ほど作成した任意のリポジトリ(publicが表示される)
  • 以下のドロップダウンをクリックして、設定したサブスクリプションを選択します。

  • 他の設定は、ベースブランチのみ「main」にしました。(参考ブログの内容から見える設定のまま)

  • LLMノードは以下のように、こちらも参考ブログの内容をそのまま設定しました。

LLMノードのシステムプロンプト
あなたは GitHub の Pull Request イベントを解析する AI アシスタントです。

以下はイベントのペイロードです:
Action:       {{#(nodeId).action#}}
Pull Request: {{#(nodeId).pull_request#}}
Repository:   {{#(nodeId).repository#}}
Sender:       {{#(nodeId).sender#}}

提供される構造化データのみを使って、次の処理を行ってください:
何が始まったかを特定する(例:新規 PR、更新、push、再オープン、クローズなど)
PR の内容を明確かつ簡潔に要約する。
考えられる次のアクションを提案する。
なるべく丁寧に、レビューアーまたは作者への簡やかな次のステップを示す。
文章はわかりやすい内容とし、プロフェッショナルなトーンを保つこと。

最終的な出力は、短く、よく構造化されたサマリーとしてまとめてください。

4. 動作確認

  • GitHub のリポジトリのトップページを開きます。

  • テスト用のブランチを作成します。(今回は、簡易的なテストのため、GitHubのUI上から実施しています。

  • 任意のファイルを変更して、コミットします。

  • コミットメッセージ等を任意に設定して、コミットします。

  • 「Compare & pull request」をクリックします。

  • 任意の内容を設定して、「Create pull request 」ボタンを押して、プルリクエストを作成します。

  • Slack を見ると、Dify の ワークフローの実行結果が、表示されていることを確認しました。

参考サイト

Discussion