Amazon Web Services ブログ

生成 AI を活用してプレイヤーやプレスのゲームレビューを分析する

本記事は 2024 年 12 月 12 日に公開された “Using generative AI to analyze game reviews from players and press” を翻訳したものです。

ゲーム開発者やスタジオがゲームを改善するための重要なフィードバックを、プロのゲームレビュアーとプレイヤーの両方が提供しています。プロのレビューは技術やデザインの観点から専門的な分析を提供し、プレイヤーのレビューは実際のゲームプレイで遭遇した問題や体験についてのインサイトを提供します。

ゲーム開発者、ゲームスタジオ、パブリッシャーは、ゲームレビューの急激な増加と多様化によって、レビューの評価に大きな課題を抱えています。こういった変化に効率的に対処して最も重要な問題に注力できるよう、フィードバックを分類し優先順位付けする強固なシステムを開発者は必要としています。これは特に小規模なスタジオにとって課題となっており、限られたスタッフと財務リソースで大量のフィードバックを管理することに苦労しています。

この記事では、Amazon Bedrock を使用してゲームレビューのアップロード、処理、分析、要約を行うことができるサーバーレスソリューションの構築方法を説明します。この例ではゲームレビューに焦点を当てていますが、このアプローチは他の分野のレビューの分析と要約にも応用できます。

ソリューション概要

ゲームレビューの感情分析、分類、要約のソリューションは、以下の 6 つの主要コンポーネントで構成されています:

  1. ユーザーエクスペリエンス
  2. リクエスト管理
  3. 感情分析と分類のワークフローオーケストレーション
  4. データとメタデータの保管
  5. 要約
  6. モニタリング

図 1 は、このソリューションのアーキテクチャを示しています。

図 1: Amazon Bedrock を使用したゲームレビュー分析と要約のためのサーバーレスアーキテクチャの概要

ユーザーエクスペリエンス: このソリューションには、Amazon Simple Storage Service (Amazon S3) でホストされる静的 Web アプリケーションが含まれています。Amazon CloudFront ディストリビューションをデプロイして静的 Web サイトを配信し、オリジンアクセスコントロール (OAC) を実装して Amazon S3 オリジンへのアクセスを制限します。さらに、Amazon Cognito を使用して Web アプリケーションへの不正アクセスを防止します。

リクエスト管理: ほぼリアルタイムな通信のエントリーポイントとして、Amazon API Gateway を使用します。通信は UI アプリケーションや、ソリューションに含まれるほかのワークロードが公開する API との間で行われます。このゲートウェイを通じて、ユーザーはデータの CRUD (作成、読み取り、更新、削除) やワークフローの実行のリクエストを開始できます。API リクエストによって Amazon Web Services (AWS) Lambda 関数が呼びだされ、リクエストの前処理と AWS Step Functions への送信、レビューの取得と要約が行われます。

感情分析と分類のワークフローオーケストレーション: ゲームレビューの感情分析と分類は、各レビューの分析に必要なプロンプトとプロパティを含む JSONL ファイルを作成することから始まります。Amazon Bedrock でホストされている大規模言語基盤モデルの Anthropic Claude 3.5 Sonnet を使用して、ゲームレビューをバッチで処理します。

Amazon Bedrock は、主要な AI 企業が提供する高性能な基盤モデル (FM) を選択できるフルマネージドサービスです。またカスタムモデルを持ち込んで、Amazon Bedrock でシームレスに使用することもできます。お客様の企業の状況に最適なモデルを見つけるため、さまざまなモデルを試すことをお勧めします。

Amazon Bedrock でジョブが完了すると、バッチ分析の結果が S3 バケットに保存されます。その後、S3 バケットから結果を読み取って Amazon DynamoDB に保存し、ユーザーがトピック分類と感情に基づいてゲームレビューを検索・フィルタリングできるようにします。

データとメタデータの保管: このソリューションでは、 アップロードされたゲームレビューと出力結果を Amazon S3 に保存します。Amazon S3 は、耐久性が高く、可用性の高いスケーラブルなデータストレージを低価格で提供します。また、すべての分析とジョブのメタデータの保存に NoSQL データベースサービスの Amazon DynamoDB を使用しています。Amazon DynamoDB は、ユーザーがバッチジョブのステータスやその他の関連情報を効率的に追跡できるようにします。

モニタリング: このソリューションは Amazon CloudWatch Logs にログを保存します。Amazon CloudWatch Logs は開発中も本番運用中も貴重な監視情報を提供します。

前提条件

利用を開始するには、GitHub リポジトリからソリューションをダウンロードし、使用方法の完全な手順を確認する必要があります。

ソリューションのチュートリアル

このチュートリアルでは、ソリューションの 2 つの重要な側面に焦点を当てます:

  1. Amazon Bedrock Batch Inference API を使用して感情分析とトピック分類を行うための AWS Step Functions ワークフロー
  2. ゲームレビューの要約のための Amazon Bedrock Converse API

最初のステップは、図 2 に示すように、ゲームと分析ジョブを作成することです。

