ChatGPT 4 API、Google Meet、Google Drive&Docs APIを使用した会議議事録生成

Meeting minutes generation using ChatGPT 4 API, Google Meet, and Google Drive & Docs API.

出典:OpenAI DALL-Eによって生成された「Meetで接続された5人の油彩スタイルの絵画。会議の議事録を書くロボット」

ChatGPTを使用して、ミーティングを録音した後に文書で自動的に生成されるミーティング議事録

1. 有用なことを行うためにChatGPTの力を解放する

この技術記事では、ChatGPT 4 APIをGoogle Meet、Google Drive、Google Docs APIと組み合わせて使用して、自動的にミーティング議事録を生成する方法について探求します。

ミーティング中に議事録を取ることは時間がかかる作業であり、話し合われたすべてをキャプチャすることはしばしば困難です。人工知能を使用することで、プロセスを効率化し、何も見逃されないようにすることができます。

Microsoft TeamsやZoomと同様に、Google Meetにはミーティングを記録する機能があります。録音が開始されると、ミーティングのトランスクリプトがGoogleドキュメント形式で生成され、定義されたGoogleドライブ共有フォルダに保存されます。ここではGoogle Meetのトランスクリプトファイルを使用しますが、TeamsやZoomの記録でも同様のトランスクリプトテキストの抽出が可能です。

これには、ユーザーの相互作用と異なるAPI呼び出しを管理するための中心となる単純なWebアプリケーションが使用されます。目的は、事前定義されたGoogleドライブフォルダに保存されているこれらのミーティングトランスクリプトドキュメントのリストを表示することです。ユーザーはこれらの中から1つ選択し、ミーティング議事録の要約とアクションアイテムを期限付きで生成するボタンを押すことができます。また、これら2つの新しいセクションは、ChatGPT APIの結果を含むGoogleドキュメント内に挿入されます。

この記事では、必要な構成を設定し、ChatGPT、Google Drive&Docs APIを管理するために使用されるDash / Pythonアプリケーションコードを理解するための手順について説明します。

私のGitLabへのリンクには、Python / Dashソースコード全体が含まれています。

この記事の終わりまでに、このアプリケーションに対して行うことができるいくつかの制限と改善の考えを共有します。この記事が、会議の議事録を取るよりも価値のあるタスクに集中するための新しいアイデアを見つけるのに役立つことを願っています。

それでは、始めましょう!

ChatGPT + Conversational UX + Dialogflowで認定を取得しましょう。

2. Webアプリケーションの概要

Webアプリケーションは以下のような画面になります。上部には、ユーザーの共有Googleドライブフォルダに存在するトランスクリプトドキュメントのリストが表示されます。このようなドキュメントは、ユーザーがGoogle Meet録音ボタンをトリガーすると、自動的に「Meet Recordings」フォルダに生成されます。

ユーザーはリストからドキュメントを選択することができます。選択されたドキュメントは中央部に表示されます。最後に、ユーザーはミーティング議事録を生成するボタンを押すことができます。

Webアプリケーションのメイン画面(出典:Autor)

ボタンが押されると、会議議事録が自動的に2つの新しいセクションに挿入されます:

「Meeting Summary」セクションは、ミーティングトランスクリプトに基づいた会議の短い説明です。会議の時間に関係なく、簡潔であり続けます。

「Meeting Action Items」セクションは、トランスクリプトに基づいた番号付きのアクションアイテムチェックボックスリストです。期限が分かっている場合は、期限も挿入されます。

結果:会議議事録が選択されたドキュメントに生成されました(出典:Autor)

各番号付きの会議アクションアイテムには、Googleドキュメントにネイティブサポートされているチェックボックスが含まれています。後でチームがアクションリストをフォローアップし、完了した場合にチェックするために使用できます。

3. クイックスタート

以下の手順に従って、私のGitLabにあるコードを編集して実行することができます。しかし、その前にOpenAIに登録してAPIキーを取得する必要があります。また、GoogleドライブとドキュメントAPIもGoogleコンソールで有効化し、Googleサービスアカウントを作成する必要があります。

  • OpenAIのウェブサイトにアクセスし、APIキーを取得
  • Meeting Minutes generation with ChatGPTという私のGitLabプロジェクトにアクセス
  • Google ColabでJupyter Pythonノートブックを編集して、自分のColabフォルダに保存
  • コード内の’OPENAI_API_KEY’の値を自分のAPIキーに置き換える
  • 以下のリンクを使用して、Google DriveとGoogle Doc APIを有効にする
  • 以下のリンクを使用して、Googleサービスアカウントを作成する
  • Google Service Account Key(JSonファイル)をダウンロードして、Colabフォルダに保存する。ファイル名を’credentials_serviceaccount.json’にする(またはコード内の値を変更する)
  • 以前に作成したGoogleサービスアカウント(’Editor’権限)で’Meet Recordings’Googleドライブフォルダを共有する
  • Google Meetミーティングに参加する。トランスクリプトで録画する。ビデオファイルとトランスクリプトドキュメントは、自分の’Meet Recordings’ Googleドライブフォルダに自動的に生成されます。
  • コード内の’GOOGLE_MEET_RECORDING_FOLDER’の値を以前に共有した’Meet Recordings’GoogleドライブフォルダのIDに置き換える
  • ‘Execution’メニューで’Run All’を選択する
  • 数秒後にWebAppが開始されます。Colabノートブックの下部で生成されたURLをクリックして表示します。

