AWS認定資格 WEB問題集&徹底解説
生成AIデベロッパー-プロフェッショナル
問題文と選択肢
- User メッセージに役割設定を書き、質問は System メッセージに、直前のやり取りは Assistant メッセージに格納する
- 会話全体を1つの User メッセージ内にJSON形式でまとめ、instruction・question・previous_reply というフィールド名で管理し、role パラメータ自体は使用しない
- System メッセージに役割設定を、User メッセージに質問を、Assistant メッセージに直前のアシスタントの発言を格納する
- Assistant メッセージに役割設定を、System メッセージに質問を、User メッセージに直前のやり取りを格納する
A. User メッセージに役割設定を書き、質問は System メッセージに、直前のやり取りは Assistant メッセージに格納する
役割設定を User メッセージへ、質問を System メッセージへ置くのは役割が完全に逆です。System は会話全体を通してモデルに守らせたい指示やペルソナ(ここでは「シニアレビュアーとして振る舞う」)を与える場所であり、User はその時々の人間の入力を載せる場所です。
指示と入力が入れ替わると、モデルは「シニアレビュアーとして振る舞う」という文をユーザーの発話として扱い、役割設定がターンをまたいで効かなくなります。
B. 会話全体を1つの User メッセージ内にJSON形式でまとめ、instruction・question・previous_reply というフィールド名で管理し、role パラメータ自体は使用しない
会話全体を 1 つの User メッセージに詰め込み独自のフィールド名で管理する方式は、モデルが「誰の発言か」を構造として認識できなくなるため標準構造から外れます。role による区別があるからこそ、モデルは指示・質問・自身の過去の発言を分けて解釈できます。
Amazon Bedrock の Converse API でも会話コンテキストの維持は「すべてのメッセージを messages に並べ、role で発信元を示す」ことが前提であり、role を使わない自己流の JSON はマルチターン処理やツール利用などの標準機能とも噛み合いません。
C. System メッセージに役割設定を、User メッセージに質問を、Assistant メッセージに直前のアシスタントの発言を格納する
System メッセージ(Converse API では system フィールド)に「シニアレビュアーとして振る舞う」という役割設定を置き、User メッセージに開発者からの質問、Assistant メッセージに直前にモデル自身が返した指摘を置く、標準的なプロンプト構造そのものです。
Converse API の messages で指定できる role は user(モデルへ送るプロンプト)と assistant(モデルの応答)の 2 種類で、過去のやり取りを user/assistant の交互の並びとして送り直すことで会話コンテキストが維持されます。
役割・入力・履歴が構造として分離されるため、役割設定はターンをまたいで安定して効き、直前の指摘も踏まえた回答が得られる唯一の正解です。
D. Assistant メッセージに役割設定を、System メッセージに質問を、User メッセージに直前のやり取りを格納する
役割設定を Assistant に、質問を System に、直前のやり取りを User に置くのは3 つとも取り違えた配置です。Assistant はモデル自身の過去の応答を表すロールなので、そこに役割設定を書くと「モデルが以前そう発言した」という履歴として扱われ、指示としての強制力が弱くなります。
また、その時々の質問を System に入れると会話全体を支配する指示として残り続け、ターンが進むほど過去の質問が邪魔をします。
System=役割設定、User=質問、Assistant=モデルの前回発言。ロールを入れ替えた瞬間に誤り。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| 「シニアレビュアーとして振る舞う」という役割設定を与えたい | 会話全体に効かせる指示・ペルソナは System(Converse API では system フィールド)に置く →選択肢(A・D)を消す |
| 開発者からの質問を受け取って回答させたい | 人間からのその時々の入力は User ロール。指示と混同しない →選択肢(A・D)を消す |
| 直前のやり取りでアシスタント自身が行った指摘も踏まえたい | モデルの過去の応答は Assistant ロールとして messages に積み直す。user と assistant の交互の並びが会話履歴 →選択肢(C)が正解 |
| 「標準的なプロンプト構造に従って」組み立てる | role を使わず 1 つのメッセージに詰め込む独自形式は、モデルが発言者を区別できず標準機能とも噛み合わない →選択肢(B)を消す |
ひっかけポイント
- 選択肢 A・D は3 つのロールを入れ替えただけで、単語としては正しいものが並ぶ。「System に何を置くか」を暗記ではなく「会話全体に効かせたい指示か、その場の入力か」で判断する
- 選択肢 B の「JSON でまとめれば同じ情報が渡る」は誤り。role が無いと指示・質問・過去の応答の区別が構造として失われる
- Converse API の messages で指定できる role は user と assistant の 2 つだけで、システムプロンプトは messages ではなく独立した system フィールドで渡す。「role='system' のメッセージを messages に入れる」実装はエラーになる
- 会話履歴は毎回のリクエストで丸ごと送り直すもの。Amazon Bedrock 側がセッションを保持してくれる、と思い込むと選択肢の意図を読み違える
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「複数ターンの会話コンテキストを保持したい」 | 毎リクエストに全メッセージを含める設計+Amazon DynamoDB 等への会話履歴の永続化が正解軸に。 |
| 「役割設定(システムプロンプト)をチームで共有・バージョン管理したい」 | Amazon Bedrock Prompt Management によるテンプレート管理と承認ワークフローが正解軸に。 |
| 「モデルに外部ツール/API を呼ばせたい」 | Converse API の toolConfig でツールを定義し、結果を toolResult として返す構成が正解軸に。 |
| 「毎回同じ長い役割設定を送るのでコストを下げたい」 | プロンプトキャッシュで共通部分をキャッシュする最適化が問われる。 |
リファレンス
この問題を解くために必要な知識を扱う公式ドキュメントです。| 知識項目 | 公式ドキュメント |
|---|---|
| Converse API のロール構成(system フィールドと user/assistant メッセージ) | Converse API を使用した推論 - Amazon Bedrock |
- User メッセージに役割設定を書き、質問は System メッセージに、直前のやり取りは Assistant メッセージに格納する
- 会話全体を1つの User メッセージ内にJSON形式でまとめ、instruction・question・previous_reply というフィールド名で管理し、role パラメータ自体は使用しない
- System メッセージに役割設定を、User メッセージに質問を、Assistant メッセージに直前のアシスタントの発言を格納する
- Assistant メッセージに役割設定を、System メッセージに質問を、User メッセージに直前のやり取りを格納する
次の問題前の問題
会員機能
お役立ち情報
- プレミアム会員のご紹介
- 「徹底解説」のご紹介
- 「模擬試験」のご紹介
- 収録問題と試験ガイドの対応
- 会員機能のご紹介
- おすすめの勉強方法
- AWSサービスの解説
- AWS認定資格の種類・対象者・受験料・合格ライン
- スマホのホーム画面に登録する方法
姉妹サイト
- CLF:AWS 認定クラウドプラクティショナー
- SAA:AWS 認定ソリューションアーキテクト-アソシエイト
- AIF:AWS 認定AIプラクティショナー
- SOA:AWS 認定CloudOpsエンジニア-アソシエイト
- DVA:AWS 認定デベロッパー-アソシエイト
- DEA:AWS 認定データエンジニア-アソシエイト
- MLA:AWS 認定機械学習エンジニア-アソシエイト
- SAP:AWS 認定ソリューションアーキテクト-プロフェッショナル
- DOP:AWS 認定DevOpsエンジニア-プロフェッショナル
- AIP:AWS 認定生成AIデベロッパー-プロフェッショナル
- SCS:AWS 認定セキュリティ-専門知識
- AZ-900:Microsoft Azure Fundamentals
- AI-900:Microsoft Azure AI Fundamentals