次の方法で共有


Microsoft Foundry Services からFabric データ エージェントを使用する (プレビュー)

Microsoft Fabricのデータ エージェントは、エンタープライズ データを会話形式のQ&Aシステムに変換します。 これにより、ユーザーはチャットを通じてデータを操作し、実用的な分析情報を明らかにできます。 Fabric データ エージェントを活用する方法の1つとしては、Microsoft Foundry のコアコンポーネントである Foundry Agent Service を利用することです。 Fabric データ エージェントと Foundry の統合により、Azure AI エージェントは、Microsoft Fabric OneLake で利用できる豊富で構造化されたセマンティック データを直接活用できます。 この統合により、高品質のエンタープライズ データにすぐにアクセスでき、Azure AI エージェントは実用的な分析情報を生成し、分析ワークフローを合理化できます。 その後、組織は、Azure AI 環境内の強力なナレッジ ソースとして、Fabric データ エージェントを使用してデータドリブンの意思決定を強化できます。

Von Bedeutung

この機能は プレビュー段階ですAzure AI Agents Python SDK の最新のベータ版またはプレビュー バージョンを使用します。

[前提条件]

  • 有料のF2以上のFabric容量、または Microsoft Fabric が有効な Power BI Premium (P1以上) 容量
  • Fabricデータ エージェントのテナント設定が有効になっており、容量をFabric Copilot容量として指定できます。
  • AI のクロス geo 処理 が有効になっています。
  • AI のクロスジオ格納が有効になっています。
  • データを持つものの中で、少なくとも1つは次のいずれかである必要があります: ウェアハウス、レイクハウス、1つ以上のPower BI セマンティックモデル、KQLデータベース、またはオントロジー。
  • Power BI XMLA エンドポイント テナント スイッチ を介したセマンティック モデルは、Power BIセマンティック モデル のデータ ソースに対して有効になります。
  • データ エージェントで使用Power BIセマンティック モデルの場合は、エージェントを介して対話するユーザーがセマンティック モデルに対する読み取りアクセス許可を持っていることを確認します。 操作には、ワークスペース メンバーまたはビルドアクセス許可は必要ありません。
  • Foundry の開発者とエンド ユーザーには、少なくとも AI Developer Role-Based Access Control (RBAC) ロールが必要です。

動作方法

Agent Setup: Agent Service で新しいエージェントを作成し、ナレッジ ソースの 1 つとしてデータ エージェントFabric追加します。 この接続を確立するには、Fabric データ エージェントのワークスペース ID と成果物 ID が必要です。 このセットアップにより、Azure AI エージェントは、クエリを受信したときに使用可能なソースを評価し、要求を処理するための適切なツールが確実に呼び出されるようにすることができます。 現時点では、ナレッジ ソースとして Fabric データ エージェントを 1 つだけAzure AI エージェントに追加できます。

AZURE AI エージェントのセットアップで選択したモデルは、Azure AI エージェントのオーケストレーションと応答の生成にのみ使用されます。 Fabricデータ エージェントが使用するモデルには影響しません。

Query 処理: ユーザーが Foundry プレイグラウンドからクエリを送信すると、エージェント サービスは、データ エージェントFabricタスクに最適なツールであるかどうかを判断します。 その場合、Azure AI エージェントが有効になります。

  • エンド ユーザーの ID を使用して、ユーザーがFabric データ エージェント内からアクセスするアクセス許可を持つデータ ソースに対するセキュリティで保護されたクエリを生成します。
  • データをフェッチして処理するFabricを呼び出し、スムーズで自動化されたエクスペリエンスを確保します。
  • Fabricデータ エージェントからの結果を独自のロジックと組み合わせて、包括的な応答を生成します。 ID パススルー (On-Behalf-Of) 認可によりこのフローは保護され、エンタープライズ データ全体で堅牢なセキュリティと適切なアクセスの制御が確保されます。

Fabric データ エージェントと Foundry リソースは同じテナント上にあり、Microsoft Fabricと Foundry の両方が同じアカウントでサインインする必要があります。

Azure AI サービスに Fabric データ エージェントを追加する

Fabric データ エージェントは、プログラムまたはユーザー インターフェイス (UI) を使用して、Azure AI エージェントに追加できます。 詳細なコード例と詳細な手順については、Azure AI エージェント統合ドキュメントを参照してください。

UIを使用してFabricデータエージェントを追加

  • 左ウィンドウに移動します。 [Build and Customize] (ビルドとカスタマイズ) で、次のスクリーンショットに示すように [エージェント] を選択します。

Azure Foundry のメインページを示すスクリーンショット