アプリケーションは、前のセクションの最初のスクリーンショットのようになります。

4. コードの主要部分を理解する

現時点では、ChatGPT 4 APIはまだベータ版です。コードで使用されているバージョンは、’gpt-4-0314’スナップショットです。現在のバージョンである’gpt-3.5-turbo’に切り替えることもできます。

重要なコードの部分にのみ焦点を当てます。

4.1. Googleドライブの統合/API

Source: Autor

最初の2行のコードは、Googleドライブのルートフォルダーをマウントするために使用されます。主な用途は、クイックスタートセクションで生成されたGoogleサービスアカウントの認証キー(JSonファイル)を取得することです。

次のセクションのコードは、Google Meet Recordingフォルダに保存されているすべてのトランスクリプトドキュメントのファイルリストを取得します。このリストは、後でWebアプリケーション上でこれらのドキュメントを表示するために使用されます。

4.2. Google Meetトランスクリプトドキュメントからテキストを抽出する

Source: Autor

これらの関数は、定義されたGoogleドキュメントIDからテキスト要素を抽出するために使用されます。Google Meetは、’Transcript’という段落を生成します。 ‘Transcript’セクションの場所が識別され、会議議事録を挿入するための出発点として後で使用されます。アプリケーションによって挿入された2つのセクションは、この’Transcript’セクションの直前(および’Attendees’セクションの直後)に配置されます。

4.3. ChatGPTの準備:トランスクリプトテキストのチャンク分割

ChatGPT APIモデルには、リクエストあたりのトークン数に制限があります。 ‘gpt-3.5-turbo’モデルと互換性を保つために、コードで使用される最大値は1リクエストあたり4096トークンです。ただし、’gpt-4’モデルははるかに多くのトークンを処理できることに注意してください。 8kまたは32kモデルも利用可能で、長時間の会議の会議議事録の品質を大幅に向上させるために使用できます。

その結果、Google Meetトランスクリプトドキュメントのテキストを、4000トークンのチャンクに分割し、100トークンのオーバーラップで分割する必要があります。

これらの関数は、後でChatGPT APIで使用されるチャンクのリストを準備して返します。

4.4. ChatGPT APIの使用方法

Source: Autor

この関数は、会議の要約とアクションアイテムを数ステップで生成します。それぞれにChatGPT API呼び出しが行われます。

  • ステップ1:会議のトランスクリプトテキストを要約する。関数は、以前に生成されたチャンクリストを反復処理します。ChatGPTに送信されるコンテンツは、出席者間の記録された会話に基づいています。ChatGPT APIは、次のリクエストで各チャンクに対して呼び出されます:「この会議のトランスクリプトを要約する:<chunk>」
  • ステップ2:ステップ1からの応答(会議の要約)を統合する。ChatGPT APIは、次のリクエストで呼び出されます:「これらの会議の要約を統合する:<ステップ1からのChatGPTの応答>」
  • ステップ3:トランスクリプトから期限のあるアクションアイテムを取得する。関数は、以前に生成されたチャンクリストを反復処理します。ChatGPT APIは、次のリクエストで各チャンクに対して呼び出されます:「提供された会議のトランスクリプトテキストから期限のあるアクションアイテムのリストを提供する:<chunk>」
  • ステップ4:ステップ3からの会議のアクションアイテムを簡潔な番号付きリストに統合する。ChatGPT APIは、次のリクエストで呼び出されます:「これらの会議のアクションアイテムを簡潔な番号付きリストで統合する:<ステップ3からのChatGPTの応答>」

使用されるChatGPT APIの各パラメータ(つまり「温度」)は、コードで文書化されています。

4.5. Google Docs APIの管理使用法:最終会議議事録の挿入

Source: Autor

この関数の目的は、ユーザーが選択したGoogleドキュメントに会議議事録を挿入することです。テキストは「トランスクリプト」段落の前に挿入されます。前の関数で特定された開始インデックスがここで開始点として使用されます。

ここに2つのセクションが挿入されます。「会議の要約」と「会議アクションアイテム」です。

