makeで次の手順として、「HTTP」の「Make a request」を追加。URLには「https://○○○○○.cybozu.com/k/v1/file.json」と入力。「○○○○○」の部分は自分のkintoneを見て入力しよう。「Method」は「GET」、「Headers」の「Item 1」は「Host」と「○○○○○.cybozu.com:443」、「Item 2」は「X-Cybozu-API-Token」と議事録アプリで作成したAPIトークンだ。
下にスクロールし、「Body type」は「Raw」、「Content type」は「JSON(application/json)」と入力。「Request content」のところには、{"fileKey":"{{1.record.音声ファイル.value[].fileKey}}"}」と入力するのだが、注意が必要。
音声書き起こしをするAPIに渡すためにファイルの情報を取得するのだが、そこは左側にポップアップする候補から、「音声ファイル」→「Value」→「fileKey」をクリックして入力すること。
次も、「HTTP」の「Make a request」を追加し、音声書き起こしAPIに取得したファイルを投げる。URLは「https://api.openai.com/v1/audio/transcriptions」、「Method」は「POST」。「Headers」の「Item 1」は「Authorization」で、「Value」は「Bearer」の後ろに半角スペースを空けて、OpenAIのAPIキーを入力する。
「Item 2」は「Content-Type」、「multipart/form-data」と入力。「Body type」は「Multipart/form-data」を選択し、「Fields」の「Item 1」→「Field type」と「Key」は両方とも「File」にする。
「Data」には、前のステップの「Data」を選択。ファイル名は「test.m4a」にする。kintoneにアップロードする添付ファイルも必ず、同じファイル名にしておく必要があるので注意しよう。
「Item 2」は「Field type」が「Text」、「Key」が「model」、「Value」が「whisper-1」と入力して、「OK」をクリックする。
四宮氏のエントリーには、ここまでで「拍子抜けするほど簡単」とあったが、筆者はエラーを起こしまくりだった。
次は要約、OpenAIのモジュールを追加。アクションは「Create a Competion」を選び、OpenAIのAPIキーを入力する。さらにここでは、自分の「Organization ID」も必要なので、OpenAIのサイトからコピペする。
「Select Method」は「Create a Chat Completion」を選択。「Model」は「gpt-3.5-turbo」や「gpt-4」を選ぶ。「Messages」にはプロンプトを入力する。
Whisperが書き起こしたテキストはそのままでは読みにくいので、まずはChatGPTにプロンプトを渡して整形してもらう。その時のデータは、「Data」→「Text」を選択する。上の階層の「Data」を選択しないように注意しよう。プロンプトは以下の通り。
#############################
以下のデータを改行付きで整形し、日本語としておかしい文章は修正をしてください。
{{3.data.text}}
#############################
次も、同じくChatGPT。途中まで同じように設定し、「Messages」の「Role」は「System」、プロンプトは以下のように書く。
#############################
あなたは会社の社員として会議に参加しています。入力された内容を元に以下の形式で議事録を作成してください。
会議タイトル
参加者
■本日の議題
-箇条書き
■議論の内容
-箇条書き
■今後の課題
-箇条書き
#############################
「Item 2」の「Role」は「User」で、プロンプトには「以下の議題の内容の議事録を作成してください」と入力する。前のステップで要約したテキストは、候補から「Choices」→「Message」→「Content」とたどって入力すること。
最後に、kintoneに書き込むので、「HTTP」の「Make a request」を追加し、「URL」に「https://○○○○○.cybozu.com/k/v1/record.json」と入力する。2ステップ目で入力したURLに似ているが、微妙に異なるので注意すること。「record.json」が「file.json」になっていて当然エラーになり、四宮氏に見つけてもらうまでお手上げ状態だった。
続く「Method」は「PUT」、「Headers」の「Item 1」は「Host」と「○○○○○.cybozu.com:443」、「Item 2」は「X-Cybozu-API-Token」と議事録アプリで作成したAPIトークンだ。さらに、「Body type」は「Raw」、「Content type」は「JSON(application/json)」と入力。
「Request content」のところには、以下のように入力する。アプリ番号、レコード番号、4ステップ目で得られた出力、5ステップ目で得られた出力は候補から選択する。
#############################
{
"app":{{1.app.id}},
"id":{{1.record.`レコード番号`.value}},
"record":{
"内容":{
"value":"{{5.choices[].message.content}}"
},
"音声書き起こし":{
"value":"{{4.choices[].message.content}}"}
}
}
#############################
これで準備完了。「Run once」をクリックして、kintoneに音声ファイルを登録してみよう。すぐに、makeのシナリオが走り始め、音声ファイルの取得、音声ファイルの送信と文字起こし、ChatGPTに依頼、その結果を要約、最後にkintoneに書き込み、と処理が進んでいく。
完了したら、kintoneアプリの画面を更新すれば、無事、議事録が完成している。
手間はかかったが、無事動作したときは感動した。今後は、このシナリオをカスタマイズするだけで、いろいろできそう。kintoneにChatGPTが利用できるのは夢が広がる。ChatGPTはプロンプト次第で無限の可能性を秘めている。皆さんもまずはテストでいいので、触れてみることをお勧めする。

この連載の記事
-
第116回
デジタル
kintoneに生成AIのパワーを!カスタマインのChatGPT連携を試してみた -
第115回
デジタル
ChatGPTをkintoneで使える連携プラグイン「Smart at AI for kintone Powered by GPT」を試してみる -
第114回
デジタル
kintoneのデータを添付ファイルごとエクスポート/インポートしたい -
第113回
デジタル
幕張メッセで「サイボウズデイズ2023」開催! 注目ブースを突撃取材 -
第111回
デジタル
kintone×kViewerで飲食店の会員向けページを構築してみた -
第110回
デジタル
kintoneのライトコースで全銀データを作成する方法を聞いてみた -
第109回
デジタル
kintone仲間と出会える! 楽しく学べるkintoneコミュニティの歩き方 -
第108回
デジタル
超絶苦手な請求書作成と発送・送信業務をkintoneで半自動処理させてみた -
第107回
デジタル
krewDataで売上管理のCSVからデータを取り込み店舗ごとの予実管理を自動集計する -
第106回
デジタル
IoTエッジデバイス「Gravio」で取得したCO2濃度をkintoneに記録する - この連載の一覧へ