自社用API・自作APIをDifyに連携の検証(カスタムツール版)
自社用API・自作APIをDifyと連携を行いたい場合、
主に
1.検索機能を「カスタムツール」として登録し、ノードとして使用する
2.ノードの「HTTPリクエスト」を使用する
の方法が考えられると思います。
「カスタムツール」を使う方法について、下記の簡易検証を行ってみました。
自社用API・自作APIを用意
- WordPressで商品情報の管理機能を用意
下図のようにカスタム投稿、カスタムフィールド、アイキャッチ画像等を活用してWordPressで商品情報の管理機能を用意してみました。図. WordPressで商品情報の管理機能 - 自社用API・自作APIを用意
この商品情報をAPIで外部からアクセスできるようにしました。
自作プラグイン等での実装も可能と思います。
例えばhttps://《ドメイン》/wp-json/simple-shop/v1/products?《検索条件のクエリストリング》 で検索した場合、下記のような結果が返ってくるようにします。
図. 自社用API・自作APIを用意
Difyのカスタムツールに登録
- OpenAPIスキーマを用意
OpenAPIスキーマは、下図のようなDifyとの連携を ツール → カスタム → カスタムツールを作成する で行う場合に必要になる定義です。
> OpenAPI-Swagger仕様
この定義はChatGPT等のAIチャットサービスに作ってもらうのも手と思います。(現状のAPIでできることを伝える必要はあります。)図. OpenAPIスキーマを用意 OpenAPIスキーマがエラーなく反映されると、下図のように「利用可能なツール」の枠が表示されます。
図. OpenAPIスキーマの反映 - 「利用可能なツール」枠内のテストで、実際の検索のテストが可能になっています。
図. OpenAPIスキーマのテスト
Difiのチャットフローへの反映
- 実装の目的を設定
Difiのチャットフローで、下記のような画面をユーザーに提供し、
商品名や価格で検索をしてもらって、個別の商品へのリンクへの誘導を目的としてみます。
その際に、商品の情報は上記で用意をしていた商品情報をAPIで引っ張ってくることとします。図. チャットフローの目標イメージ - Difiのチャットフローへの反映
チャットフローへの反映は、概略としましては下記のように反映してみました。- 「パラメタ抽出」のノードで「ツールからインポート」をクリックして、カスタムツールを選択して読み込む → 定義していたパラメータが自動で表示される
- 実際の検索を行う「カスタムツール」をノードとして反映
- 「パラメタ抽出」の「タイトル」「価格の下限」「価格の上限」を「カスタムツール」と紐付ける
- 「パラメタ抽出」の指示枠で、LLMに対する指示出しを反映
- 「カスタムツール」の検索結果を「コード実行」でレスポンスデータを分解し、ユーザーに検索結果として回答
図. チャットフローのイメージ - アプリを実行
Difyの画面右上の「公開する」をクリック後に、「更新を公開」をクリックします。
その後に「アプリを実行」をクリックします。図. アプリを実行 - アプリの動作確認
実行されたアプリを確認します。
この簡易検証での課題は、同じ検索語でも結果が変わる場合があります。
要因としては「パラメタ抽出」で検索機能に渡すパラメタを作る処理にLLMの力を借りている部分が影響しており、改善箇所がある認識です。図. アプリの動作確認