Microsoft AI-103(Azure AI App and Agent Developer Associate) 1-10

A. はい
B. いいえ

回答
B. いいえ

保護された素材の検出は、著作権で保護された既知の文章、歌詞、記事、レシピ、コードなどと生成結果が一致するかを検出する機能であり、安全でない画像や画像内の隠し命令への対策ではありません。
危険な画像にはAzure AI Content Safetyの画像分析を使用し、画像から抽出された悪意ある指示などの間接プロンプトインジェクションにはPrompt Shieldsによるドキュメント攻撃の検出を使用します。
したがって、この解決策だけでは目標を満たしません。
現在、Azure AI Content SafetyはMicrosoft Foundryからも利用されますが、サービス名自体に変更はありません。

プロンプト シールド
Azure AI Content Safety とは?

Q2.Microsoft Foundry Agent Serviceを使用するカスタマーサポートエージェントがあります。
顧客が数日後に同じサポート案件を続けるためにセッションへ戻ることがあります。
その際、エージェントは完全な過去のコンテキストを使用して再開する必要があります。
エージェントは次の機能を提供する必要があります。
セッション内での複数ターンの継続性
同じ案件に対するセッションをまたいだ継続性
ユーザーメッセージ、エージェントメッセージ、ツール呼び出し、ツール出力を含む、やり取りの完全な履歴へのアクセス
新しい各ターンで、エージェントが完全な履歴を自動的に再読み込みするようにする必要があります。
どうすればよいですか。

A. クライアントアプリケーションに保存された最終的なモデル応答だけを永続化し、その応答を今後のプロンプトの先頭に追加します。
B. エージェント定義でメモリ要約を有効にし、コンテキストを自動的に永続化します。
C. 会話を作成して再利用するために、会話IDを保存し、後続の要求でそのIDを指定します。

回答
C. 会話を作成して再利用するために、会話IDを保存し、後続の要求でそのIDを指定します。

Microsoft Foundry Agent Serviceの会話オブジェクトは、複数ターンにわたるメッセージやツール実行結果を保持する永続的な単位です。
会話IDを案件と関連付けて保存し、後続の要求で同じIDを指定すると、サービス側で既存の会話履歴を再利用できます。最終応答だけの保存では、ユーザーメッセージ、ツール呼び出し、ツール出力が失われます。
また、要約メモリは情報を圧縮するため、完全な履歴を保持する要件には適しません。
したがって、同一案件では同じ会話IDを継続して使用する方法が正解です。
旧ドキュメントでは「スレッド」という名称が使われる場合がありますが、新しいMicrosoft Foundry Agent Serviceでは、主に「会話」と「応答」という構成要素が使用されます。

エージェント、会話、応答を使用して構築する
クイック スタート: Microsoft Foundry SDK の概要

A. すべての要求について、max_tokensパラメーターの値を増やします。
B. すべての要求を小規模なモデルにルーティングします。
C. すべての要求を最も高性能なモデルにルーティングします。
D. 要求を異なるモデルへルーティングするモデルカスケードを使用します。

回答
D. 要求を異なるモデルへルーティングするモデルカスケードを使用します。

モデルカスケードでは、単純なFAQを小規模で高速かつ低コストなモデルに送り、複雑な質問を高性能な推論モデルに振り分けられます。
これにより、複雑な質問の品質を維持しながら、全体のコストと待機時間を削減できます。
max_tokensの増加は通常、出力トークン数と処理時間を増やします。
また、すべてを小規模モデルへ送ると複雑な質問の品質が低下し、すべてを高性能モデルへ送ると単純なFAQでコストを浪費します。
現在のMicrosoft Foundryでは、この仕組みは主に「モデルルーター」と呼ばれ、プロンプトごとに品質、コスト、待機時間を考慮して適切なモデルを自動選択します。

Microsoft Foundry のモデル ルーター
Microsoft Foundry にモデル ルーターを使用する

回答
下記画像参照

tool_choiceをrequiredに設定すると、モデルは応答を生成する際に少なくとも1つのツールを必ず呼び出すため、取得ステップを必須にできます。
autoではツールを呼び出さない可能性があり、noneではツール呼び出しが禁止されます。公開前のエージェントはプロジェクト内でIDを共有しますが、公開後はエージェントごとに一意のエージェントIDが割り当てられます。
個別のエージェントIDを使用すると、他のプロジェクトリソースからアクセス権を分離し、エージェント単位で認証、権限管理、監査を行えます。
APIキーをプロンプトに保存する方法は安全ではなく、共有プロジェクトIDでは必要な分離を実現できません。
Microsoft FoundryではApplication InsightsとOpenTelemetryを使用して、取得処理やツール呼び出しを含む実行トレースを記録できます。

Microsoft Foundry のエージェント ID の概念
モデルコンテキストプロトコル(MCP)ツールの認証を設定する

回答
下記画像参照

エージェントメモリは、ユーザーの設定や過去の対話から抽出した情報を永続的なメモリストアに保持し、異なるセッションや会話でも再利用できる長期記憶機能です。
会話履歴やセッションコンテキストは、主に同一会話または一時的な実行状態の継続に使用されます。
ファイル検索ツールは、チャット中にアップロードされたドキュメントをベクトルストアへ登録し、その内容を検索して回答の根拠として使用します。
Azure AI Searchは事前構築された企業検索基盤との連携に適し、コードインタープリターはファイルの計算やデータ分析を目的とします。
旧称のAzure AI Foundryは、現在Microsoft Foundryという名称で案内されています。

Microsoft Foundry Agent Service のメモリ (プレビュー)
Foundry Agent Service でのメモリの作成と使用 (プレビュー)

A. 従来型の検索拡張生成(RAG)
B. 思考の連鎖
C. エージェント型検索拡張生成(RAG)
D. 反復型取得

