你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure 逻辑应用(消耗)
注释
此功能处于预览状态,可能会产生费用,并受 Azure 预览版Microsoft补充使用条款的约束。
代理通常需要使用外部系统,例如调用 API、更新系统或协调多个步骤。 但是,如果将代理和集成逻辑混合在一起,或者直接在代理代码中嵌入集成逻辑,则解决方案更难维护、测试、更新和改进。 代理可以善于选择要执行的操作或要使用的工具。 但是,它们不旨在管理重试尝试、长时间运行的步骤或外部系统故障。
在 Foundry 中,将工作流从 Azure 逻辑应用添加到代理作为 操作。 然后,代理可以跨Microsoft和非Microsoft服务和产品运行多步骤业务任务-通常无需代码。 你的解决方案通过可重用集成逻辑从代理功能中获益。
下图显示了 Foundry(经典)中的代理操作与 Azure 逻辑应用中的工作流的关系:
代理侧重于选择正确的操作来调用集成工作流,而工作流处理业务流程和集成任务。
Azure 逻辑应用支持 1,400 多个连接器和内置的本机数据操作,因此代理可以与许多 Microsoft 和非 Microsoft 的服务或产品集成。 如果预生成的连接器或操作不存在,请创建自定义连接器。
本文介绍如何在 Foundry 中将 Azure 逻辑应用中的工作流用作代理操作工具。 向导将指导你如何设置操作过程。 然后,可以在 Azure 逻辑应用的工作流设计器中编辑工作流或扩展工作流。
有关详细信息,请参见:
注释
本文介绍 Microsoft Foundry (经典) 门户。 有关新门户的详细信息,请参阅新的 Microsoft Foundry 门户
先决条件
一个 Azure 帐户和订阅。 获取免费的 Azure 帐户。
-
此项目在生成 AI 应用和解决方案时组织工作并保存状态。
若要创建中心项目以便托管项目并设置团队协作环境,你需要基于最低权限原则为 Microsoft Entra 基于角色的访问控制 (RBAC) 分配以下角色之一:
- 参与者 (最低权限)
- 所有者
如果你有任何其他角色,则需要为你创建中心。 有关详细信息,请参见:
为 Foundry 项目部署的 Azure OpenAI 模型版本 gpt-4.1 或更早版本。
如果没有此模型,请参阅 “部署模型”。
满足以下要求的 消耗逻辑应用资源和工作流 :
要求 DESCRIPTION 托管选项 使用 消耗 托管选项。 Azure订阅 使用与 Foundry 项目相同的订阅。 Azure 资源组 使用与 Foundry 项目相同的资源组。 请求触发器 指定在工作流中运行任何后续操作之前要满足的条件的操作。 默认触发器名称是 收到 HTTP 请求时。
代理操作调用需要基于 REST 的 API。 请求触发器提供服务或系统可以调用的 REST 终结点来运行工作流。 因此,对于操作调用,只能使用以 请求 触发器开头的工作流。触发器描述 此说明提供了 Azure 逻辑应用中的触发器信息,可帮助代理在 Foundry 中选择正确的操作。 触发器架构 描述触发器的预期输入的 JSON 架构。
Foundry 自动通过操作定义导入架构。 有关详细信息,请参阅 请求 触发器。响应操作 工作流必须始终以此操作结尾,此操作在工作流完成时返回对 Foundry 的响应。 若要实现业务逻辑或用例,工作流可以包含 连接器库中的任何其他操作,包括实现业务方案的逻辑的运行时原生内置操作。
例如,下图展示了一个名为
Get-weather-forecast-today的示例操作,该操作在 Foundry 中作为名为WeatherAgent的智能体的工具添加。 此操作运行在 Azure 逻辑应用中命名的Get-weather-forecast-today工作流:有关详细信息,请参见:
使用 Foundry 项目中的信息设置以下环境变量:
export PROJECT_ENDPOINT="<your_project_endpoint>" export MODEL_DEPLOYMENT_NAME="<your_model_deployment_name>" export SUBSCRIPTION_ID="<your_Azure_subscription_ID>" export resource_group_name="<your_resource_group_name>"有关示例代码,请参阅 GitHub 上的 AzureLogicAppTool 实用工具。
局限性
此版本具有以下限制:
| 限度 | DESCRIPTION |
|---|---|
| 逻辑应用工作流支持 | 代理操作目前仅支持在多租户 Azure 逻辑应用中运行的消耗逻辑应用工作流。 消耗逻辑应用资源只能有一个工作流。 代理操作目前不支持在单租户 Azure 逻辑应用、应用服务环境或混合部署中的标准逻辑应用工作流。 标准逻辑应用资源可以有多个工作流。 |
有关详细信息,请参阅 逻辑应用部署的托管选项。
1:向您的代理添加一个操作
若要为代理设置操作以运行逻辑应用工作流,请执行以下步骤:
在 Foundry(经典版)门户中,打开项目。
在项目边栏的 “生成”和“自定义”下,选择 “代理”。
如果你未为智能体部署模型,系统会打开一个向导,供你在继续之前完成此任务。 请确保选择支持针对代理操作的模型。 有关详细信息,请参阅 部署模型。
在“ 创建和调试代理 ”页上的 “我的代理”下,选择代理。
在代理列表旁边,在 “设置” 部分中,向下滚动到 “操作 ”部分,然后选择“ 添加”。
注释
并非所有模型都支持代理操作。 如果 “操作” 部分不可用,则需要部署 GPT-4.1 模型或更早版本。
在 “添加操作 向导”中,选择 “Azure 逻辑应用”。
在选择操作下,选择一个具有以下标签之一的预定义操作:
操作标签 DESCRIPTION Microsoft 作者 此操作使用 Microsoft 编写的模板来创建该操作的工作流。 工作流 此操作使用您 Azure 订阅中符合条件的逻辑应用工作流作为模板来创建该操作的工作流。
注意:如果选择此选项,请跳到名为 确认操作详情 的部分。 如果工作流未按预期显示在操作库中, 请检查先决条件#。以下示例使用由 Microsoft 创作的名为 获取今天的天气预报 的操作,通过 MSN 天气进行:
在 “添加逻辑应用”操作 向导的 “输入一些基本信息”部分,填写以下信息:
参数 必选 价值 DESCRIPTION 您的操作名称 是的 < action-name> 操作的友好名称,是以任务为重点,谓词开头的简洁的名称。 此名称还用于 Azure 逻辑应用中的逻辑应用资源和工作流。
注意:查看以下内容:
-作名称只能使用字母、数字和以下特殊字符:-、(、、、_或'。
- 不能使用空格或其他特殊字符。
- 消耗型逻辑应用资源与工作流结合,并具有 1:1 关系,因此它们使用相同的名称。 相比之下,标准逻辑应用资源可以有多个使用不同名称的工作流。
此示例使用 Get-weather-forecast-today。您的操作描述 是的 < action-description> 明确描述行动目的的说明。
此示例使用 此作创建可调用的消耗逻辑应用工作流,该工作流可获取当前天气预报并在全局多租户 Azure 逻辑应用中运行。订阅 是的 <Azure 订阅> 要使用的 Azure 订阅大概与项目和模型相同。 资源组 是的 <Azure 资源组> 要使用的 Azure 资源组。 位置 是的 < Azure-region> 托管逻辑应用资源和工作流的 Azure 区域。 以下屏幕截图显示了示例操作 Get-weather-forecast-today 的详细信息:
当您完成时,选择下一步。
2:创建和验证连接
若要创建操作所需的连接,并验证对所需服务、系统、应用或数据源的访问权限,请执行以下步骤。 基础模板指定要用于此操作和相应逻辑应用工作流的连接器。
在 “添加逻辑应用”操作 向导的 “身份验证”下,对为操作创建的任何连接进行身份验证。
在 “连接 ”列中,为相关服务或数据源选择 “连接 ”。
以下屏幕截图显示了为 MSN 天气服务创建和进行身份验证的示例连接:
某些连接需要更多详细信息,因此请按照提示提供请求的信息。
针对每个必需的连接重复这些步骤。
当您完成时,选择下一步。
3:确认操作详细信息
检查所有操作信息是否都正确。 如果选择了由 Microsoft 创建的操作,请阅读并同意确认声明。
在 “添加逻辑应用”操作 向导的 “资源”下,检查提供的所有操作信息。
对于所选的微软创作的操作,请完成以下步骤:
选择“下一步”以离开“资源”部分后,请查看以下声明,其中确认你已了解以下事件:
无法返回到前面的步骤。
该操作将创建消耗逻辑应用资源。
连接到 Azure 逻辑应用会在您的 Azure 帐户中产生费用。
有关消耗逻辑应用工作流的计费模型的详细信息,请参阅:
若要同意,请选择确认框,例如:
当您完成时,选择下一步。
4:将操作作为工具完成创建
请查看门户生成的、关于操作的信息,将其视为一种工具。 代理使用此信息来运行操作(工具),并验证对任何相关 Azure、Microsoft和非Microsoft服务或资源的访问权限。
在 “添加逻辑应用”操作 向导的 “架构 ”部分中,查看以下信息,并确保提供有关调用该工具的方案的说明:
参数 DESCRIPTION 工具名称 代理使用的工具用于运行操作并访问 Azure、Microsoft、外部服务、数据源或专用 AI 模型,其名称是可编辑的,以便代理可以获取数据、执行任务以及与其他平台进行交互。
注意:
- 工具名称只能使用字母、数字和下划线 (_) 字符。
- 不能使用空格或其他特殊字符。身份验证连接 该连接的只读名称,工具使用该连接访问 Azure、Microsoft 和外部资源,而无需每次都要求提供凭据。 有关详细信息,请参阅 Foundry 门户中的连接。 介绍如何调用该工具 指定代理何时调用该工具的说明。 架构 JavaScript 对象表示法(JSON)格式的逻辑应用工作流的架构。 完成后,选择“创建”。
向导会将你返回到智能体的“智能体”页。 在 “设置” 部分中, “操作” 部分现在显示 Azure 逻辑应用的工具名称和图标,例如:
5:测试代理操作
若要使用 Agents 操场尝试新的代理操作,请执行以下步骤:
在“代理”页上的“设置”部分中,选择“在测试环境中试用”。
在“代理”操场页上,在用户查询聊天框中询问有关天气的问题,例如:
伦敦的天气是什么? 以项目符号列表格式显示结果。
代理返回类似于以下示例的响应:
6:删除资源
如果不需要为本指南创建的资源,请将其删除,以免继续收费。 可以按照以下步骤删除包含这些资源的资源组,也可以单独删除每个资源。
在 Foundry 门户中,若要从代理中删除该操作,请在操作名称旁边选择省略号(...)按钮,然后选择“删除”。
在 Azure 门户 标题栏搜索框中,输入 资源组,然后选择 资源组。
查找包含已部署中心资源的资源组。
在“概述”页面的工具栏上,选择“删除资源组”。
出现确认窗格时,输入资源组名称,然后选择“删除”。
1:设置环境变量
在系统上,设置以下环境变量:
| 环境变量 | DESCRIPTION |
|---|---|
PROJECT_ENDPOINT |
Microsoft Foundry 项目的终结点。 若要查找此值,请在 Foundry 门户中的项目边栏中选择“ 概述”。 查找名为 Microsoft Foundry 项目终结点的属性。 |
MODEL_DEPLOYMENT_NAME |
AI 模型的部署名称。 若要查找此值,请在 Foundry 门户的项目边栏菜单中,在 “我的资产 ”部分中,选择 “模型 + 终结点”,然后查找“ 名称 ”列。 |
SUBSCRIPTION_ID |
Azure 订阅的 ID。 |
resource_group_name |
资源组的名称。 |
有关示例代码,请参阅:
-
此示例演示如何在 Azure 门户中将 Foundry(经典)中的代理与消耗逻辑应用集成。
2:创建项目客户端
若要连接到 Foundry 项目和其他资源,请执行以下步骤来创建客户端对象:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Initialize the AIProjectClient
project_client = AIProjectClient(
endpoint=os.environ["PROJECT_ENDPOINT"],
credential=DefaultAzureCredential()
)
3:注册逻辑应用
通过提供触发器名称和信息来注册 Consumption Logic App 资源。 若要查找 AzureLogicAppTool 实用工具代码,请访问 GitHub 上的完整示例。
from user_logic_apps import AzureLogicAppTool
# Logic app details
LOGIC_APP_NAME = "your_logic_app_name"
TRIGGER_NAME = "your_trigger_name"
# Register the logic app name with the agent tool utility by extracting the following values from environment variables
subscription_id = os.environ["SUBSCRIPTION_ID"]
resource_group = os.environ["resource_group_name"]
# Create and initialize AzureLogicAppTool utility
logic_app_tool = AzureLogicAppTool(subscription_id, resource_group)
logic_app_tool.register_logic_app(LOGIC_APP_NAME, TRIGGER_NAME)
print(f"Registered logic app '{LOGIC_APP_NAME}' with trigger '{TRIGGER_NAME}'.")
4:使用工作流作为操作创建代理(工具)
以下代码创建代理并将逻辑应用附加为代理操作或工具。 在此示例中,逻辑应用工作流会发送电子邮件。
from azure.ai.agents.models import ToolSet, FunctionTool
from user_functions import fetch_current_datetime
from user_logic_apps import create_send_email_function
# Create the logic app action for the agent
send_email_func = create_send_email_function(
logic_app_tool, logic_app_name
)
# Prepare the action tool for the agent
functions_to_use = {fetch_current_datetime, send_email_func}
# Create an agent and assign the toolset
functions = FunctionTool(functions=functions_to_use)
toolset = ToolSet()
toolset.add(functions)
agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="SendEmailAgent",
instructions="You're a specialized agent for sending emails.",
toolset=toolset,
)
print(f"Created agent, ID: {agent.id}")
5:创建用于通信的线程
以下代码创建一个线程,并添加用户消息以启动项目客户端和代理之间的对话。
# Create a thread for communication
thread = project_client.agents.threads.create()
print(f"Created thread, ID: {thread.id}")
# Create a message in the thread
message = project_client.agents.messages.create(
thread_id=thread.id,
role="user",
content="Hello, send an email to <RECIPIENT_EMAIL> with the date and time in '%Y-%m-%d %H:%M:%S' format.",
)
print(f"Created message, ID: {message['id']}")
6:测试代理和操作
若要测试代理执行任务的方式,请运行代理,观察模型如何使用逻辑应用工具,并检查输出。
# Create and run the agent on the thread
run = project_client.agents.runs.create_and_process(
thread_id=thread.id, agent_id=agent.id
)
print(f"Run finished with status: {run.status}")
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Fetch, log, and display all messages
messages = project_client.agents.messages.list(thread_id=thread.id)
for message in messages:
if msg.txt = msg.text_messages[-1]
print(f"Role: {msg.role}: {last_text.text.value}")
7:清理资源
完成清理资源后,请删除代理,这样就不会继续收费。
# Delete the agent
project_client.agents.delete_agent(agent.id)
print("Deleted agent.")
可选:查看基础逻辑应用和工作流
作运行后,可以在 Azure 门户中查看基础逻辑应用资源和工作流。 可以查看工作流的运行历史记录,以调试或排查工作流可能遇到的问题。
在 Azure 门户 标题栏搜索框中,输入所创建操作的名称。
在结果列表中,在 “资源”下,选择逻辑应用资源。
若要查看工作流的运行历史记录、输入、输出和其他信息,请在“ 开发工具”下的逻辑应用边栏上选择“ 运行历史记录”。
在 “运行历史记录 ”列表中,选择最新的工作流运行,例如:
监视视图打开并显示工作流中每个操作的状态后,选择一个操作以打开信息窗格并查看该操作的输入和输出。
此示例选择名为“获取今天的预测”的动作,例如:
有关详细信息,请参阅 “查看工作流状态”和“运行历史记录”。
可选:在设计器中打开工作流
若要查看工作流定义和操作或编辑工作流,请打开设计器。
在逻辑应用边栏上的 “开发工具”下,选择设计器。 如果仍在监视视图中,请在监视视图工具栏上选择 “编辑”。
现在可以查看工作流的操作,其中包括触发器和操作,例如:
若要查看操作的参数和设置,请在设计器中选择该操作,例如:
若要扩展工作流的行为,请添加更多操作。
要使任何工作流通过 Foundry 中的 “添加逻辑应用操作库” 显示并作为代理工具运行,请确保对工作流所做的任何更改仍满足 特定要求。
谨慎
虽然可以编辑工作流,但不要删除或更改工作流中的 请求 触发器和现有操作。 否则,可能会破坏代理与 Foundry 中的相应操作与 Azure 门户中工作流之间的关系。 这些项已设置协同工作的参数,因此对这些操作的更改可能会中断代理中的操作。
相反,请考虑创建一个自定义版本或其他流程,并将其作为一个操作添加到代理中。 例如,触发器使用以下参数,这是调用触发器所必需的:
参数 DESCRIPTION 名称 此名称是触发器的 HTTPS URL 的一部分。 外部调用方(如其他服务)向此 URL 发送 HTTPS 请求,这会触发触发器并启动工作流。 触发器始终是工作流中的第一步,并指定运行触发器需满足的条件。 HTTPS URL 首次保存工作流时,将生成此 URL,并用于调用触发器为工作流创建的终结点。 方法 此设置指定触发器是接受所有还是仅接受特定的 HTTPS 方法。 请求正文 JSON 架构 如果要验证触发器希望在 HTTPS 请求中接收的输入,请包含一个 JSON 架构,该架构指定并验证外部调用方在其请求中包含的输入。 有关详细信息,请参阅 使用触发器或操作生成工作流。
若要保存任何更改,请在设计器工具栏上选择“ 保存”。
可选:在设计器中测试更新的工作流
如果对天气工作流进行更改或想要测试其他工作流,请执行以下步骤:
在设计器工具栏上,选择“运行>使用有效负载运行”。
打开“运行有效负载”窗格后,在“正文”字段中提供预期的 JSON 格式触发器输入,例如:
{ "location": { "type": "London", "description": "Location for the weather" } }完成后,选择“ 运行”。
在“ 输出 ”选项卡上, “响应正文 ”包含工作流的结果和响应。
如果工作流运行生成错误或需要故障排除,请打开工作流的运行历史记录。 使用 “查看工作流运行历史记录”中的相关步骤检查每个操作的输入和输出。
计费和定价
你会根据即用即付计费模式产生使用消耗逻辑应用工作流的费用。
有关 Azure 逻辑应用,请参阅:
对于 Foundry,请参阅以下资源:
FAQ
Foundry 对 Azure 逻辑应用调用的身份验证如何工作?
对于从 Foundry 到逻辑应用工作流中的 请求 触发器的入站调用,Azure 逻辑应用支持以下类型的身份验证:
基于共享访问签名(SAS)的身份验证
当代理调用运行逻辑应用工作流的操作时,Foundry 会将请求发送到工作流中的回调 URL的请求触发器。 可以通过从 Azure 逻辑应用的 REST API 使用工作流 - 列表回调 URL 来获取此回调 URL,其中包括 SAS。
对于 SAS 身份验证,Azure 逻辑应用还支持以下任务:
- 创建具有指定有效期的 SAS URL。
- 使用多个密钥并根据需要轮换它们。
有关详细信息,请参阅 生成共享访问签名(SAS)密钥或令牌。
Microsoft基于 Entra ID 的 OAuth 身份验证策略
Azure 逻辑应用支持使用 OAuth 和 Microsoft Entra ID 对请求触发器的调用进行身份验证。 可以指定验证 OAuth 令牌时要使用的身份验证策略。 有关详细信息,请参阅 在 Azure 逻辑应用中使用 Microsoft Entra ID 启用 OAuth 2.0。
有关在 Azure 逻辑应用中保护入站调用的详细信息,请参阅对基于请求的触发器的入站调用的访问。