図 2: ゲームレビュー分析タスクを管理する Web アプリケーションインターフェース。ゲームの追加、ゲーム詳細の編集、レビューデータの処理や分析を行うジョブの作成などが可能

このソリューションは、ゲームレビューを含んだ CSV ファイルを Web サイトが Amazon S3 に安全に直接アップロードできるように、Amazon S3 の署名付き URL を生成します。CSV ファイルには id と review の列が含まれていることが想定されています。ファイルが Amazon S3 に正常にアップロードされると、ユーザーは分析ジョブを開始できます。

このソリューションは Bedrock Batch Inference API を使用して、大量のリクエストを非同期で効率的に処理します。この機能では、入力データを JSONL 形式で Amazon S3 に保存する必要があります。

Step Functions ワークフローの最初の Lambda 関数は、アップロードされた CSV ファイルを前処理として JSONL ファイルに変換し、Amazon S3 に保存する役割を担います。 Amazon Bedrock のバッチ推論では、JSONL ファイルの各行が以下の例のような特定の形式に従う必要があります:

{
    "recordId": "111111111",
    "modelInput": {
        "temperature": 0.0,
        "top_k": 1,
        "top_p": 1.0,
        "max_tokens": 2000,
        "anthropic_version": "bedrock-2023-05-31",
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": "prompt here"
                    }
                ]
            }
        ]
    }
}

modelInput オブジェクトは、基盤モデル固有の形式に従う必要があります。このソリューションでは、Anthropic Claude 3.5 Sonnet を使用しており、以下の設定パラメータが必要です:

  • Temperature: 応答のランダム性を 0-1 の範囲で決定します。値が高い (0.8 など) とよりクリエイティブな応答が生成され、値が低い (0.2 など) とより一貫性のある出力が生成されます。
  • Top_p: 累積確率分布に基づいてトークンを抽出する際のカットオフを設定します。1 に近い値でよりクリエイティブな応答が、0 に近い値でより予測可能な出力が生成されます。temperature か top_p のいずれかを変更すべきで、両方は変更しないでください。
  • Top_k: 各ステップでモデルが使用できる単語の選択肢を制限するオプションのパラメータです。0-500 の値をとります。
  • Max_tokens: モデルの応答で返されるトークンの最大数を定義します。

ゲームレビューの感情分析とトピック分類を行うため、プロンプトでは以下の 2 種類の分析をモデルに指示します:

  1. レビュー全体の感情を、Positive (肯定的)、Negative (否定的) 、Neutral (中立) のいずれかとして判断する。
  2. レビューで扱われているトピックを次のリストに基づいて分類する: Price (価格)、Sound (音声)、Story (ストーリー)、Support (サポート)、Controls (操作性)、Gameplay (ゲームプレイ)、Graphics (グラフィック)、Multiplayer (マルチプレイヤー)、Performance (性能)。そして、特定された各トピックについて、感情を Positive、Negative、Neutral のいずれかとして判断する。

プロンプトの一部として、ゲームレビューの入力例と期待される出力モデルも提供しています。これは “Few-shot” プロンプティングと呼ばれます。

この構造化された分類アプローチにより、トピックと感情に基づいてさらに包括的な分析を行うことができます。このソリューション例のプロンプトはこちらで確認できます。お客様の企業の状況に合わせて、プロンプトの一部を調整する必要があるかもしれません。

同じ Lambda 関数の次のステップで、AWS SDK for Python (Boto3) を通じて Amazon Bedrock の CreateModelInvocationJob API を使用し、新しいバッチ推論ジョブを作成します。完全なコードはこちらで確認できます。

次に、バッチ推論ジョブのステータスを監視します。これは、Amazon Bedrock の GetModelInvocationJob API を使用してジョブステータスをポーリングする AWS Lambda 関数によって実行されます。コードはこちらで確認できます。

そして、Step Functions ワークフローの最後のステップで、バッチジョブの結果の処理と保存を行います。

まず、指定された Amazon S3 URI から結果を読み込みます。バッチ推論ジョブの出力データは JSONL 形式であるため、このデータをパースし、個々の結果を “GameReviewsTable” と呼ばれる Amazon DynamoDB テーブルのアイテムとして保存します

以下は、Amazon Bedrock のバッチ推論が出力する JSON Lines の例です:

{
    "modelInput": {
        "temperature": 0.0,
        "top_k": 1,
        "top_p": 1.0,
        "max_tokens": 2000,
        "anthropic_version": "bedrock-2023-05-31",
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": "prompt"
                    }
                ]
            }
        ]
    },
    "modelOutput": {
        "id": "uuid",
        "type": "message",
        "role": "assistant",
        "model": "claude-3-sonnet-20240229",
        "content": [
            {
                "type": "text",
                "text": "<result>{\"overall_sentiment\":\"Positive\",\"classifications\":[{\"topic\":\"Gameplay\",\"sentiment\":\"Positive\"},{\"topic\":\"Multiplayer\",\"sentiment\":\"Positive\"}]}</result>"
            }
        ],
        "stop_reason": "end_turn",
        "stop_sequence": null,
        "usage": {
            "input_tokens": 257,
            "output_tokens": 44
        }
    },
    "recordId": "111111111"
}