回答
C. エージェント型検索拡張生成(RAG)

エージェント型取得は、LLMを使用して複雑な質問を複数の焦点を絞ったサブクエリへ分解し、複数のチャンクから関連情報を取得するマルチクエリ型のRAGパイプラインです。
サブクエリの生成には会話履歴も含められるため、過去のターンを考慮した取得計画を実現できます。
さらに、生成したサブクエリを並列実行した後、取得結果を統合して再ランク付けするため、精度を維持しながら待機時間を抑えられます。
従来型RAGは通常、単一の検索クエリを使用するため、この要件には不十分です。
思考の連鎖は推論手法であり、Azure AI Searchの取得方式ではありません。
したがって、複数チャンク、会話履歴を考慮した計画、並列取得という3要件をすべて満たすエージェント型RAGが正解です。
現在のMicrosoft公式ドキュメントでは、この機能は「エージェント検索」または「エージェント型取得」と表記されます。

Azure AI 検索でのエージェント主導の検索取得
Azure AI 検索 でのレトリーバル拡張生成 (RAG)

A. 保護された素材のテキスト検出
B. ユーザープロンプト向けPrompt Shields
C. 画像モデレーション
D. ドキュメント向けPrompt Shields

回答
D. ドキュメント向けPrompt Shields

画像からOCRで抽出されたテキストは、ユーザーが直接入力したプロンプトではなく、外部コンテンツとしてプロンプトへ追加されるため、間接プロンプトインジェクションとして扱います。 ドキュメント向けPrompt Shieldsは、文書、電子メール、Webページ、画像から抽出したテキストなどに埋め込まれた悪意ある指示を検出します。
ユーザープロンプト向けPrompt Shieldsは、ユーザーが直接入力した攻撃の検出に使用します。
画像モデレーションは暴力や性的表現などの有害な視覚コンテンツを検出する機能であり、OCRテキスト内の命令への対策ではありません。
したがって、OCR出力をモデルへ渡す前にドキュメント向けPrompt Shieldsで検査することが適切です。
保護された素材の検出は著作権保護対象との一致を検出する機能であり、本要件には該当しません。

プロンプト シールド
Microsoft Foundry のプロンプト シールド

A. はい
B. いいえ

回答
B. いいえ

応答完全性の評価は、生成された回答が正解データや期待される回答に含まれる重要な情報をどの程度網羅しているかを測定する機能です。
しきい値未満の回答を検出してブロックすることはできますが、欠落した規制条項を回答へ追加したり、生成処理自体を改善したりするものではありません。
完全性を向上させるには、取得内容と生成結果を照合し、不足がある場合に再生成または修正させる検証処理を追加する必要があります。
評価フローは品質を測定する仕組みであり、それだけでは回答品質を改善する制御にはならないため、この解決策は目標を満たしません。

Retrieval-Augmented 生成 (RAG) エバリュエーター
回答完全性評価者クラス

回答
下記画像参照

DefaultAzureCredentialは、Azure上で実行されるアプリケーションに割り当てられたマネージドIDを自動的に検出し、Microsoft Entra IDの資格情報として使用できます。 AzureKeyCredentialはAPIキーによる認証であり、ClientSecretCredentialはテナントID、クライアントID、クライアントシークレットを使用するサービスプリンシパル認証であるため、マネージドIDの要件には適合しません。
AIProjectClientのget_openai_clientメソッドで認証済みのOpenAIクライアントを取得し、responses.createメソッドを使用すると、入力プロンプトをデプロイ済みモデルへ送信して新しい応答を生成できます。 responses.retrieveは既存の応答を取得する処理であり、新しい推論要求の送信には使用しません。compactも新しい応答を生成するためのメソッドではありません。
現在、Azure AI FoundryはMicrosoft Foundryへ名称が変更されていますが、azure.ai.projectsのAIProjectClientとResponses APIを組み合わせる基本的な構成は同じです。

Microsoft Foundry SDK とエンドポイント
Azure OpenAI Responses API を使用する

A. Foundry ToolsのAzure Content Understandingにある事前構築済みレイアウトアナライザー
B. 請求書フィールドと信頼度スコアを抽出するために、グラウンデッドネスのガードレールを有効にしたFoundryエージェント
C. 必要なフィールドを抽出フィールドとして定義し、ルーティングに使用する信頼度スコアを返す、Foundry ToolsのAzure Content Understandingカスタムアナライザー
D. Foundry ToolsのAzure Content Understandingにある事前構築済みdocumentSearchアナライザーと、ルーティングに使用するAzure AI Search結果のsearch.score

回答
C. 必要なフィールドを抽出フィールドとして定義し、ルーティングに使用する信頼度スコアを返す、Foundry ToolsのAzure Content Understandingカスタムアナライザー

Azure Content Understandingのカスタムアナライザーでは、請求書番号、請求日、仕入先名、合計金額など、必要な業務フィールドをスキーマとして定義し、異なる帳票レイアウトから構造化JSONとして抽出できます。
また、各抽出結果には0から1の信頼度スコアを含められるため、0.80未満を人による確認へ回す処理を実装できます。
レイアウトアナライザーは文字、表、配置の抽出が中心で、請求書固有の業務項目を定義しません。
グラウンデッドネス評価は生成回答の根拠性を測るもので、帳票フィールド抽出には使用しません。
search.scoreも検索結果の関連度であり、抽出値の信頼度ではありません。
したがって、フィールド抽出と信頼度に基づくルーティングを単一構成で実現できるカスタムアナライザーが適切です。
現在の正式名称は「Azure Content Understanding in Foundry Tools」です。

Foundry Tools のドキュメント ソリューションにおける Azure Content Understanding
Content Understanding アナライザーとは