過去2つほどkintoneとChatGPT連携についての記事を書きましたが、今回は実際に社内で使っている活用例を紹介します。
弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。
プラグイン問い合わせ履歴から記事を作成
ジョイゾーではWebサイトからプラグインに関する質問を受けた際にメールワイズを利用してメールでサポートをしています。
そして、そのメールワイズでのやり取りはすべてkintoneのプラグイン問い合わせ管理アプリにて履歴として管理をしています。
またプラグインに関する疑問についてはナレッジベースのサイトがあり、よく頂く質問に関してはこのナレッジベースを見ていただくことで解決することもできます。
このナレッジベースの記事はプラグイン問い合わせ管理アプリに蓄積されている履歴情報を元に作成をしていますが、履歴を追って、タイトルと内容を書くという作業を人ではなくChatGPTにやってもらい、人間は出来上がった記事を校正してアップするようにすれば作業効率は格段に上がるだろうと考え実装をしてみました。
今回もiPaaSのmakeを使ってノーコードで連携をしています。
makeを活用しkintoneの履歴データをChatGPTで記事化
kintoneの問い合わせ管理アプリにはすでに履歴を管理するテーブルは作ってありますので、ここにChatGPTで作られた記事を登録する複数文字列の「本文」フィールドを追加します。
makeでは以下のように実装をしています。
処理の流れは以下の感じです。
1.Webhookで問い合わせ管理アプリのデータを取得(Webhooks)
2.履歴テーブルの行データをループ処理(Iterator)
2−1.対応者変数を作り、テーブル内の対応者フィールドが空の場合は顧客、ユーザーが入っている場合はサポート担当者をセット(Set valiable)
2−2.「対応者:内容」という形式の一行テキストを生成(Text aggregator)
2−3.結果変数を作り、2−2で作った一行テキストをセット(Set Valiable)
3.問い合わせ内容をChatGPT APIに投げ、記事を生成(Create a Completion)
4.記事内の”(ダブルクオーテーション)を’(シングルクォーテーション)に変換(Replace)
5.記事を問い合わせ管理アプリに更新(Make a request)
ChatGPTには役割として
「あなたは提供しているサブスクサービスのサポート担当者で日々メールや電話で顧客からの質問に対応をしています。」
という指示を与え、インプットとアウトプットとして以下の指示をしています。
「顧客とサポートメンバーとで以下のようなメールでのやり取りを行っています。
このやり取りを元にしてナレッジベースのWebサイトによく有る問い合わせとして記事化させたいです。
顧客とのやり取り履歴を分析して、以下の形式でナレッジベースのタイトルと記事を書いてください。
タイトル:顧客からの質問を抽象化して「〜できますか?」といった質問風に100文字以内で書く
記事:質問文は書かずサポートの回答内容をまとめて2000文字以内で書く」----
<顧客とサポートのやり取り履歴>
顧客とサポートとのやり取りは
顧客:顧客からの内容
サポート:サポート担当からの内容
顧客:顧客からの内容
サポート:サポート担当からの内容
といった形式で生成をします。上記の処理で言う2の部分がそこにあたります。
具体的にはまず、2のIteratorで問い合わせ管理アプリのテーブルフィールドを指定し、2−1で各行の対応者が顧客かサポート担当かを判断する「対応者」変数を用意します。
以下の画面のように「テーブル内の対応者フィールドが空の場合は顧客でユーザーが登録されている場合はサポート担当が書いた内容」という運用ルールにしているのでvalueのところにIF文で対応者フィールドの長さが0であれば”顧客”、0以外は”サポート”という値を「対応者」変数に入れるとしています。
2−2では対応者フィールドと対応内容フィールドを結合させて「対応者:対応内容」という一行文字列に変換をしています。
2−3で「結果」変数を作り、一行文字列に変換された対応者と対応内容の全行データを一つの変数にセットします。
これで問い合わせ管理のテーブルから顧客とサポートのやり取りを「対応者:対応内容」という形式で一つの変数にまとめることができたので、ChatGPTのAPIにデータを投げます。
嬉しいことに先日gpt-4の申請が通ったので精度を上げるべくModelにはgpt-4を選択し、Systemロールとして先程書いた「あなたはサポート担当だよ」という指示を書いています。
続いてUserロールで詳細なインプットとアウトプットの指示を書き、最後に2−3で作った結果変数をセットします。
これで問い合わせ管理の対応履歴をChatGPTに投げてナレッジベース用の記事を生成することができますが、生成された記事の中にダブルクオーテーションが入っているとkintoneに登録するときにエラーとなってしまいました。(JSONの構造がくずれるため)
そこで、記事内のダブルクオーテーションをシングルクォーテーションに変換する処理を入れています。
正規表現でダブルクォーテーションを表す「\”」をPatternに書き、変換文字は「’」でGlobal matchをYesにして記事内すべてのダブルクォーテーションを変換対象とします。最後にTextにChatGPTで生成された記事を指定します。
これでkintoneに更新できる記事ができあがりましたので最後にkintoneの問い合わせ管理アプリのレコードを更新します。
Requestのところだけを見せるとこんな感じで指定しています。
Webhookで受け取ったアプリIDとレコード番号を指定して更新対象のレコードを指示し、ナレッジベース文を格納する本文フィールドに変換した記事内容を指定します。
あとは、kintoneの問い合わせ管理アプリのWebhook設定でmakeで作られたWebhookURLをレコード追加や編集時に実行するよう設定を行います。
ただし、これだけだとレコードを追加や編集する度にmakeでChatGPTが動いてしまいChatGPTの無駄な課金が走ってしまうため、makeでWebhookでデータを受け取った後に問い合せ管理アプリにある「状態」フィールドが完了(問い合わせ対応が完了)で、ナレッジ記事が入る本文フィールドが空だった場合にだけ実行するようフィルタをかけています。
これで改めて以下のテーブルデータがあるkintoneの問い合わせ管理アプリのレコードで状態フィールドが「完了」で本文フィールドが空の状態で保存をしてみるとChatGPTで生成されたナレッジベースの記事が登録されてきます。
これを実装したことでサポートメンバーはただ問い合わせ履歴にデータを登録していくだけでナレッジベースのタイトルと記事案が勝手に生成されていくのでナレッジベースの記事作成作業の時間が大幅に削減されました。
注意点としてはChatGPTのAPIを利用することでデータを学習利用はされないのですが、履歴データの中に顧客が特定されるような個人情報は絶対に入れないよう徹底をしています。
今回開発した連携も設計ができてから実装まで2時間ほどで完了しました。
アイデア次第でkintoneとChatGPTを連携した業務効率化はまだまだ図れると思いますのでみなさんも是非チャレンジしてみてください!
弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。