はじめに
kintoneとChatGPTを使った連携例として、手軽にAIチャットボットを開発できる方法を紹介します。
kintoneのレコード一覧画面に独自のチャットボットUIを組込み、さらにkintoneとChatGPT APIを連携させることで、自社サービスやツールにAIを利用したチャットボット機能を導入できます。
例として、営業支援ツール「セールストラッカー」という架空のサービスに組み込まれるFAQチャットシステムを考えます。
セールストラッカーのFAQアプリに蓄積された情報を活用し、ChatGPTを通じてユーザーからの問い合わせに対し、オペレーターの回答をサポートできるしくみを構築します。
ChatGPT含むAIによる応答は、必ずしも正しいものとは限りませんので、ここでのサンプルはあくまで回答をサポートするためのものとお考えください。
完成イメージ
今回のカスタマイズを適用することで、kintoneのレコード一覧画面に、JavaScriptカスタマイズで作成したチャットボットUIを表示させることができます。
次のようにメッセージを入力すると、チャットボットが質問に回答してくれます。
FAQに使うだけでなく、FAQのデータを活用した質問も対応可能です。
下記では、提案内容の例を出してもらっていますが、FAQ内に記載されている特徴もピックアップしています。
注意事項
- 今回の例はあくまでサンプルです。
AIの特徴として、必ずしも正しい答えを導き出せるとは限りません。 - 今回のサンプルでは、プロンプトに情報を記述してそこから情報を回答してもらう方法をとっており、扱えるデータ(トークン)の量に限界があります。
今回のサンプルではFAQアプリのレコード数が30件程度です。
大量のデータを取り扱う場合、別の方法でChatGPTに学習させたりする必要があります。
アプリの準備
FAQアプリを次のように作成します。
今回は、検証用のため、質問フィールドと回答フィールドのみを用意します。
作成日時などは必要に応じて設置してください。
| フィールドの種類 | フィールドコード | 備考 |
|---|---|---|
| 文字列(複数行) | 質問 | FAQの質問を記載するためのフィールドです。 |
| 文字列(複数行) | 回答 | FAQの回答を記載するためのフィールドです。 |
サンプルコード
以下のJavaScriptファイルとCSSファイルを設定画面より指定してください。
指定方法はヘルプの
JavaScriptやCSSでアプリをカスタマイズする
を参考してください。
- JavaScript
- https://unpkg.com/kintone-ui-component@1.12.0/umd/kuc.min.js(kintone UI Component)
- chat.js
後述するコードをJavaScriptファイルとして保存し、アップロードしてください。
- CSSファイル
- chat.css
後述するコードをCSSファイルとして保存し、アップロードしてください。
- chat.css
chat.js
ChatGPTとの連携に必要なAPIキーの取得方法については後述します。
|
|
chat.css
|
|
サンプルコードの解説
以下、コードを具体的に解説します。
ChatGPTを利用するための準備
カスタマイズでChatGPTを利用するために、まずはChatGPTのAPIキーを取得する必要があります。
OpenAI
にアクセスしてアカウントを作成し、そちらでAPIキーを生成できます。
この記事では取得方法の詳細の説明を割愛します。
ChatGPT APIのエンドポイントURLと上記で取得したAPIキーを次のように定義します。
|
|
APIの利用には所定の料金が発生しますのでご注意ください。
詳細は
OpenAI
の「Pricing」を参照してください。
警告
APIキーは秘密情報なので、絶対に公開しないでください。
APIキーの情報が漏洩するとAPIを自由に実行できてしまうため、kintoneのJavaScriptの開発においても慎重に扱ってください。
-
Usage Limit
をかけることで、万が一キーが漏れて多く利用されたり、APIを使いすぎたりすることは避けされますので、ぜひUsage Limitの設定を確認してみてください。
- cybozu develper networkでは、認証情報の秘匿にプラグインを利用する方法を推奨しています。詳しくは以下の記事を確認してください。
kintone UI Componentの利用
今回のサンプルではメッセージ入力欄とボタンにkintone UI Componentを利用しています。
|
|
|
|
kintone UI Componentの詳細については、
kintone UI Component v1
を確認してください。
この記事では説明を割愛します。
メッセージの要素を作成する関数
ユーザーが入力したメッセージやChatGPTから返ってくるメッセージを表示することは何回も繰り返しますので、関数にします。
ここでは、あくまで要素を作り、append(追加)はしません。
作った要素を戻り値として返すまでとします。
|
|
画面との対応はこのようになっています。
ChatGPT APIにリクエストを送信する関数
ChatGPTにリクエストを送信する部分も関数にします。
前提として、今回はChat Completions APIというチャット補完に特化したAPIを利用します。
Chat Completions APIでは一連の会話を先にインプットしておくことで、そのコンテキストに基づいてChatGPTが応答してくれます。
リクエスト・レスポンスの仕様などの詳細は、
ChatGPT APIのリファレンス
を確認ください。
今回のカスタマイズでは、FAQのレコードにある質問をユーザーの発言として、回答をボットの発言として送信するようにしています。
また、チャットボットの役割については、仮想サービスのセールストラッカー向けのFAQボットという文脈で定義していますが、利用用途に応じて定義を変更してください。
FAQの内容、チャットボットの役割を定義したうえで、最後にユーザーが実際にメッセージボックスに入力した質問を付け加えて送ります。
|
|
kintoneイベントハンドラーの定義
今回はレコード一覧画面にチャットを表示していますので、 レコード一覧画面を表示した後のイベント を利用します。
|
|
ここでも、チャットを表示するための要素を作って、設置しています。
画面との対応は次になります。
また、次のコードでは、ボタン押下時(フォーム送信時)の処理を記述しています。
ここでは、先ほど定義したsendChat関数を使ってChatGPTにリクエストを送り、そのレスポンスをcreateMessageElement関数に渡してメッセージを作成し表示することを行っています。
|
|
以上、kintoneとChatGPTを使ってkintoneのFAQチャットシステムを作るためのコードを解説しました。
このコードを適切にkintoneに組み込むことで、ユーザーが質問を入力すると、それに対する回答を自動的に生成して表示するチャットシステムを実現できます。
おわりに
本記事では、kintoneとChatGPTを融合させたFAQチャットシステムの開発手法について紹介しました。
このシステムは、開発者の皆さんが比較的簡単に導入できるため、kintoneとChatGPTを駆使して業務効率化を実現できるというのをご理解いただけたかと思います。
ChatGPTは、高度な自然言語処理能力を有し、人間らしい対話文を生成できます。
これにより、ユーザーは自然なコミュニケーションの流れで情報を得ることができ、卓越したユーザーエクスペリエンスを実現できます。
kintoneとChatGPTを組み合わせて、カスタマーサポートだけでなく、内部の情報共有や社内教育など、多岐にわたるシーンで利用できうると思います。
この記事がAIを使った業務効率化の一例としてご参考になると幸いです。
このTipsは、2023年08月版kintoneで動作を確認しています。
