はじめに
やること「OpenAI を呼び出してテキストを生成する」を使用すると、OpenAIが開発した生成AIのChatGPTを使用して、テキストを生成することが可能です。
簡単な利用方法としては「OpenAI にメールの例文を考えてもらう」がありますが、ここでは複数のレコードの情報をまとめてOpenAIに渡して、横断的に解析した結果を受け取る方法をご紹介します。
想定するアプリ
今回は例として kintone アプリストアにある「案件管理」アプリを使用します。案件管理アプリには、顧客ごとの見込み時期や確度などが登録されていますので、これをOpenAIを使って分析したいと思います。
ただ、「案件管理」アプリはそのまま使用するとフィールドコードが「文字列__1行_」などとなっているため、以下のように整えておきます。
※フィールド名とフィールドコードは同じものを指定します
もう一つ下準備として、「OpenAIテキスト生成用テンプレート」アプリを用意しておきます。このアプリはテンプレート名、プロンプトだけフィールドを用意しておけば十分です。
※フィールド名とフィールドコードは同じものを指定します
プロンプトの作成
作成した「OpenAIテキスト生成用テンプレート」アプリ内に、後ほど呼び出すためのプロンプト(OpenAIへの命令文)を作成しておきます。
この時、テンプレートとなるレコードは次のように設定しておきます。
レコードの「プロンプト」フィールドに格納している内容は次のようなものです。
# 命令書
あなたはクラウドサービスを開発・提供する会社の営業マネージャーです。
以下の前提条件を使用して、提案中案件の分析をしてください。
# 前提条件
現在の日付は 2018年1月1日です。
案件確度は A,B,C の3段階で評価し、Aランクは受注確度が最も高く、Cランクは受注確度が最も低いことを表します。
# 分析に使用するデータ
以下のデータを分析します。
データは1行が1案件を示しており、
会社名,見込み時期,確度,製品名,ユーザー数,小計
の形式となっています。
$FOR レコード IN @
${レコード.会社名},${レコード.見込み時期},${レコード.確度},${レコード.製品名},${レコード.ユーザー数},${レコード.小計}
$END
見込み時期は「2018-01-01」のように表記し、これは2018年1月1日であることを示します。
小計とはその案件で提示する案件の合計金額(単位:円)を示します。
# 主旨
製品ごとの傾向やユーザー数の大小による違いがあれば知りたいです。
結果には元データを含める必要はありません。簡潔に200文字程度で回答してください。
カスタマイズ
では、ここからは実際のカスタマイズについての説明です。
ボタンを作成する
やること「ボタンをメニュー位置に配置する」、条件「一覧画面を表示した時」でボタンを作ります。
「やること」のパラメータは
場所:レコード一覧メニューの右側
ラベル:OpenAIで分析
追加位置:一番右に追加する
とします。
OpenAIに送信するプロンプトとして使用するテンプレートレコードを取得
やること「キーを指定してレコードを取得する」、条件「ボタンを押した時」を使いボタンを押した時に、まずテンプレートレコードを取得します。
「やること」のパラメータは
取得先アプリ:OpenAIテキスト生成用テンプレート
キーとなるフィールド:テンプレート名
キーの値:案件分析
とします。
分析に使用するレコードを取得
やること「一覧の条件でレコードを全件取得する」、条件「他のアクションの実行が完了した時」を使い、分析に使用するレコードを取得します。
今回は一覧の条件で絞り込んだすべてのレコードを処理対象とするため「一覧の条件でレコードを全件取得する」を使用してますが、「条件を組み立ててレコードを取得する」など様々な方法で取得したレコードをここでは選択可能です。
「条件を組み立ててレコードを取得する」を使用すると、例として製品名が「kintone」のレコードのみを分析に使用するなどができます。
「テンプレートをもとにテキストを生成する」でOpenAIに渡すメッセージテキストを生成する
やること「テンプレートをもとにテキストを生成する」を使い、OpenAIに渡すメッセージテキストを生成します。
「やること」のパラメータは
データレコード:3(「案件管理」アプリから取得したレコード)
テンプレートレコード:2(「OpenAIテキスト生成用テンプレート」アプリから取得したレコード)
テンプレートフィールド:プロンプト
セット先フィールド:指定しない
とします。
実行してよいかダイアログで確認する
やること「確認ダイアログを表示する」を使い、確認ダイアログを表示します。
「やること」のパラメータは
メッセージ入力:
OpenAIを呼び出しますがよろしいですか?
OKボタンの名前:OK
キャンセルボタンの名前:キャンセル
とします。
読み込み中画面を表示する
ダイアログでOpenAIを呼び出して良いことを確認できたので、やること「読み込み中画面を表示する」、条件「確認・入力ダイアログで「OK」を押した時」で読み込み中画面を表示します。
OpenAIを呼び出す
やること「OpenAI を呼び出してテキストを生成する」を使い、テキストを生成します。
「やること」のパラメータは
OpenAI API キー:予め取得しておいたAPIキーを設定します。
言語モデル:GPT-4o
メッセージ:${$4} (「テンプレートをもとにテキストを生成する」の結果を使用)
セット先フィールド(省略可):省略します。
値が返ってきたらダイアログで表示する
テキストが生成されたら、やること「情報ダイアログを表示する」で結果をダイアログ表示します。
「やること」のパラメータは
メッセージ入力:${$7} (OpenAIからの返答)
OKボタンの名前:OK
読み込み中画面を終了する
やること「読み込み中画面を終了する」を使用して読み込み中画面を終了します。
実行してみる
実行した結果、以下のように表示されれば成功です!
おわりに
今回はやること「OpenAI を呼び出してテキストを生成する」を使い、複数のレコードの情報をまとめてOpenAIに渡して、横断的に解析した結果を受け取るカスタマイズを実現しました。
ぜひ、さまざまなメッセージをOpenAIに渡してみて動きを試し、あなたのkintoneにOpenAIのChatGPTをうまく組み込んでみてください。
ご不明点等ございましたら、チャットにてご質問ください。
Customineドキュメントやサポートページもぜひご活用ください。