Dify の kintoneプラグインと RAGチャットを作ってみた

公開日:2025-03-05

注意

本記事は情報提供を目的としており、本記事の内容は無保証、サポートの対象外です。
サポート窓口、問合せ窓口にご質問をいただいても対応いたしかねますのでご了承ください。

こんにちは。 大阪万博2025の開催が近づいてきて、あちこち混雑するのは億劫だなあと感じているうっちーです。

前回のブログ記事 では kintoneDify のワークフロー連携について書かせていただき、また末尾には Dify が「今後プラグインシステムによって外部サービスやカスタム機能を簡単に追加できるようになっていく」らしいということを書かせていただきました。

Dify のプラグイン機能は、 開発者が Dify のプラットフォーム自体を拡張し、特定のニーズに応じたカスタマイズを可能にする仕組み だそうです。 この機能を使用してプラグインを作成すると Dify の中から簡単に kintone データへアクセスできるようになります。

つまり Dify を使って、以下のようなものを誰でも作ることができるようになります。

kintoneのデータをもとに回答する AIチャットを kintoneの画面内に組み込む

作ることができるんですが、いくつか重要な課題があることに気が付きました。 今回はこの課題について書きたいと思います。

警告

Dify のプラグイン機能は、今後実装方法などの詳細が変わる可能性があります。

以下の手順に沿っても本番環境で動作するプラグインを作成できない/機能しない可能性がありますので、ご承知おきください。この記事の内容に関する個別のサポートは行いません。

ツール型プラグインの足場を作る

Dify の プラグインに関するドキュメントは https://docs.dify.ai/ja-jp/plugins/introduction にあります。

プラグインにはいくつかの種類があるようですが、 kintoneデータにアクセスするプラグインを作るには「ツール型」のプラグインとして実装するのが良さそうです。

https://docs.dify.ai/ja-jp/plugins/quick-start/develop-plugins/tool-plugin の手順に沿って、ツール型プラグインを Scaffolding します。

kintoneの認証情報を設定できるようにする

kintone への認証方法として、ここでは例として cybozu.com のドメイン名、アプリID、APIトークンの 3点を設定できるフォームを作ります。

provider/kintone_provider.yaml でフォームを定義し、このフォームに入力された情報を使って「1件のアプリの情報を取得する」の API を叩くことで正しく kintone へアクセスできることを確認するためのコードを provider/kintone_provider.py に実装します。

kintone から複数レコードを取り出すコードを書く

Dify 上で使用できる ツール・ブロックの本体コードを実装していきます。

複数のレコードを取得する」API を使用するコードを tools/kintone_query.py に書き、kintoneより取り出した内容を複数行テキストにまとめます。

また、kintoneレコードを検索する際に指定するクエリ文字列をフォームで入力できるように tools/kintone_query.yaml を作成します。
kintoneへログインするための情報は provider/kintone_provider.yaml で設定したものを使用するようにします。

Dify のフローに組み込んでみる(動作確認)

一通り実装したら .envファイルにローカルデバッグ用の情報を記入し python -m main で起動します。
「認証の設定」画面で cybozu.com のドメイン名、アプリID、APIトークンの 3点を入力し「保存」ボタンをクリックします。


下図のようにフローを組んで「プレビュー」ボタンで動作確認できます。

「LLM」ブロックでは「kintone」ブロックの出力内容をシステムプロンプトへ組み込み、「以下のデータをデータソースとして USER の問いへ回答してください。」とします。

感想と考察

Dify の中から kintone データにアクセスできるようにすると、 kintone に蓄積したデータを活かしながら、様々なサービスや AI と連携させて、生成AIを業務で広く活用する手段になり得ます。

一方で、 APIトークンを埋め込むという形では、現に kintone を操作しているその方が参照できる情報のみをもとにした「アクセス権を踏まえた RAG」ではないということになります。サイボウズが現在ベータテストを行っている「kintone AIアシスタント(仮称)」や 弊社の gusuku Customine を使用した OpenAI の活用例 であれば、kintone操作者に割り当てられている権限を用いて kintoneレコードを参照するため、安心して使用できると言えます。

また、クエリ文字列を指定して kintoneレコードを検索できる仕組みを実装しても、生成AI が kintoneのルールに従ってクエリ文字列を生成できなければ柔軟な絞り込み検索が行えません。生成AI に kintoneのルールを知識として与え、確実に準拠させる手段というところが大事になってくると思います。

投稿者プロフィール

アバター画像
うっちー
kintone認定カイゼンマネジメントエキスパート(KME), アプリデザイン/カスタマイズ スペシャリスト