Azure認定資格 WEB問題集&徹底解説

AI-901:Microsoft Azure AI Fundamentals

正解 C問題
分野2:Microsoft Foundry を使用して AI ソリューションを実装する タスクステートメント2.3:Foundry を使用してコンピュータービジョンと画像生成機能を備えた AI ソリューションを実装する
合格に向けて、もっと深く学習する
豊富な問題と詳細なAzureサービス解説を、1 時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
太陽光発電所の点検アプリを開発するチームが、現場写真をアップロードし「パネルにひび割れがあるか」といった質問文と画像を 1 回のリクエストで送信し、ビジョン対応のデプロイ済みモデルから回答を得たいと考えています。リクエスト回数を増やさずに効率よく処理することが求められています。

テキストの質問と画像を 1 回の API リクエストで送信する方法についての説明として、最も適切なものはどれですか。
  • 画像は system メッセージに、質問文は user メッセージに入れるというように、ロールを分けて 1 回のリクエストに含める必要がある
  • 画像は公開 URL で指定する必要があり、ローカルの写真を Base64 に変換してリクエストに埋め込むことはできない
  • 1 件の user メッセージの content を配列にし、質問文のテキスト要素と画像要素を並べて 1 回のリクエストで渡す
  • 画像は messages とは別の専用パラメーター(images など)で渡し、質問文だけを messages に入れて 1 回のリクエストで送る
解説 頻出度★★★★★
この問題は、「質問文 × 現場写真 × 1 回のリクエスト × ビジョン対応モデル」の要件で、1 件の user メッセージの content を配列にし、テキスト要素と画像要素を並べるマルチモーダル入力の形を選べるかがポイントです。

A. 画像は system メッセージに、質問文は user メッセージに入れるというように、ロールを分けて 1 回のリクエストに含める必要がある

Chat Completions の system メッセージは、モデルの役割や回答方針を指示するためのメッセージです。API の仕様上、system メッセージの content に置けるのはテキスト要素だけで、画像要素は定義されていません。画像を入れられるのは user メッセージの content 配列です。

そもそも「画像と質問文をロールで分けなければならない」という決まりはなく、質問文と画像は同じ user メッセージに並べて渡します。system メッセージに書くのは「太陽光パネルの点検担当として、損傷の有無と位置を答える」といった指示で、画像の置き場所ではありません。「指示は system、データは user」という正しい使い分けを、画像の置き場所の話にすり替えた誤答です。

B. 画像は公開 URL で指定する必要があり、ローカルの写真を Base64 に変換してリクエストに埋め込むことはできない

画像の指定方法は公開 URL だけではありません。ローカルの写真は Base64 でエンコードし、「data:image/jpeg;base64,…」という形式の data URL にして画像要素(image_url)の url に指定すれば、リクエスト本文にそのまま埋め込めます。Microsoft Learn のハウツーにも、ローカル画像を data URL に変換する Python のコード例が載っています。

現場で撮った写真を公開ストレージへ置かずに送れるため、本問のような点検アプリではむしろ Base64 が自然な選択肢です。公式の例が URL 指定で書かれていることから「URL しか使えない」と思い込ませる誤答です。

正解

C. 1 件の user メッセージの content を配列にし、質問文のテキスト要素と画像要素を並べて 1 回のリクエストで渡す

ビジョン対応モデルに質問文と画像を一緒に渡すときは、1 件の user メッセージの content を配列にし、テキスト要素(type は text)と画像要素(type は image_url)を並べます。モデルは 2 つを同じ発話として受け取り、「この写真について、この質問に答える」形で処理するので、1 回の API 呼び出しで回答が返ります。

画像要素には公開 URL のほか Base64 の data URL も指定でき、1 回の呼び出しに複数の画像(最大 10 枚)を並べることもできます。Responses API でも考え方は同じで、user メッセージの content 配列に input_text と input_image を並べます。どちらの API でも「1 件のメッセージの中にテキストと画像を同居させる」のが正しい送り方です。

D. 画像は messages とは別の専用パラメーター(images など)で渡し、質問文だけを messages に入れて 1 回のリクエストで送る

Azure OpenAI の Chat Completions には、画像専用の images のような別パラメーターはありません。画像は messages の中、user メッセージの content 配列に画像要素として入れます。Responses API でも、画像は content 配列の input_image 要素であり、別のパラメーターにはなりません。

content 配列は、テキストと画像を同じ発話の中に順番付きで並べるための仕組みです。質問文と画像を別々の場所に置く設計では、どの質問がどの画像についてのものかを対応づけられません。「画像は特別扱いの引数で渡すもの」という思い込みを突く誤答です。

