通过 Microsoft Foundry Services 利用 Fabric 数据代理(预览版)

Microsoft Fabric中的数据代理将企业数据转换为聊天问答系统。 它使用户能够通过聊天与其数据交互,以发现可作的见解。 使用Fabric数据代理的一种方法是通过 Foundry 代理服务(Microsoft Foundry 的核心组件)。 通过将 Fabric 数据代理与 Foundry 集成,Azure AI 代理可以直接利用 OneLake Microsoft Fabric中提供的丰富、结构化和语义数据。 此集成提供对高质量企业数据的即时访问,并使Azure AI 代理能够生成可操作的见解并简化分析工作流。 然后,组织可以使用Fabric数据代理作为其Azure AI 环境中的强大知识源来增强数据驱动的决策。

先决条件

  • Foundry 中的开发人员和最终用户必须至少具有AI Developer 基于角色的访问控制(RBAC)角色。

工作原理

Agent 安装程序:在代理服务中,创建新的代理,并将Fabric数据代理添加为其知识源之一。 若要建立此连接,需要 Fabric 数据代理的工作区 ID 和工件 ID。 通过安装程序,Azure AI 代理可以在收到查询时评估可用的源,以确保它调用正确的工具来处理请求。 目前,只能将一个Fabric数据代理作为知识源添加到 Azure AI 代理。

注释

在 Azure AI 代理设置中选择的模型仅用于Azure AI 代理业务流程和响应生成。 它不会影响Fabric数据代理使用的模型。

查询处理:当用户从 Foundry 平台发送查询时,代理服务将确定 Fabric 数据代理是否为执行任务的最佳工具。 如果是,Azure AI 代理:

  • 使用最终用户的标识对用户有权从Fabric数据代理内访问的数据源生成安全查询。
  • 调用Fabric提取和处理数据,以确保流畅、自动化的体验。
  • 将Fabric数据代理的结果与其自己的逻辑组合在一起,以生成全面的响应。 标识直通(代理)授权会保护此流,以确保跨企业数据的可靠安全性和适当的访问控制。

注释

Fabric数据代理和 Foundry 资源应位于同一租户上,Microsoft Fabric和 Foundry 应使用相同的帐户登录。

将Fabric数据代理添加到 Azure AI 代理

可以通过编程方式或用户界面(UI)将Fabric数据代理添加到Azure AI 代理。 有关详细的代码示例和进一步说明,请参阅 Azure AI 代理集成文档。

通过 UI 添加Fabric数据代理

  • 导航到左侧窗格。 在“构建和自定义”下,选择“代理”,如以下屏幕截图所示:

截图显示 Azure Foundry 主页面。

此步骤显示现有Azure AI 代理的列表。 可以向其中一个代理添加Fabric,也可以选择新代理创建新代理。 新建代理会生成唯一的代理 ID 和默认名称。 可随时更改该名称。 有关详细信息,请参阅 Foundry 门户中的 Azure OpenAI

  • 启动“添加知识源”:选择“添加”按钮,如以下屏幕截图所示:

屏幕截图显示将 Fabric 数据代理添加为知识。

此步骤将打开受支持的知识源类型的菜单。

  • 选择Microsoft Fabric作为源:从列表中选择Microsoft Fabric,如以下屏幕截图所示:

Screenshot 演示选择 Fabric 作为知识库.

使用此选项,代理可以访问Fabric数据代理。

  • 创建连接:如果以前建立了与Fabric数据代理的连接,则可以为新的 Azure AI 代理重复使用该连接。 否则,请选择 “新建连接 ”以创建连接,如以下屏幕截图所示:

截图演示如何创建新的Fabric连接。

创建新的Microsoft Fabric连接窗口将打开,如以下屏幕截图所示:

显示创建连接的屏幕截图。

设置连接时,请将Fabric数据代理workspace-idartifact-id值作为自定义键提供。 可以在 Fabric已发布的数据代理终结点中找到 workspace-idartifact-id 值。 Fabric数据代理终结点采用以下格式:

https://fabric.microsoft.com/groups/ < workspace_id>/aiskills/<artifact-id>,然后选中“Is Secret”复选框

最后,为连接分配一个名称,并选择是将其提供给 Foundry 中的所有项目,还是将其限制为当前项目。

选择 Connect 后,Microsoft Fabric数据代理将添加为 Knowledge 资源,如以下屏幕截图所示:

显示如何添加说明的屏幕截图。

还必须向 Azure AI 代理提供有关何时、如何以及哪些情况下使用Fabric数据代理的说明。 从 Azure AI 代理的角度来看,Fabric数据代理被视为Fabric工具,因此可以在说明中引用它。

还可以根据用例要求调整部署模型、添加作或更改模型设置。 完全配置 Azure AI 代理后,在 playground 中选择 Try 以测试其性能。

以编程方式添加 Fabric 数据代理:以下步骤介绍如何以编程方式将 Fabric 数据代理添加到 Azure AI 平台上的 Python 代理中。 有关其他语言(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工具的代理

若要使Fabric数据代理工具可用于Azure AI 代理,请使用连接来初始化该工具并将其附加到代理。 在 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}")