各セクションの挿入は、次の手順で行われます。

  • セクションのタイトルを挿入します(テキストとして、つまり「会議の要約」)
  • そのスタイルを「HEADING_1」に設定し、テキストスタイルを「bold」に設定し、フォントサイズを「14」に設定します
  • セクションの内容を挿入します(これはChatGPT APIの結果から来ます)
  • そのスタイルを「NORMAL」に設定します。「Meeting Summary」セクションには矢印の付いた箇条書きが、Meeting Action Items」セクションにはチェックボックスが挿入されます。

ChatGPT APIから返されたテキストを修正するために、いくつかの「タブ」と「改行」文字も挿入されます。

ヒント:「ar」テーブルは、各テキスト挿入に続いて開始インデックス位置が常に最新になるように、逆順に反復処理されることに注意してください。

4.6.メインのPython Dash Webアプリケーション

Source: Autor

この部分は、ユーザーがインタラクトできるシンプルなWebアプリケーションを構築するために使用されます。基本的には、Googleドライブの共有フォルダに保存されているドキュメントの一覧が表示されます。ユーザーはその中から1つを選択し、画面の中央部に表示されます。ボタンが押されると、会議議事録がこのドキュメントに挿入されます。更新されたドキュメントは結果で更新されます。

このコードはDashフレームワークの上に構築されています。Google Colabノートブック内でも動作します。

各ドキュメントは、専用のiFrame内で表示されます。ドキュメントのリンクは、以前にGoogle Drive APIで取得された「embedLink」値に基づいています。

また、ChatGPT APIの呼び出しとGoogleドキュメント会議議事録の挿入ステップ中に進行状況バーが表示されます。

5. 可能な改善点

ChatGPTを会社内で使用する際の主な課題は、会社が取り組んでいる機密情報が漏洩することです。Samsungでは最近、従業員がChatGPTで会社の秘密を誤って漏洩させたことがありました。

このコードの改善点の1つは、ChatGPT APIを呼び出す前にデータマスキングを実行することです。少なくとも参加者名と機密情報を含む追加のタグ付きフィールドはマスキングされるべきです。ミーティング名にはデータマスキング用のタグが含まれることもあります。例えば、'<Microsoft>とのミーティング’という場合、データ抽出全体で’Microsoft’はマスキングされます。ChatGPT APIから応答を受け取ったら、逆の処理を行う必要があります。Google Docs APIを呼び出す前に、各マスキングされた情報をアンマスキングする必要があります。

このためには、参照テーブルを使用して各フィールドIDとそのクリア値、マスクされた値を保存する必要があります。これらのフィールドは、ChatGPT APIを呼び出す前にマスキングされ、Google Docs APIを使用して会議の議事録のセクションを挿入する際にアンマスキングされます。

6. 最後に

最後まで記事を読んでいただき、ありがとうございます!

ご覧のように、ChatGPT 4 APIとGoogle Drive/Docs APIを組み合わせることは非常に強力で、日々の業務の改善に大きく貢献することができます。

完全なソースコードは私のGitLabで入手できます:ChatGPTによる会議議事録の生成

ChatGPT + Conversational UX + Dialogflowで認定を取得しましょう

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

なぜGPUはAIに適しているのか

GPUは人工知能の希少な地球の金属、さらには金そのものとも呼ばれています。それは、今日の生成的AI時代において基盤となる存...

AI研究

Google DeepMindの研究者たちは、人工汎用知能(AGI)モデルとそれらの前身の能力と行動を分類するためのフレームワークを提案しています

人工知能(AI)と機械学習(ML)モデルの最近の進歩により、人工汎用知能(AGI)の議論は直ちに実際的な重要性を持つ問題にな...

AIニュース

なぜ科学者たちは仮想世界に没頭しているのか

「仮想現実(VR)技術を実験室で使用する科学研究者の数が増えており、しばしば遠くの同僚と簡単に協力したり、単にリモート...

データサイエンス

「AIはほとんどのパスワードを1分以内に解読できますAI攻撃からパスワードを保護する方法」

人工知能(AI)は、次の技術革新の波をもたらしています。AIの能力に魅了される一方で、その潜在的なリスクへの懸念も高まっ...

機械学習

イクイノックスに会いましょう:ニューラルネットワークとsciMLのためのJAXライブラリ

データサイエンスや機械学習コミュニティ内で人気を集めている数値計算メソッドのためのJAXライブラリ、Equinoxに会いましょ...

機械学習

「AIフィードバックループ:AI生成コンテンツの時代におけるモデルの製品品質の維持」

「AIのフィードバックループが、生成型AIの登場に伴い、モデルの品質維持、効率向上、パフォーマンス向上にどのように役立つ...