要約機能

このソリューションでは、ゲームレビューの要約に Amazon Bedrock Converse API を使用しています。その主要な機能の 1 つはツールの呼び出し機能で、これによりモデルは外部システムと連携して、より正確で文脈に即した最新の応答を生成できます。

要約プロセスは、ユーザーが「ゲームプレイのどの側面を改善すべきか?」といったプロンプトを入力することから始まります。Converse API はこのプロンプトを分析し、GamesCRUD API (Lambda 関数) へのリクエストペイロードを作成します。分析においては、感情 (“Negative” など) やトピック分類 (“GamePlay” など) といった GamesCRUD API が必要とするパラメータを自動的に特定します。

分析後、Lambda 関数は生成された JSON ペイロードを使用して API にクエリを実行します。これにより、AI によって判断された感情とトピック分類に基づいて、関連するゲームレビューを取得します。取得されたレビューは大規模言語モデル (LLM) に渡され、関連するフィードバックの包括的な要約が生成されます。

この効率的なプロセスを通して、ユーザーはゲームフィードバックに関して具体的な質問を行い、的確で関連性の高い要約を受け取ることができます。システムがコンテキストを理解し、関連するレビューをフィルタリングする能力は、自身のゲームに関する特定のインサイトを求める開発者にとって特に効果的です。

図 3: “GamePlay” に分類された否定的なゲームレビューの要約レスポンスを表示している UI

結論

このソリューションは、AWS (特に Amazon Bedrock の機能) を活用したゲームレビューの分析と要約のための包括的なサーバーレスアーキテクチャを示しています。このソリューションは、感情とトピックの分類、レビューの要約といった複雑なタスクをサーバーレスパイプラインで処理します。特に、大量のレビューを処理するための Amazon Bedrock Batch Inference API の能力と、ツールの呼び出し機能を使用してインテリジェントな要約を生成する Converse API の能力を強調しています。

最後に、このソリューションを使用する際は注意が必要です。プレイヤーは否定的な感情を表現するためにしばしば皮肉を使用するため、文脈の理解が重要です。一見否定的な表現が、単にゲームプレイ体験の中立的な描写である場合もあります。これらの課題は、人による確認や複数の言語モデルの使用、プロンプトエンジニアリングによって対処できますが、そのような調査は現在の議論の範囲を超えています。

ビジネスの加速についてのご相談は、AWS の担当者にお問い合わせください。

さらに詳しい文献

  1. AWS でのサーバーレスコンピューティング: AWS でのサーバーレスアプリケーション構築のメリットとベストプラクティスについて学びましょう。AWS Lambda、Amazon S3、Amazon DynamoDB など、このソリューションで使用されているサービスが含まれます。
  2. AWS Step Functions ドキュメント: このソリューションで使用されているワークフロー管理サービスの AWS Step Functions について深く理解し、複雑な分散アプリケーションの構築と管理方法を学びましょう。
  3. AWS でのゲーム開発のベストプラクティス: アーキテクチャパターン、セキュリティの考慮事項、パフォーマンスの最適化など、ゲーム開発者向けの AWS 固有のガイダンスとリソースを発見しましょう。
  4. 大規模言語モデルのプロンプトエンジニアリング: このソリューションの感情分析と分類タスクに不可欠な、大規模言語モデルのための効果的なプロンプト作成の技術についてさらに学びましょう。

Tolis Christomanos

Tolis Christomanos

AWS のシニアソリューションアーキテクト。業界での 20 年以上の経験を持ち、幅広いゲームやゲームプラットフォームの開発とアーキテクチャ設計に豊富な経験を有しています。主要なゲームスタジオと緊密に協力し、AWS を最適に活用するための専門的なガイダンスを提供しています。

Jeremy Bartosiewicz

Jeremy Bartosiewicz

AWS のシニアソリューションアーキテクト。様々なロールで 15 年以上のテクノロジー経験を持ちます。コンサルティングのバックグラウンドを活かし、クラウドソリューションを使用して組織の成長を支援するさまざまなプロジェクトに携わっています。AWS で大規模なエンタープライズのお客様ををサポートしており、広告と機械学習の TFC のメンバーです。

Mehran Nikoo

Mehran Nikoo

AWS の Generative AI Go-To-Market Specialist で、イギリスとアイルランドの生成 AI 市場戦略をリードしています。

Talha Chattha

Talha Chattha

AWS のシニア生成 AI スペシャリスト SA。AI 分野で 10 年以上の経験を持ち、現在は生成 AI ワークロードの本番環境への移行を容易にするプラクティスの確立を支援しています。 Amazon Bedrock のエキスパートであり、EMEA 全域のお客様をサポートしています。

翻訳は、ソリューションアーキテクトの三尾が担当しました。