你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 逻辑应用运行 Python 代码,以处理代理工作流中的文件(预览版)

适用于:Azure 逻辑应用(标准)

注释

此功能为预览版,受 Microsoft Azure 预览版补充使用条款限制。

在标准逻辑应用中,代理工作流不仅可以通过聊天接口使用代理循环操作处理自然语言请求,还可以在使用 代码解释器(Python 容器应用会话) 内置连接器操作时处理文件以创建代理工具。 通过这些作,代理工作流可以生成和运行 Python 代码、上传、下载和删除文件。 从方案的角度来看,代理循环可以接收指令、接受文件、在隔离环境中生成和运行代码,并返回可用结果,例如摘要、预测或其他请求的数据转换 - 全部位于同一工作流中。

注释

本指南假定你正在使用代理工作流并使用代理工具中的 代码解释器 作,以便可以让代理循环生成必要的 Python 代码。

以下示例显示了具有名为 Sales Report Agent 的代理循环作的工作流。 代理循环可以使用名为“上传销售数据”的工具来运行代码解释器,该解释器包括名为“上传文件”“执行 Python 代码”的操作。

截图显示了包含代理循环和工具的工作流,该工具使用代码解释器操作,将文件上传到容器应用的会话池,并运行 Python 代码进行文件处理。

当工作流通过请求触发器接收到指定文件的 HTTPS 请求时,HTTP 操作将获取请求的文件。 代理循环包含以下指令:上传文件至容器应用会话池,生成用于处理文件的 Python 代码,并根据指令返回结果。

注释

可以在标准逻辑应用中,将 代码解释器(Python 容器应用会话) 操作用于代理循环操作之外或非代理工作流中。 但是,必须为“执行 Python 代码”操作提供自己的 Python 代码。 在这些情况下, 代码解释器 作无法访问代理循环链接的 AI 模型提供的代理功能,其中包括自然语言交互和模型生成的代码。

代理工作流可以处理包含多样化或碎片化数据的文件,并具有 CSV、Excel 或 JSON 等格式,这些格式可以包含数千到数百万行。 然而,原始数据通常需要额外的处理才能提取有用的信息和见解,例如:

  • 清理和转换
  • 用于提取见解的自定义逻辑
  • 使数据可操作的可视化或摘要

这些任务通常需要手动执行容易出错且耗时的步骤,尤其是对于没有数据科学或工程专业知识的人员。 工作流可以使用代码解释器(Python 容器应用会话)操作来自动执行这些任务,并以原生方式将代码解释器功能引入 Azure 逻辑应用运行时。 执行 Python 代码的操作由 Azure 容器应用会话池提供支持。 Azure 容器应用中的动态会话提供对代码解释器的快速且可缩放的访问。 每个代码解释器会话均按 Hyper-V 边界完全隔离,旨在运行不受信任的代码。 在应用容器上启用网络隔离时,数据永远不会离开定义的网络边界。

这些功能使得以下示例场景成为可能:

Scenario 用例
数据研究 业务用户可以使用自然语言询问有关数据的问题,而无需编写代码或手动操作电子表格并使用自然语言,例如:

-“查找按收入排名前 5 的产品。”
-“按区域预测下一季度的需求。”
-“据购买模式突出显示客户细分。”
Operations 清理大型日志文件,发现异常,并产生见解以提高可靠性。
金融 分析费用报告、检测异常或从 Excel 导出生成季度明细。
销售和营销 上传原始销售数据并获取按需摘要、预测或区域比较。

本指南介绍如何在代理工作流中进行设置和使用各种 代码解释器(Python 容器应用会话) 操作。

先决条件

  • 一个 Azure 帐户和订阅。 获取免费的 Azure 帐户

  • Azure 容器应用中的容器应用和代码解释器会话池。

    • 如要创建应用,请参阅快速入门:使用 Azure 门户部署你的第一个应用程序。 若要确保数据永远不会离开网络,请在容器应用上启用网络隔离。

      如需了解更多信息,请参阅以下文章:

    • 若要创建会话池,请参阅“在 Azure 容器应用中创建会话池”。 可以使用 Azure 门户或 Azure CLI。

      重要

      对于会话池类型,请确保选择“Python 代码解释器”

    • 可选:可以使用 Azure 门户或发送 HTTPS 请求将文件上传到会话。 然后,可以在 Python 代码中将文件引用为数据源。 有关详细信息,请参阅“上传文件 - Azure 容器应用中的无服务器代码解释器会话”。 否则,可以使用“代码解释器(Python 容器应用会话)”连接器中的“上传文件”操作

      注释

      若要在会话池中管理文件或运行代码,请确保在会话池上具有名为“Azure ContainerApps 会话执行者”的 Azure 内置角色。 有关此任务,请参阅“授予标识对资源的访问权限”。

      若要通过 Azure 门户上传文件,请执行以下步骤:

      1. Azure 门户中,打开代码解释器会话池资源。

      2. 在资源边栏上,选择“操场”

      3. 在“操场”工具栏上,选择“管理文件”

        以下示例显示了“操场”工具栏上的“管理文件”命令

        屏幕截图显示容器应用会话池资源、边栏菜单(选中“操场”)和“操场”工具栏(选中“管理文件”命令)。

      4. 在“管理文件”窗格中,选择“上传文件”,并提供要上传的文件

  • 标准逻辑应用资源和代理工作流。 请确保在默认智能体操作和 AI 模型之间建立连接,以便用于代码生成

    若要创建此工作流,请参阅 创建使用 AI 模型的工作流来完成 Azure 逻辑应用中的任务

    注释

    代理工作流必须以 请求 触发器开头。 代码解释器(Python 容器应用会话)连接器提供操作,但不提供触发器

