Amazon Bedrock で議事録を作成する

議事録

はじめに

前回、Amazon Transcribe と Amazon Comprehend で”疑似”議事録を作成するという記事をかいたのですが、Amazon Bedrock に議事録を作成する機能があると知り、使用してみたところより精度の高い議事録を作成することができたので紹介させていただきます。

※内容的には前回の記事で作成した関数に新しく Bedrock を追加するというものになっているので、記載が被る部分は一部省略しています。

Amazon Bedrock とは?

Amazon Bedrockは、機械学習(ML)モデルを簡単に構築、管理、デプロイするためのプラットフォームです。生成AIを用いて、様々なシーンで業務を効率化することができます。詳しくは AWS の公式ページをご参照ください。

手順

前回の手順は、

  1. 会議の音声データを S3 へアップロードする
  2. Amazon Transcribe でジョブを作成する
  3. Lambda を使用して議事録を作成する

というものでした。今回も2番までは前回と同様です。
3番の Lambda で使用する関数に手を加え、Bedrock を使用するように修正します。

修正後の関数が以下です。

使うサービスが少なくなったことで、コード自体が前回よりも格段に短くなりました。大きな違いは、やはり Bedrock を用いるようにした部分です。

API の呼び出し方法については公式ページを参考にさせていただきました。
各項目について簡単に説明します。

body

Bedrock に指示を送信するため、Json形式で推論パラメータを含んだデータを作成します。

  • inputText
    • Bedrock へ送信する内容です。指示の内容を記載します。
  • maxTokenCount
    • レスポンスで生成されるトークンの最大値です。デフォルトは 512 ですが、今回は 1000 にしています。使用するモデルにより、最大値が異なります。
  • temperature
    • 低くすると予測が安定し、温度を高くするとより多様でランダムなレスポンスが生成されます。今回はデフォルト値です。
  • topP
    • 「次に来るトークンの選択肢の幅」を調整することができ、小さい値でより狭い範囲から選び、大きい値でより広い範囲から選ぶことができます。今回はデフォルト値です。

response

Bedrock にデータを送信します。接続には Boto3 のクライアントを使用します。
公式ページはこちらです。

  • body
    • 本文です。内容には推論パラメータを含んでいる必要があります
  • contentType
    • リクエストに使用する MIMEタイプです。今回は JSON を指定しています。
  • accept
    • レスポンスに使用される MINEタイプです。今回は JSON を使用しています。
  • modelId
    • 使用するモデル ID です。アカウント内で有効になっているもののみ使用できます。現在は下記三種類です。
      • amazon.titan-text-express-v1
      • amazon.titan-text-lite-v1
      • amazon.titan-text-premier-v1

諸々の項目を決め打ちで設定していた前回とは異なり、生成系AI を都度呼び出すため、レスポンスは一定ではありません。一例ですが、以下のような議事録を作成することができます。

生成された議事録です

前回のものと比べてみます。

前回の投稿で載せ忘れてしまいましたが、AWS Transcribe で会議音声をもとに生成された文章がこちらです。

議事録を見比べてみると、今回作成したものは要点のみがまとまっており、より議事録っぽくなったのではないでしょうか。

コストについて

前回と今回で、関数の実行にかかるコストを計算してみます。
条件は以下です。

  • 実行するのは東京リージョン
  • Lambda 以外の無料利用枠は含まない

料金は各サービスの公式ページを参考にしています。

共通部分

  • AWS Transcribe
    •  1 分ごとに 0.02400USD
    • ジョブの実行時間は2分ほどだったので 2 × 0.02400 = 0.048USD

前回の関数

  • Amazon Translate
    • 1 文字につき 0.000015USD
    • 今回は 662 文字だったので 662 × 0.000015 = 0.00993
    • 関数内で 2 回使用しているので 0.00993 × 2 = 0.01986USD
  • Amazon Comprehend
    • 100 文字を 1 ユニットとして計算され、各リクエストにつき 3 ユニット (300 文字) の最低料金が発生する
    • 662 文字なので 7 ユニット分の料金がかかる
    • 構文解析、エンティティ認識、キーフレーズ抽出、感情分析を使用しているため、それぞれの料金を足す
    • 7×(0.00005+0.0001+0.0001+0.0001) = 0.00245

合計:0.07031 USD

今回の関数

  • Amazon Bedrock
    • 使用しているのは Titan Express
    • 入力トークンが 734 ほど
      • トークン 1000 個あたり 0.000275USD なので 734 / 1000 = 0.734
      • 0.734 × 0.000275 = 0.00020185
    • 出力トークンは実行のたび変わるが平均して 400 ほど
      • トークン 1000 個あたり 0.000825USD なので400 / 1000 = 0.40
      • 0.40 × 0.000825 = 0.00033
    • 0.00020185 + 0.00033 = 0.00053185

合計:0.04853185 USD

今回は会議音声や議事録自体も短いのでどちらも 1 ドル未満の結果でしたが、今回改修した関数を使用した方が若干コストがかからないということがわかりました。

まとめ

Amazon Bedrock は手軽に生成系 AI へ触れられるサービスですが、いざ使ってみようと思うと中々手を出しにくい存在なのではないかなと思っています。アプリに組み込んでみたり、今回のようにSDKを通して利用することで、より身近なサービスになるのではないかなと思います。

最後まで目を通していただきありがとうございました。

投稿者プロフィール

omi
AWS の諸々について、初学者目線から書いていけたらいいなと思っています!