プロジェクトの背景
Dify プラグインエコシステムは、よりシンプルで使いやすいアクセス方法のサポートに取り組んでいます。本稿では Slack を例に、Slack Bot プラグインの開発方法を詳しく説明し、チームメンバーが Slack プラットフォーム内で直接 LLM と対話し、AI サービスの使用効率を向上させるのに役立ちます。 Dify プラグインエコシステムは、よりシンプルで便利なアクセス方法を提供することを目指しています。本稿では Slack を例に、Slack Bot プラグインの開発方法を詳細に解説し、チームメンバーが Slack プラットフォームで直接 AI アプリケーションを使用し、業務効率を向上させるのに役立ちます。 Slack は、自由でオープンなリアルタイムオフィスコミュニケーションプラットフォームであり、豊富な API を備えています。その中でも、イベントベースの Webhook 機能は開発に着手しやすいです。このメカニズムを利用して Slack Bot プラグインを作成します。その原理は下図の通りです。
混乱を避けるため、以下の概念について説明します。原理の概要:
- Slack Bot は Slack プラットフォーム上のチャットボットであり、仮想キャラクターと見なすことができ、チャットで対話することができます。
- Slack Bot プラグインとは、Dify Marketplace 上のプラグインで、Dify アプリケーションと Slack プラットフォームを接続するために使用されます。本稿では、主にこのプラグイン開発について説明します。
- Slack Bot にメッセージを送信 ユーザーが Slack で Bot にメッセージを送信すると、Slack Bot は Dify プラットフォームに Webhook リクエストを送信します。
- メッセージを Slack Bot プラグインに転送 ユーザーが Slack bot と対話する際、メッセージを Dify アプリケーションに転送する必要があります。メールシステムが受信者のメールアドレスを必要とするように、Slack の API を介して Slack Webhook のアドレスを設定し、それを Slack Bot プラグインに入力して接続を確立することができます。
- プラグインがメッセージを受信後、特定の Dify アプリケーションに返す Slack Bot プラグインは Slack リクエストを処理し、Dify 内のアプリケーションに送信します。LLM がユーザーの入力内容を分析し、応答します。
- Dify アプリケーションが応答後、メッセージを Slack Bot に返し、ユーザーに回答する Slack Bot は Dify アプリケーションの応答を取得後、プラグインを介してメッセージを元の経路で Slack Bot に返し、ユーザーが Slack を使用しながら直接 Dify アプリケーションと対話できるようにします。
事前準備
- Dify プラグインスキャフォールディングツール。詳細については、開発ツールの初期化を参照してください。
- Python 環境、バージョン番号 ≥ 3.12。詳細については、Python インストールチュートリアルを参照するか、LLM に完全なインストールチュートリアルを問い合わせてください。
- Slack App を作成し、OAuth トークンを取得する
Webhooks 機能を有効にします。
App を Slack ワークスペースにインストールします。
OAuth トークンを取得し、後続のプラグイン開発に使用します。
1. プラグインの開発
ここから実際のプラグインコーディング作業を開始します。開始する前に、Extension プラグインの開発を読んだか、Dify プラグインを一度開発したことがあることを確認してください。プロジェクトの初期化
以下のコマンドを実行してプラグイン開発プロジェクトを初期化します。extension テンプレートを選択し、Apps と Endpoints の 2 つの権限を付与します。
プラグインが Dify プラットフォームの機能を逆引き呼び出しする方法の詳細については、逆引き呼び出しを参照してください。
1. 設定フォームの編集
このプラグインでは、どの Dify の App を使用して返信するかを指定する必要があり、返信する際には Slack の App token を使用する必要があるため、プラグインフォームにこれらの 2 つのフィールドを追加する必要があります。 group パス以下の yaml ファイルを変更します。例:group/slack.yaml。フォーム設定ファイルの名前は、プラグイン作成時に記入した基本情報によって決まります。対応する yaml ファイルを変更できます。
サンプルコード:
slack.yaml
-
typeフィールドはapp-selectorフィールドとして指定されます。 ユーザーはプラグイン使用時に特定の Dify アプリケーションにアクセスし、メッセージ転送を行うことができます。 -
scopeフィールドはchatフィールドとして指定されます。agent、chatbot、chatflowなどのタイプのアプリのみ使用できます。
endpoints/slack.yaml ファイル内のリクエストパスとリクエストメソッドを変更し、method を POST 方式に変更する必要があります。
サンプルコード:
endpoints/slack.yaml
2. 機能コードの編集
endpoints/slack.py ファイルを変更し、以下のコードを追加します。
2. プラグインのデバッグ
Dify プラットフォームにアクセスし、Dify プラグインのリモートデバッグ接続アドレスとキーを取得します。
プラグインプロジェクトに戻り、.env.example ファイルをコピーして .env に名前を変更します。
python -m main コマンドを実行してプラグインを起動します。プラグインページで、このプラグインがワークスペースにインストールされていることが確認できます。他のチームメンバーもこのプラグインにアクセスできます。
プラグインのエンドポイントを設定
Dify のプラグイン管理ページで、自動インストールされたテストプラグインを見つけ、新しいエンドポイントを作成し、名前、Bot token を入力し、接続するアプリを選択します。
保存後、POST リクエストアドレスが生成されます。
次に、Slack App の設定を完了する必要があります。
- Event サブスクリプションを有効にする
上記で生成されたプラグインの POST リクエストアドレスを貼り付けます。
Slack App が持つべき権限にチェックを入れます。
3. プラグイン効果の検証
コードはself.session.app.chat.invoke を使用して Dify プラットフォーム内の App を呼び出し、app_id や query などの情報を渡し、最後にレスポンスの内容を Slack Bot に返します。python -m main コマンドを実行してプラグインを再起動してデバッグし、Slack Bot が Dify App の応答メッセージを正しく出力できるか確認します。
4. プラグインのパッケージ化(オプション)
プラグインが正常に動作することを確認した後、以下のコマンドラインツールを使用してプラグインをパッケージ化し、名前を付けることができます。実行後、現在のフォルダにslack_bot.difypkg ファイルが見つかります。これが最終的なプラグインパッケージです。パッケージ化の詳細な手順については、ローカルファイルとしてパッケージ化して共有を参照してください。
5. プラグインの公開(オプション)
これで、Dify Marketplace リポジトリにアップロードしてプラグインを公開できます!ただし、公開する前に、プラグインがDify Marketplace への公開の規範に従っていることを確認してください。関連リソース
- プラグイン開発の基本概念 - Difyプラグイン開発の全体像を理解する
- プラグイン開発入門ガイド - ゼロからプラグインを開発する
- Extension プラグインの開発 - 拡張プラグイン開発を理解する
- Dify サービスの逆引き呼び出し - Dify プラットフォームの機能を呼び出す方法を理解する
- App の逆引き呼び出し - プラットフォーム内の App を呼び出す方法を理解する
- プラグインの公開 - 公開プロセスを学ぶ
- Dify Marketplace への公開 - マーケットプレイス公開ガイド
- エンドポイントの詳細定義 - エンドポイントの詳細定義
参考文献
完全な Dify プラグインのプロジェクトコードを確認したい場合は、GitHub コードリポジトリにアクセスしてください。その他、他のプラグインの完全なコードと詳細を確認できます。 さらに多くのプラグインについて知りたい場合は、以下の内容を参照してください。 クイックスタート: プラグインインターフェースドキュメント:- マニフェストファイルによるプラグイン情報の定義 - マニフェスト構造
- エンドポイント - エンドポイントの詳細定義
- 逆引き呼び出し - Dify 機能の逆引き呼び出し
- 共通仕様 - ツール仕様
- モデルアーキテクチャ - モデル
このページを編集する | 問題を報告する