【kintone × テキスト生成AI】30分で議事録要約アプリを作ってみた

こんにちは。GLASSテクノロジー部の森です。
皆様、テキスト生成AI活用されていますか?

最近はAIの初期の過熱報道も落ち着いて、今度は各社のAIサービスのシェア争いが始まっている印象ですね。先日はChatGTP Plusにプラグインが追加されましたし、Bing AIを使ってみたという声も聞きます。
ChatGPTのOpenAI社はテキスト生成AIのAPIを公開しているので、これを組み込んだサービスも出始めていますね。

そうなると、流行りのテキスト生成AIを社内システム内でも何か活用できないか?と考えたくなります。
そこで今回はkintoneを使って、テキスト生成AIを使った議事録の要約を試してみましたので、ご紹介いたします。

なお、ChatGPTでも議事録の要約は可能ですが、入力した議事録がAIの学習に使われる可能性があります。OpenAI APIを利用した場合はAIの学習には使われませんので、機密情報の漏洩リスクを下げることができます。

本記事の想定読者

  • 社内システムでのAI活用を検討中のエンジニアの方
  • 議事録の機密情報を外部に流出させずに要約したい方
  • kintoneで社内システムを運用し、社内の作業効率化を進めている方

kintoneとOpenAI API keyの準備

タイトルに「30分で」と書きましたが、以下が揃っている前提とします。

  • kintoneを契約済み
  • OpenAI APIのトークンを取得済み

少し試してみたいだけという方は、kintoneは開発者ライセンスを申請すれば無償で利用可能です(本番運用には使えません)

OpenAI APIのAPI keyの取得方法は以下の記事で紹介していますので、まだの方はこちらを参考に取得して下さい。

OpenAI APIは無料枠が付いてきますので、本記事の内容は無償で試すことができます。

kintoneで議事録要約アプリを用意する

環境の準備ができたらkintoneでアプリを作りましょう。

ポータル画面のアプリ欄の「+」ボタンなどからアプリ作成画面に入ります。
※設定>アプリ管理>アプリを作成する でもOK

kintoneアプリストア画面では「はじめから作成」を選択します。

「フォームタブ」でアプリ名を入力後、フォームには以下項目を追加します。

フィールドタイプフィールド名フィールドコード
文字列(複数行)議事録original_text
文字列(複数行)要約summary

OpenAI APIを使って議事録を要約するコードを記述する

以下のコードをjsファイルとして作成します。
apiKeyの箇所はOpenAI APIの管理画面で取得されたkeyに置き換えてください。
お試しなので、コードが雑なのはご容赦下さい。

kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], async (event) => {
    const originalText = event.record.original_text.value;
    const summary = event.record.summary.value;

    if(originalText != "" && (summary === undefined || summary === "")){
        const apiKey = "sk-**********************************";
        const header = {
            "Content-Type":"application/json; charset=UTF-8",
            "Authorization": `Bearer ${apiKey}`,
        };
        const commandText = `以下の文章を100文字以内で要約してください。\n\n === \n\n${originalText}\n\n`
        const body = {
            "model" : "gpt-3.5-turbo",
            "messages": [
                {
                    "role": "user",
                    "content": commandText
                }
            ]
        };

        const rawResp = await kintone.proxy('https://api.openai.com/v1/chat/completions', 'POST', header, body);
        const resp =JSON.parse(rawResp[0]);
        event.record.summary.value = resp.choices[0].message.content;
    }
    return event;
});

kintoneに戻って「設定」タブで JavaScript / CSSでカスタマイズをクリックします。
PC用のJavaScript / CSSファイル > JavaScriptファイル の「アップロードして追加」をクリックして上記jsファイルをアップロードします。
右下「保存」ボタンを押した後、右上「アプリを更新」ボタンでアプリを反映させます。

これで完成です。

kintoneでテキスト生成AIを使って議事録を要約する

早速議事録を要約してみましょう。

議事録アプリ内の「+」ボタンから新規レコードを追加します。
レコード追加画面で議事録フィールドに議事録を貼り付けて、保存ボタンを押すと、
(少し時間がかかりますが)保存完了後に要約フィールドに要約文が保存されているのが分かると思います。

※キャプチャの議事録内容は架空のものです。

後は例外処理や保存処理中のロードスピナーなどを入れたり、議事の日時フィールドを追加したり、お好きにカスタマイズしてみて下さい。

kintoneでOpenAI APIを使う際の注意事項

今回はjsファイル内にAPI keyを記載したので、アプリにアクセスできる利用者にkeyの内容が見えてしまいます。悪用されるリスクもありますので、運用で使われる場合はアプリ利用を信頼できる範囲に限るなど充分留意してください。

まとめ

今回はテキスト生成AIをkintoneに組み込んで活用する方法をご紹介しました。
こういった先進的なサービスのAPIが公開されるのは嬉しいですね。
kintoneもサクッとお試しアプリを作るには向いているので、社内で詳細議論する前にまず動くものを作って試すというのが実現しやすいです。

ちなみにこのアプリでこの記事を要約したのが以下です。まあまあでしょうか?

GLASSテクノロジー部は、kintoneを使用して、OpenAI APIのテキスト生成AIを活用し、議事録の要約を作成しました。OpenAI APIを使用する場合、AIの学習に利用される可能性がありますが、この方法を使用すると、漏洩リスクを抑えることができます。記事では、kintoneでアプリを作成して、JavaScriptコードを追加すると、議事録の要約を生成できると紹介しています。議事録の秘密情報を保護する重要性も述べられています。

皆様も楽しいAI活用ライフを!


GLASSではITエンジニアを募集しています。
ご興味がある方は以下採用ページをご参照ください。

https://glass-inc.net/recruit

GLASSで一緒に働いてみませんか?