この手順では、既存のAzure AI エージェントの一覧が表示されます。 これらのエージェントのいずれかにFabricを追加することも、New Agent を選択して新しいエージェントを作成することもできます。 新しいエージェントの作成では、一意のエージェント ID と既定の名前が生成されます。 名前はいつでも変更できます。 詳細については、Foundry ポータルの Azure OpenAI を参照してください。

  • ナレッジ ソースの追加を開始する: 次のスクリーンショットに示すように、[追加] ボタンを選択します。

知識としてFabricデータエージェントを追加することを示すスクリーンショット

この手順では、サポートされているナレッジ ソースの種類のメニューが開きます。

  • ソースとしてMicrosoft Fabricを選択します。次のスクリーンショットに示すように、一覧から Microsoft Fabric を選択します。

ナレッジ ソースとしてのFabricの選択を示すスクリーンショット。

このオプションを使用すると、エージェントはFabricデータ エージェントにアクセスできます。

  • 接続を作成する: 以前にFabric データ エージェントへの接続を確立した場合は、その接続を新しい Azure AI エージェントに再利用できます。 それ以外の場合は、次のスクリーンショットに示すように、[ 新しい 接続] を選択して接続を作成します。

新しいFabric接続の作成方法を示したスクリーンショット

次のスクリーンショットに示すように、新しいMicrosoft Fabric接続を作成 ウィンドウが開きます。

接続の作成を示すスクリーンショット。

接続を設定するときに、Fabric データ エージェント workspace-idartifact-id の値をカスタム キーとして指定します。 workspace-idartifact-id の値は、パブリッシュされたFabric データ エージェント エンドポイントにあります。 Fabric データ エージェント エンドポイントの形式は次のとおりです。

https://fabric.microsoft.com/groups/ < workspace_id>/aiskills/<artifact-id>。[秘密である] チェックボックスをオンにします。

最後に、接続に名前を割り当て、Foundry のすべてのプロジェクトで使用できるようにするか、現在のプロジェクトに制限するかを選択します。

Connect を選択すると、次のスクリーンショットに示すように、Microsoft Fabric データ エージェントが Knowledge リソースとして追加されます。

手順を追加する方法を示すスクリーンショット。

また、Fabric データ エージェントを使用するタイミング、方法、および条件について、Azure AI エージェントに指示を提供する必要があります。 Azure AI エージェントの観点からは、Fabric データ エージェントはFabric ツールとして扱われるので、手順でそのように参照できます。

また、ユース ケースの要件に基づいて、デプロイ モデルの調整、アクションの追加、モデル設定の変更を行うこともできます。 Azure AI エージェントが完全に構成されたら、プレイグラウンドでTryを選択してそのパフォーマンスをテストします。

Fabric データ エージェントをプログラムで追加する: 次の手順では、PythonのAzure AI エージェントにFabric データ エージェントをプログラムで追加する方法について説明します。 その他の言語 (C#、JavaScript) については、 この リソースを参照してください。

手順 1: プロジェクト クライアントを作成する

AI プロジェクトやその他のリソースに接続する接続文字列を含むクライアント オブジェクトを作成します。

import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import FabricTool, ListSortOrder

手順 2: Microsoft Fabric ツールを有効にしてエージェントを作成する

Azure AI エージェントで Fabric データ エージェント ツールを使用できるようにするには、接続を使用してツールを初期化し、エージェントにアタッチします。 接続は、Foundry ポータルのプロジェクトの [接続済みリソース ] セクションで確認できます。

# The Fabric connection ID can be found in the Foundry project as a property of the Fabric tool
# Your connection ID is in the format /subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<your-project-name>/connections/<your-fabric-connection-name>
conn_id = "your-connection-id"

# Initialize the AI project client
project_client = AIProjectClient(
    endpoint=os.environ["PROJECT_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

# Initialize agent Fabric tool and add the connection ID
fabric = FabricTool(connection_id=conn_id)

# Create agent with the Fabric tool and process assistant run
with project_client:
    agent = project_client.agents.create_agent(
        model="gpt-4o",
        name="my-assistant",
        instructions="You are a helpful assistant",
        tools=fabric.definitions,
        headers={"x-ms-enable-preview": "true"},
    )
    print(f"Created agent, ID: {agent.id}")

手順 3: スレッドを作成する

# Create thread for communication
thread = project_client.agents.create_thread()
print(f"Created thread, ID: {thread.id}")

# Create message to thread
# Remember to update the message with your data
message = project_client.agents.create_message(
    thread_id=thread.id,
    role="user",
    content="what is top sold product in Contoso last month?",
)
print(f"Created message, ID: {message.id}")

手順 4: 実行を作成して出力を確認する

実行を作成し、モデルが Fabric データ エージェント ツールを使用してユーザーの質問に対する応答を提供することを確認します。

# Create and process agent run in thread with tools
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")

if run.status == "failed":
    print(f"Run failed: {run.last_error}")

# Delete the assistant when done
project_client.agents.delete_agent(agent.id)
print("Deleted agent")

# Fetch and log all messages
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")