これだけ覚える(記憶フック)
画像は user の content 配列へ。質問文と並べて 1 通で送る。system にも別パラメーターにも置かない。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
質問文と画像を 1 回のリクエストで送る テキストと画像は同じメッセージに同居できる。1 件の user メッセージの content 配列に並べればよい
→選択肢(C)は候補
画像をどのロールのメッセージに入れるか system は回答方針の指示用で、content に置けるのはテキスト要素だけ。画像は質問文と同じ user メッセージへ
→選択肢(A)を消す
現場でアップロードした写真を渡す 公開 URL に加えて、Base64 の data URL で本文に埋め込める
→選択肢(B)を消す
画像を渡す場所 画像専用の別パラメーターは無く、messages の content 配列の画像要素として渡す
→選択肢(D)を消す
テキストと画像を 1 件のメッセージにまとめる形 Chat Completions は text と image_url、Responses API は input_text と input_image を同じ content 配列に並べる
→選択肢(C)が正解
ひっかけポイント
  • 4 つの選択肢はどれも「1 回のリクエスト」で送る形をとっているため、回数の条件だけでは絞れない。判断の軸は「画像をどのメッセージに・どの形式で入れるか」
  • 選択肢 A は「指示は system、データは user」という使い分けの延長で、画像を system に置かせようとする。Chat Completions の system メッセージの content はテキスト要素だけで、画像は質問文と同じ user メッセージに入れる
  • 選択肢 B は、公式の例が URL 指定で書かれていることから「URL 限定」と思わせる。ローカル画像はBase64 の data URL にすれば image_url の url にそのまま指定できる
  • 選択肢 D の「images パラメーター」はいかにもありそうな名前で惑わせる。Azure OpenAI では Chat Completions・Responses API とも、画像はメッセージの content 配列の要素として渡す
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「パネルの写真を複数枚まとめて送り、損傷の程度を比較させたい」 同じ content 配列に画像要素を複数並べる。1 回の呼び出しで最大 10 枚、1 枚あたり最大 20 MB まで。
「細かなひび割れまで読み取らせたい」/「大量の写真を速く・少ないトークンで処理したい」 画像要素の detail を high(高解像度で詳細に解釈・トークン増)または low(512×512 の低解像度で高速・省トークン)に設定する。既定は auto。
「同じ処理を Responses API で実装したい」 user メッセージの content 配列に input_text と input_image を並べる。画像は URL・Base64 の data URL・Files API のファイル ID で指定できる。
「回答を見たうえで、同じ写真について追加の質問をしたい」 Chat Completions はステートレスなので、前の画像と回答を含む会話履歴を messages に入れ直して送る。Responses API なら previous_response_id で前の応答を引き継げる。
「すべての写真に対して点検担当としての回答方針(損傷の有無・位置・深刻度を答える)を固定したい」 その方針を system メッセージにテキストで書く。選択肢 A のロールの使い分けが正しく生きるのはこちらの場面。
関連サービスの解説 Microsoft Foundry
リファレンス この問題を解くために必要な知識を扱う公式ドキュメントです。
知識項目 公式ドキュメント
ビジョン対応モデルへの画像入力(content 配列・Base64 の data URL・detail・画像数とサイズの上限) ビジョン対応チャット モデルを使用する方法
Responses API での画像入力(input_text と input_image)と previous_response_id による会話の引き継ぎ Azure OpenAI Responses API を使用する
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 86%
No.9 解説
太陽光発電所の点検アプリを開発するチームが、現場写真をアップロードし「パネルにひび割れがあるか」といった質問文と画像を 1 回のリクエストで送信し、ビジョン対応のデプロイ済みモデルから回答を得たいと考えています。リクエスト回数を増やさずに効率よく処理することが求められています。

テキストの質問と画像を 1 回の API リクエストで送信する方法についての説明として、最も適切なものはどれですか。
  • 画像は system メッセージに、質問文は user メッセージに入れるというように、ロールを分けて 1 回のリクエストに含める必要がある
  • 画像は公開 URL で指定する必要があり、ローカルの写真を Base64 に変換してリクエストに埋め込むことはできない
  • 1 件の user メッセージの content を配列にし、質問文のテキスト要素と画像要素を並べて 1 回のリクエストで渡す
  • 画像は messages とは別の専用パラメーター(images など)で渡し、質問文だけを messages に入れて 1 回のリクエストで送る

(会員限定)当問題の評価をお願いします。改善に活用します。