公開日:2025-03-05
こんにちは。 大阪万博2025の開催が近づいてきて、あちこち混雑するのは億劫だなあと感じているうっちーです。
前回のブログ記事 では kintone と Dify のワークフロー連携について書かせていただき、また末尾には Dify が「今後プラグインシステムによって外部サービスやカスタム機能を簡単に追加できるようになっていく」らしいということを書かせていただきました。
Dify のプラグイン機能は、 開発者が Dify のプラットフォーム自体を拡張し、特定のニーズに応じたカスタマイズを可能にする仕組み だそうです。 この機能を使用してプラグインを作成すると Dify の中から簡単に 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のルールを知識として与え、確実に準拠させる手段というところが大事になってくると思います。
投稿者プロフィール

最新の投稿
hack-tips2025年3月5日Dify の kintoneプラグインと RAGチャットを作ってみた
aws2025年2月19日kintone から Dify を通してメールを送ってみよう
kintone2025年1月15日kintoneと生成AI(Claude)のちょっとイイ関係
community2022年6月14日kintone Café 高知 Vol.16 / SORACOM UG四国+初心者