Q1.あなたは社内ドキュメントを対象にしたナレッジ検索アプリを Azure OpenAI 上で構築しています。
利用者が回答内容を検証しやすいよう、生成された回答には根拠として参照した具体的なソース文書への引用(出典)を必ず添えたいと考えています。
どの実装を採用すべきですか?
解答を見る
回答に出典を付けるには、検索(取得)ステップで文書のメタデータ(出典名やページ・セクション)を取り出し、それを生成結果とあわせて返したうえで、モデルへ明示的に引用するようプロンプトで指示します。
これは RAG パイプラインとプロンプト設計を組み合わせた実装パターンであり、top_p などのサンプリング調整やコンテンツフィルターの変更では実現できません。
検索を行わずベースモデルのみを使う方式(C)では、そもそも根拠文書を参照できず出典を付けられません。
したがって正解は B です。
Azure OpenAI On Your Data の概要
Q2.あなたは経理チーム向けの精算支援アプリを開発しており、レイアウトの異なる複数種類のスキャン済み請求書から、構造化されたフィールドデータ(請求書番号・合計金額・仕入先名)を抽出する必要があります。
カスタムモデルの学習(トレーニング)を一切必要としないソリューションが求められています。
どのサービスを使用すべきですか?
解答を見る
事前構築済み請求書モデル(prebuilt-invoice)は、仕入先・合計・明細・請求書番号といった一般的な請求書フィールドをそのまま認識できるよう学習済みで、独自の学習データやカスタムモデルの作成が不要です。
レイアウトの異なる複数種類の請求書にも対応するため、「学習不要」という要件を満たせます。
Read API(A)は文字の読み取り(OCR)のみでフィールド構造は返しません。
カスタム NER(C)やカスタムニューラルモデル(D)は独自の学習が前提のため、要件に反します。
請求書モデル – Document Intelligence
Q3.あなたは Azure Container Apps(ACA)へデプロイした AI 用 API を開発しています。
この API はデータベース資格情報を必要とし、その資格情報は Key Vault に保管され、Key Vault は Azure RBAC でアクセス制御されています。
資格情報はセキュリティチームによって定期的にローテーションされます。
アプリは再デプロイなしで、かつコードや構成にシークレットを露出させることなく、常に最新バージョンの資格情報を利用しなければなりません。
実行時に最新のシークレットを取得し、資格情報の漏えいを防ぐ安全なアクセス方式を実装する必要があります。
実行すべき 3 つのアクションはどれですか?(各正解が解決策の一部です)
※正解はそれぞれ1ポイントです。
解答を見る
シークレットをコードや構成に埋め込まず、ローテーション後も再デプロイなしで最新版を使うには、まず ACA アプリにシステム割り当てマネージド ID を付与し(D)、その ID に Key Vault の RBAC ロール(Key Vault Secrets User)を割り当て(A)、実行時に SDK でシークレットを取得します(E)。
これにより資格情報を露出させず、常に最新バージョンを動的に参照できます。
Key Vault は RBAC で構成されているためアクセスポリシー(B)は使いません。
デプロイ時のエクスポート(C)はシークレットを露出させ、ローテーションにも追随できないため不適切です。
Container Apps でマネージド ID を使用する
Q4.あなたは Azure Container Registry(ACR)にあるプライベートなコンテナーイメージを、App Service へデプロイします。
App Service はイメージを取得(プル)するために ACR に対して認証する必要があります。
この構成では、静的なレジストリ資格情報を保存してはいけません。
安全なイメージプル認証を構成する必要があります。
回答欄で適切なオプションを選択してください。
※正解はそれぞれ1ポイントです。
解答を見る
静的な資格情報を保存せず ACR からプライベートイメージを安全にプルするには、App Service にマネージド ID を構成し、その ID にイメージのプルを許可する Container Registry Repository Reader ロールを割り当てます。
マネージド ID とロール割り当てで認証することで、パスワードを保持せずに安全にプルできます。
管理者ユーザーの有効化や、レジストリのパスワードをアプリ設定に保存する方法は、静的な資格情報を保持することになるため要件に反します。
Webhook はイベント通知の仕組みで、イメージプルの認証には使いません。
マネージド ID で ACR からイメージをプルする
Q5.あなたは ACR Tasks を構成してイメージビルドを自動化します。
次の場合にコンテナーイメージを再ビルドする必要があります。
◆アプリケーションの更新が発生したとき。
◆ベースイメージ(基盤となる OS イメージなど)の更新が発生したとき。
◆定期的なスケジュールでの再ビルドが必要なとき。
自動再ビルドをサポートするよう ACR Tasks を構成する必要があります。
構成すべき 3 つのトリガーはどれですか?(各正解が解決策の一部です)
※正解はそれぞれ1ポイントです。
解答を見る
3 つの要件はそれぞれ ACR Tasks の 3 種類のトリガーに対応します。
定期実行はタイマートリガー(A)、アプリ更新(コミット)はソースコードのコミットトリガー(B)、ベースイメージ更新はベースイメージ更新トリガー(D)で自動再ビルドできます。
レジストリイベントトリガー(C)や Webhook 通知トリガー(E)は外部への通知・連携の仕組みであり、ここで求められる再ビルドのトリガー要件には該当しません。
ACR Tasks の概要
Q6.あなたは Azure Cosmos DB for NoSQL にアプリケーションデータを格納する .NET アプリを開発しています。
アプリは Cosmos DB for NoSQL SDK を使ってデータベースアカウントを操作し、次の処理を行う必要があります。
◆アカウントのエンドポイントとキーを使って接続を初期化する。
◆共有スループットを定義する。
◆コンテナー内の項目に対して作成・読み取り・更新・削除(CRUD)を行う。
各要件に適した SDK コンポーネントを一致させてください。
※正解はそれぞれ1ポイントです。
選択肢を要件のドロップ欄へドラッグ、またはタップして配置。配置済みの欄をクリックで戻せます(同じ選択肢は複数回使用可)。
Database
Container
Indexing policy
解答を見る
Cosmos DB for NoSQL SDK では役割ごとにクラスが分かれています。
接続の初期化は CosmosClient、共有スループット(RU/s)はデータベース単位で構成するため Database、項目の CRUD 操作は Container クラスを使用します。
共有スループットはデータベースに設定した容量を配下の全コンテナーで共有します。
項目(JSON ドキュメント)の CRUD メソッドを公開するのは Container です。
Indexing policy はインデックス作成方針を定義するコンポーネントで、この 3 要件には該当しないため未使用(ダミー)です。
Cosmos DB for NoSQL .NET SDK 入門
Q7.あなたは AI バッチジョブ用の Service Bus プロセッサをプロビジョニング・構成しています。
プロセッサは既存のキューに接続し、メッセージ処理とエラー処理のハンドラーを登録したうえで、メッセージの受信を開始する必要があります。
順番に実行すべき 4 つのアクションを、正しい順序に並べてください。
※正解はそれぞれ1ポイントです。
左の「選択肢」から必要な数を右の「回答エリア」へドラッグ(またはタップ)。回答エリア内でドラッグして順序を入れ替えられます。
- メッセージハンドラーとエラーハンドラーを登録する
- Service Bus クライアントを作成する
- 失敗したメッセージをデッドレターに送る
- メッセージプロセッサを開始する
- キュー用の Service Bus プロセッサを作成する
- ここへドラッグ
解答を見る
まず接続文字列や Azure Identity 資格情報で Service Bus クライアントを作成し、そのクライアントからキューを対象とするプロセッサを生成します。
次にメッセージ到着時とエラー発生時の動作を定義するためハンドラーを登録し、最後に受信を開始するメソッドを呼び出すことで内部ループが起動します。
クライアント作成→プロセッサ作成→ハンドラー登録→プロセッサ開始の順が正しく、開始メソッドを呼ぶまでプロセッサは待機状態のままです。
「失敗したメッセージをデッドレターに送る」はこの初期化シーケンスには不要な選択肢です。
Service Bus キュー入門(.NET)
Q8.ACA 上で動作する Python 製 API から、分散トレースを Azure Monitor へ送信する必要があります。
API はスパンを作成していますが、Azure Monitor にトレースが表示されません。
OpenTelemetry SDK のパイプラインを構成してトレースを Azure Monitor へエクスポートする必要があります。
各要件に適したアクションを一致させてください。
※正解はそれぞれ1ポイントです。
選択肢を要件のドロップ欄へドラッグ、またはタップして配置。配置済みの欄をクリックで戻せます(同じ選択肢は複数回使用可)。
スパンプロセッサを構成してエクスポーターへスパンを送る
アプリの TracerProvider を初期化する
tracer.start_as_current_span() を呼び出す
ログサンプリングを有効化する
解答を見る
トレースが表示されないのは、エクスポーターとスパンプロセッサを含むエクスポートパイプラインが構成されていないためです。
Azure Monitor へ送るエクスポーターコンポーネントを作成し、BatchSpanProcessor などのスパンプロセッサでそのエクスポーターへスパンを送るよう構成します。
これを TracerProvider に登録・初期化し、最後に tracer.start_as_current_span() でスパンを生成すると、Azure Monitor へトレースが送信されます。
「ログサンプリングを有効化する」はこの構成には不要な選択肢です。
OpenTelemetry で Azure Monitor を有効にする
Q9.あなたはパブリック API を公開する Azure Functions アプリを設計しています。
このソリューションは次を満たす必要があります。
◆受信リクエストのデータを検証し、呼び出し元へ即座に結果を返す。
◆Microsoft Entra ID 認証をサポートする。
◆同じリクエストが再試行されても冪等(べきとう)に処理されることを保証する。
◆負荷の変動に応じて自動的にスケールする。
◆重複処理を回避する。
トリガーを実装する必要があります。
どのトリガーを実装すべきですか?
解答を見る
要件の中心は、呼び出し元へ即座に結果を返す同期的な応答と、Entra ID 認証、自動スケールです。
HTTP トリガーは同期的な要求/応答を行い、ペイロードを検証して 200 や 400 を即時に返せます。
App Service 認証(Easy Auth)で Entra ID トークン検証を組み込め、従量課金/Premium プランでトラフィックに応じ自動スケールします。
冪等性や重複回避は Durable Functions やバッキングストアと組み合わせて実現します。
Service Bus・Event Grid・Queue storage は非同期処理向けで、呼び出し元への即時応答には適しません。
Azure Functions の HTTP トリガー
Q10.あなたは HTTP トリガーを持つ Azure Functions アプリを開発する予定です。
アプリは次の機能をサポートする必要があります。
◆イベント駆動型のスケーリング
◆関数の実行にカスタム Linux イメージを使用できること
アプリのホスティングプランと、関数が受信リクエストに応答できる最大時間を特定する必要があります。
回答欄で適切な値を選択してください。
※正解はそれぞれ1ポイントです。
解答を見る
イベント駆動型スケーリングとカスタム Linux コンテナーイメージの両方を満たすのは Premium(Elastic Premium)プランです。
スケールコントローラーによる動的なスケールアウトに対応し、アイドル時は 0 インスタンスまで縮退します。
Consumption プランと異なりカスタム Linux イメージを実行できます。
また host.json の設定に関わらず、HTTP トリガー関数には基盤の Azure Load Balancer に由来する 230 秒の応答上限があり、これを超えると接続が切断されます。
したがってホスティングプランは Premium、タイムアウト値は 230 秒です。
Azure Functions のホスティングオプション