连接器技术参考

有关此连接器操作的技术信息,请参阅“连接器的参考文档”。

上传文件

  1. Azure 门户中,打开你的标准逻辑应用资源。

  2. 在资源边栏的 “工作流”下,选择“ 工作流”,然后选择代理工作流。

  3. 在工作流边栏上的 “工具”下,选择设计器以打开工作流。

  4. 在默认智能体操作中,按照常规步骤创建一个工具并添加名为“上传文件”的代码解释器(Python 容器应用会话)操作

  5. 如果系统提示你创建连接,请在“创建连接”窗格中提供会话池的连接信息

  6. 在操作信息窗格中,展开“要上传的输入文件”,并提供以下值:

    参数 价值 Description
    Input file name < file-name> 要为文件分配的名称。
    Input file content < file-content> 要上传的文件内容的路径。

    在以下示例中,工作流使用 HTTP 操作,该操作发出 REST 调用以从其源位置获取文件。 智能体循环操作有一个工具,该工具使用文件名和内容作为参数的上传文件操作。 文件名是手动输入的,而文件内容引用了前面 HTTP 操作的输出

    显示包含 HTTP 操作的代理工作流的屏幕截图,其中一个操作获取文件,另一个上传文件到会话池。

  7. 如果要上传更多文件,请选择“添加新项”

  8. 完成后,保存工作流。 在设计器工具栏上选择“保存”。

运行 Python 代码

  1. Azure 门户中,打开你的标准逻辑应用资源。

  2. 在资源边栏的 “工作流”下,选择“ 工作流”,然后选择代理工作流。

  3. 在工作流边栏上的 “工具”下,选择设计器以打开工作流。

  4. 对于 默认代理 操作,请重命名场景的代理循环,并按照以下步骤操作:

    1. 根据是否使用上一部分中的“上传文件”操作创建了工具,选择以下任一选项

      • 如果存在具有“上传文件”操作的工具,则直接在该操作下按照常规步骤将名为“执行 Python 代码”的代码解释器(Python 容器应用会话)操作添加到该工具

      • 如果工作流以其他方式上传文件,请按照常规步骤使用名为“执行 Python 代码”的代码解释器(Python 容器应用会话)操作创建工具

    2. 如果系统提示你创建连接,请在“创建连接”窗格中提供会话池的连接信息

    3. 在新工具上,按照“为模型生成的输出创建智能体参数的常规步骤”操作。

      此智能体参数将智能体链接的 AI 模型在运行时生成的 Python 代码传递给“执行 Python 代码”操作

      完成后,“执行 Python 代码”操作现在会在 Python 代码框中显示以下代码引用@{agentParameters('python_code')}

      屏幕截图显示了执行 Python 代码的智能体工作流和操作中的代码引用。

    4. 要使“执行 Python 代码”操作使用来自“上传文件”操作的文件,请按照以下步骤将“会话 ID”参数值设置为“上传文件”操作的会话 ID

      1. 在“执行 Python 代码”操作中,从“高级参数”列表中选择“会话 ID”,将此参数添加到操作中

      2. 在显示输入选项的会话 ID 参数内进行选择,然后选择动态内容选项(闪电图标)

      3. 在动态内容列表中,选择“上传文件”下的“会话 ID”

      以下示例显示将“会话 ID”参数设置为“上传文件”操作的会话 ID

      屏幕截图显示了执行 Python 代码操作的高级参数和会话 ID 参数。

    5. 重命名该工具以描述其用途或任务。

  5. 完成后,保存工作流。 在设计器工具栏上选择“保存”。

连接信息

下表描述了连接到 Azure 容器应用中的会话所需的信息:

参数 必选 价值 Description
连接名称 是的 < 连接名称> 用于标识连接的名称。
连接类型 是的 托管标识 要用于连接的身份验证。

注意:要使用托管标识身份验证,必须在标准逻辑应用上设置托管标识,并确保其具有访问所需资源的权限。 在会话池资源上,确保使用名为“Azure ContainerApps 会话执行者”的角色设置托管标识。 有关详细信息,请查看:在 Azure 逻辑应用中使用托管标识验证对 Azure 资源的访问和连接
Subscription 是的 < Azure-subscription> 要使用的 Azure 订阅。
会话池 是的 < session-pool> Azure 容器应用中的会话池,例如 fabrikam-session-pool (/fabrikam-session-pool)