你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure 逻辑应用(消耗型 + 标准型)
如果需要独立运行的 AI 支持的自动化,请在 Azure 逻辑应用中创建 自治代理 工作流。 这些工作流使用代理 循环 和 大型语言模型 (LLM),在不人工干预的情况下做出决策和完成任务。 这些工作流也适用于可能长时间运行的自动化,需要更强大的治理、隔离或支持自动回滚或补偿策略。
以下示例工作流使用自治代理获取当前天气并发送电子邮件通知:
本指南演示如何创建使用 自治代理 工作流类型的消耗或标准逻辑应用。 此工作流无需人工交互即可运行,并使用生成的工具来完成任务。 有关代理工作流的高级概述,请参阅 Azure 逻辑应用中的 AI 代理工作流。
重要
自动化消费代理工作流正处于预览阶段,并遵循 Microsoft Azure 预览补充使用条款。
先决条件
根据是要创建消耗型还是标准逻辑应用,以下先决条件适用:
一个 Azure 帐户和订阅。 获取免费 Azure 帐户。
使用工作流类型名为自治代理的消耗型逻辑应用资源。 请参阅 Azure 门户中的“创建消耗逻辑应用工作流”。
注释
只能使用 Azure 门户生成自治代理工作流,而不是 Visual Studio Code。
消耗型自治代理工作流无需手动设置单独的 AI 模型。 工作流会自动包含一个代理操作,该操作使用托管在 Azure AI Foundry 中的 Azure OpenAI 服务模型。 消耗型自治工作流仅支持特定模型,这取决于您的逻辑应用所在的区域。 请参阅支持的模型。
若要遵循这些示例,需要一个电子邮件帐户来发送电子邮件。
本指南中的示例使用 Outlook.com 帐户。 对于自己的方案,可以在 Azure 逻辑应用中使用任何受支持的电子邮件服务或消息应用,例如 Office 365 Outlook、Microsoft Teams、Slack 等。 其他电子邮件服务或应用的设置与示例类似,但存在细微差异。
代理工作流支持的 Azure OpenAI 服务模型
以下列表指定可用于代理工作流的 AI 模型:
代理会自动使用以下 Azure OpenAI 服务模型之一:
- gpt-4o-mini
- gpt-5o-mini
重要
代理使用的 AI 模型可以源自任何区域,因此模型处理的数据不能保证特定区域的数据驻留。
账单管理
消耗:计费使用即用即付模型。 智能体循环定价基于每个智能体操作使用的令牌数计算,并在你的帐单上显示为企业单位。 有关特定定价信息,请参阅 Azure 逻辑应用定价。
标准:尽管代理工作流不会产生额外费用,但 AI 模型使用会产生费用。 有关详细信息,请参阅 Azure 定价计算器。
限制和已知问题
下表根据逻辑应用资源类型描述了此版本中的当前限制和任何已知问题。
| 逻辑应用程序 | 限制或已知问题 |
|---|---|
| 推送、请求和匿名 | 若要为代理创建工具,可应用以下限制: - 只能添加动作,不能添加触发器。 - 工具必须以一个操作开始,并且始终包含至少一个操作。 - 工具仅在存在该工具的代理内工作。 - 不支持控制流操作。 |
| 消耗 | - 只能在 Azure 门户中创建消耗代理工作流,而不是 Visual Studio Code。 - 代理使用的 AI 模型可以源自任何区域,因此模型处理的数据不能保证特定区域的数据驻留。 - 根据使用的令牌数量对代理操作进行限制。 |
| 标准 | - 不支持的工作流类型: 无状态 注意:Azure AI Foundry 项目要求使用托管标识身份验证。 - 有关 Azure OpenAI 服务、Azure AI Foundry 和 Azure 逻辑应用中的常规限制,请参阅: - Azure OpenAI 服务配额和限制 - Azure AI Foundry 模型中的 Azure OpenAI 配额和限制 - Azure 逻辑应用限制和配置 |
创建自治代理工作流
以下部分演示如何开始创建自治代理工作流。
自治代理工作流类型创建以请求触发器开头的部分工作流。 工作流还包括一个空的默认代理操作。
若要打开此部分工作流,请执行以下步骤:
在 Azure 门户中,打开你的消耗逻辑应用资源。
在资源边栏上的 “开发工具”下,选择设计器以打开部分代理工作流。
设计器显示一个部分工作流,其中包含名为“ 收到 HTTP 请求时”的触发器。 在触发器下方,会显示一个名为“默认代理”的空代理操作。 对于该场景,您不需要进行任何其他触发器设置。
继续转到下一部分以设置您的软件代理。
注释
如果尝试立即保存工作流,则会收到工作流验证失败的错误。
在标准工作流中,设计器工具栏还会在 “错误 ”按钮上显示一个红点。 设计器会提醒你出现此错误情况,因为代理需要设置,然后才能保存任何更改。 但是,现在无需设置代理。 可以继续创建工作流。 只需记住在保存工作流之前设置代理即可。
设置或查看 AI 模型
若要为代理设置或查看 AI 模型,请根据逻辑应用类型执行以下步骤:
默认情况下,代理会自动使用逻辑应用区域中提供的 Azure OpenAI 模型。 某些区域支持 gpt-4o-mini,而另一些区域则支持 gpt-5o-mini。
若要查看代理使用的模型,请执行以下步骤:
重命名代理
按照以下步骤更新代理名称以明确标识代理的目的:
设置代理指令
代理需要说明,说明代理可以扮演的角色以及代理可以执行的任务。 若要帮助代理了解和了解这些职责,还可以包括以下信息:
- 工作流结构
- 可用操作
- 任何限制或限制条件
- 特定情境或特殊情况的交互
为了获得最佳结果,请提供规范性说明,并准备好以迭代方式优化说明。
在“代理指令”框中,输入代理了解其角色和任务所需的相关指令。
对于这个例子,天气代理示例会使用以下示例指令,你之后可以通过提供包含你自己电子邮件地址的订阅者列表来进行测试:
You're an AI agent that generates a weather report, which you send in email to each subscriber on a list. This list includes each subscriber's name, location, and email address to use. Format the weather report with bullet lists where appropriate. Make your response concise and useful, but use a conversational and friendly tone. You can include suggestions like "Carry an umbrella" or "Dress in layers".下面是一个示例:
您可以选择性地提供供代理用作提示信息的用户说明书。
为了获得最佳结果,请让每个用户指令专注于特定任务,例如:
在“代理信息”窗格的“ 用户说明 ”部分的“ 用户说明项 - 1 ”框中,输入代理的提示。
若要添加其他说明,请选择“ 添加新项”。
在 “用户说明”项 - 2 框中,输入代理的另一个提示语。
重复操作,直到完成添加您想要的所有提示。
现在,可以保存工作流。 在设计器工具栏上选择“保存”。
检查是否有错误
若要确保工作流在此阶段没有错误,请执行以下步骤:
创建“获取天气”工具
若要使代理运行 Azure 逻辑应用中可用的预生成作,必须创建一个或多个工具供代理使用。 工具必须至少包含一个操作,并且只能包含操作。 代理使用特定参数调用该工具。
在此示例中,代理需要一个获取天气预报的工具。 可以按照以下步骤生成此工具:
在设计器中,在代理内的“添加工具”下,选择加号 () 以打开可在其中浏览可用操作的窗格+。
在 “添加操作”窗格中,按照您的逻辑应用的常规步骤添加最适合您方案的操作。
此示例使用名为“获取当前天气”的MSN 天气操作。
选择该作后, 工具 容器和所选作将显示在设计器上的代理中。 这两个信息窗格也同时打开。
在工具信息窗格中,重命名该工具以描述其用途。 对于此示例,请使用
Get weather。在“ 详细信息 ”选项卡上,对于 “说明”,输入工具说明。 对于此示例,请使用
Get the weather for the specified location.在 “说明”下, “代理参数 ”部分仅适用于特定用例。 有关详细信息,请参阅 “创建代理参数”。
继续阅读下一部分,详细了解代理参数及其用例,以及如何根据这些用例创建它们。
为“获取当前天气”的动作创建代理参数
操作通常需要参数来指定要使用的值。 除了一个差异之外,工具中的操作几乎相同。 您可以创建代理参数,代理会使用这些参数为工具中的操作指定参数值。 可以指定模型生成的输出、来自非模型源的值或组合。 有关详细信息,请参阅 代理参数。
下表描述了创建代理参数的用例,以及基于用例创建代理参数的位置:
| 目标 | 创建代理参数的位置 |
|---|---|
| 仅使用模型生成的输出。 在同一工具中与其他操作共享。 |
从动作参数开始。 有关详细步骤,请参阅 仅使用模型生成的输出。 |
| 使用非模型值。 | 不需要代理参数。 此体验与 Azure Logic Apps 中的常规动作设置体验相同,但为了方便在使用来自非模型源的值中重复此体验。 |
| 将模型生成的输出与非模型值一起使用。 在同一工具中与其他操作共享。 |
从工具开始,在 “代理参数 ”部分中。 有关详细步骤,请参阅 使用模型输出和非模型值。 |
仅使用模型生成的输出
对于仅使用模型生成的输出的作参数,请按照以下步骤创建代理参数:
在工具中,选择打开信息窗格的操作。
对于此示例,动作是获取当前天气。
在“ 参数 ”选项卡上,在参数框中选择以显示参数选项。
在 “位置” 框的右边缘,选择“星形”按钮。
此按钮具有以下工具提示: 选择以生成代理参数。
“创建代理参数”窗口显示“名称”、“类型”和“说明”字段,这些字段是从源作参数预填充的。
下表描述了定义代理参数的字段:
参数 价值 Description 名称 < agent-parameter-name> 代理参数名称。 类型 < 代理参数数据类型> 代理参数数据类型。 说明 < agent-parameter-description> 可以轻松标识参数用途的代理参数说明。 注释
Microsoft建议您遵循操作的 Swagger 定义。 例如,对于来自由全球多租户 Azure 托管和管理的 MSN 天气“共享”连接器的“获取当前天气”操作,请参阅 MSN 天气连接器技术参考一文。
准备就绪后,选择“创建”。
以下示例显示了使用 Location 代理参数获取当前天气作:
保存工作流。
使用来自非模型源的值
对于仅使用非模型值的作参数值,请选择最适合你的用例的选项:
使用工作流中早期操作的输出
若要浏览并从这些输出中进行选择,请执行以下步骤:
在参数框中选择,然后选择闪电图标以打开动态内容列表。
从列表中,在触发器或操作部分,选择所需的输出。
保存工作流。
使用表达式的结果
若要创建表达式,请执行以下步骤:
在参数框中选择,然后选择函数图标以打开表达式编辑器。
从可用函数中进行选择以创建表达式。
保存工作流。
有关详细信息,请参阅 Azure 逻辑应用中工作流表达式函数的参考指南。
使用模型输出和非模型值
某些场景可能需要指定一个动作参数值,该值使用模型生成的输出和非模型值。 例如,你可能想要创建一个电子邮件正文,该正文使用静态文本、工作流中早期作的非模型输出和模型生成的输出。
对于这些方案,请按照以下步骤在工具上创建代理参数:
在设计器上,选择要在其中创建代理参数的工具。
在“ 详细信息 ”选项卡上的 “代理参数”下,选择“ 创建参数”。
展开 新代理参数,并提供以下信息,确保与动作参数详细信息匹配。
对于此示例,示例操作是获取当前天气。
注释
Microsoft建议您遵循操作的 Swagger 定义。 例如,要查找“获取当前天气”操作的此信息,请参阅MSN 天气连接器技术参考文章。 示例作由 MSN Weather 托管的“共享”连接器提供,该连接器托管并在全局多租户 Azure 中运行。
参数 价值 Description 名称 < agent-parameter-name> 代理参数名称。 类型 < 代理参数数据类型> 代理参数数据类型。 说明 < agent-parameter-description> 可以轻松标识参数用途的代理参数说明。 可以从以下选项中进行选择,或将它们组合在一起以提供说明:
- 包含参数用途、允许的值、限制或限制等详细信息的纯文本文本。
- 工作流中先前操作的输出。 若要浏览并选择这些输出,请在 “说明 ”框中选择,然后选择闪电图标以打开动态内容列表。 从列表中选择所需的输出。
- 表达式的结果。 若要创建表达式,请在 “说明 ”框中选择,然后选择函数图标以打开表达式编辑器。 从可用函数中进行选择以创建表达式。完成后,在 “代理参数”下,将显示新的代理参数。
在设计器的工具中,选择要打开操作信息窗格的操作。
在“ 参数 ”选项卡上,在参数框中选择以显示参数选项,然后选择机器人图标。
从 “代理参数 ”列表中选择前面定义的代理参数。
完成的 “获取当前天气 ”工具如以下示例所示:
保存工作流。
创建“发送电子邮件”工具
在许多情况下,代理通常需要多个工具。 在此示例中,代理需要一个以电子邮件发送天气报告的工具。
若要生成此工具,请执行以下步骤:
在设计器的代理中,在现有工具旁边选择加号 (+) 以添加操作。
在“添加操作”窗格中,按照以下常规步骤为新工具选择另一项操作。
此示例使用Outlook.com中名为“发送电子邮件 (V2)”的操作。
与之前一样,选择操作后,新工具和操作都会显示在设计器中的代理内。 这两个信息窗格同时打开。
在工具信息窗格中,重命名该工具以描述其用途。 对于此示例,请使用
Send email。在“ 详细信息 ”选项卡上,对于 “说明”,输入工具说明。 对于此示例,请使用
Send current weather by email.保存工作流。
创建“发送电子邮件(V2)”操作的代理参数
除了为 “发送电子邮件”作设置的不同代理参数(V2) 之外,本部分中的步骤与 为“获取当前天气”作创建代理参数几乎相同。
按照前面的常规步骤为 “发送电子邮件”(V2) 作中的参数值创建代理参数。
该作需要三个名为 To、 Subject 和 Body 的代理参数。 有关操作的 Swagger 定义,请参阅发送电子邮件(V2)。
完成后,示例操作将使用先前定义的代理参数,如下所示:
完成的 发送电子邮件 工具如以下示例所示:
保存工作流。
创建订阅者列表工具
最后,对于此示例,请创建一个名为获取订阅者的工具,以提供供代理参数值使用的订阅者列表。 此工具使用 Compose 用于提供订阅者名称、电子邮件地址和位置。 或者,您可以从 BLOB 存储或数据库获取这些输入。 Azure 逻辑应用提供了许多可用于数据源的选项。
对于本示例,请遵循以下步骤:
将工具重命名为
Get subscribers.在 “获取订阅者 ”工具中,使用以下说明:
Get the list of subscribers, including their name, location, and email address. To generate the weather report, use the location for each subscriber. To send the weather report, use the email address for each subscriber.将操作重命名为Compose。
Subscriber list在 “输入 ”框中,使用以下 JSON 数组,但将示例订阅者数据替换为要用于测试的数据。 例如,将电子邮件地址替换为你自己的电子邮件地址,以便获取不同位置的天气。[ { "Name": "Fabrikam", "Email": "FabrikamGoods@outlook.com", "Location": "Boston" }, { "Name": "Contoso", "Email": "ContosoGoods@outlook.com", "Location": "Jaipur" }, { "Name": "Sophie Owen", "Email": "sophieowen@outlook.com", "Location": "Seattle" } ]完成的 Get 订阅者 工具如以下示例所示:
保存工作流,然后测试工作流,以确保一切按预期方式工作。
你应该收到一封电子邮件,其中包含每个位置的天气。
代理和工具的最佳做法
以下部分提供建议、最佳做法和其他指导,可帮助你构建更好的代理和工具。
Agents
以下指南提供了代理的最佳做法。
包含“撰写”操作的原型代理和工具
使用 Compose 动作 来「模拟」或仿真实际动作,而不是使用实际动作和实时连接来原型设计您的代理和工具。 此方法具有以下好处:
撰写 操作不会产生副作用,这使得这些操作在构思、设计和测试中很有用。
可以起草和优化代理说明、提示、工具名称和说明以及代理参数和说明 - 无需设置和使用实时连接。
确认代理和工具仅使用“撰写”操作时,即可切换为实际操作。
切换到实际操作时,需要重新路由或重新创建代理参数以适应实际操作,这可能需要一些时间。
管理聊天历史记录上下文长度
工作流智能体根据对需保留并传入模型用于下一次交互的令牌或消息数的当前限制来维护历史聊天记录或上下文。 随着时间的推移,代理历史记录会增长,并最终超过模型的 上下文长度 限制或输入令牌的最大数目。 模型在上下文长度上有所不同。
例如, gpt-4o 支持 128,000 个输入令牌,其中每个令牌有 3-4 个字符。 当代理历史记录接近模型的上下文长度时,请考虑删除过时或无关的消息,以保持在限制之下。
下面是减少代理历史记录的一些方法:
使用Compose 操作来减小工具结果的大小。 有关详细信息,请参阅 “工具 - 最佳做法”。
请仔细制定代理指令和提示词,以控制模型的行为。
实验性功能:您可以选择尝试对聊天记录进行缩减,以减少保留在聊天历史记录中的最大令牌或消息数量,然后将其输入模型中。
工作流代理具有与 Azure OpenAI 内置服务提供商连接器几乎相同的高级参数,但 代理历史记录减少类型 高级参数除外,该参数仅存在于代理中。 此参数根据令牌或消息的最大数目控制代理维护的历史记录。
此功能处于活动开发阶段,可能不适用于所有方案。 可以更改 “代理历史记录减少类型” 选项以减少对令牌或消息的限制。 然后指定所需的数字限制。
若要试用该功能,请执行以下步骤:
在设计器中,选择代理的标题栏以打开信息窗格。
在“ 参数 ”选项卡上,找到 “高级参数 ”部分。
检查名为 “代理历史记录减少类型 ”的参数是否存在。 如果没有,请打开 “高级参数 ”列表,然后选择该参数。
从 “代理历史记录减少类型” 列表中选择以下选项之一:
选项 Description 令牌计数减少 显示名为 “最大令牌计数”的参数。 指定代理历史记录中要保留的最大令牌数,这些令牌将传送到模型中以用于下一次交互。 默认值因 Azure OpenAI 服务中当前使用的模型而异。 默认限制为 128,000。 消息数量减少 显示名为 Message Count Limit 的参数。 指定代理历史记录中要保留和传入模型的最大消息数,以便进行下一次交互。 不存在默认限制。
Tools
以下指南提供了工具的最佳实践。
名称是工具最重要的值。 确保名称简洁且描述性。
工具说明为该工具提供了有用且有用的上下文。
工具名称和说明都具有字符限制。
某些限制是在运行时由 Azure OpenAI 服务中的模型强制实施的,而不是在工作流中保存代理中的更改时。
同一代理中的工具过多可能会对代理质量产生负面影响。
一个通用良好准则建议,一个智能体最多包含 10 个工具。 但是,本指南因 Azure OpenAI 服务中使用的模型而异。
在工具中,动作不需要所有输入都来自模型。
可以精细控制哪些作输入来自非模型源,哪些输入来自模型。 例如,假设某个工具具有发送电子邮件的动作。 可以提供简单且大部分静态的电子邮件正文,但对该电子邮件正文的一部分使用模型生成的输出。
在将工具结果传递给模型之前,请对其进行自定义或转换。
可以在工具结果传入模型之前使用
Compose 操作更改这些结果。 此方法具有以下好处:通过减少传入模型的不相关的 上下文 来提高响应质量。 仅从大型响应中发送所需的字段。
减少传入模型的令牌的计费费用,并避免超过 模型对上下文长度的限制(传入模型的最大令牌数)。 您只需发送必要的字段。
在工具中合并多个动作的结果。
可以伪造工具结果来模拟实际操作的预期结果。 模拟操作不会更改源数据,并且不会对 Azure 逻辑应用外部的资源使用计费。
代理参数
以下指南提供了代理参数的最佳做法。
名称是代理参数最重要的值。 确保名称简洁且描述性。
代理参数说明为该工具提供了有用且有用的上下文。
故障排查
本部分介绍如何帮助解决生成或运行代理工作流时可能遇到的错误或问题。
查看工具执行数据
工作流运行历史记录提供了有用的信息,可帮助你了解特定运行期间发生的情况。 对于代理工作流,可以找到特定代理循环迭代的工具执行输入和输出。
在工作流菜单上的 “工具”下,选择“ 运行历史记录 ”以打开 “运行历史记录 ”页。
在“ 运行历史记录 ”选项卡上的 “标识符 ”列中,选择所需的工作流运行。
此时会打开监视视图以显示每个步骤的状态。
选择要检查的代理。 右侧会显示 “代理日志 ”窗格。
此窗格显示代理日志,包括交互期间的工具执行。
若要在特定点获取工具执行数据,请在代理日志中找到该点,然后选择工具执行参考,例如:
这个操作会将您切换到监控视图中的匹配工具。 代理显示当前迭代次数。
在监控视图中,选择带有您要查看的输入、输出和属性的代理或动作。
以下示例显示了先前所选工具执行的选定操作:
如果选择代理,可以查看传入模型并从模型返回的以下信息,例如:
- 传入模型的输入消息。
- 从模型返回的输出消息。
- 模型要求代理调用的工具。
- 传回模型的工具结果。
- 每个请求使用的令牌数。
若要查看其他代理循环迭代,请在代理中选择向左或向右箭头。
Application Insights 中的日志
如果为工作流设置了 Application Insights 或高级遥测,则可以像查看任何其他操作一样查看代理事件的日志。 有关详细信息,请参阅 在 Azure Logic Apps 的标准工作流中启用并查看 Application Insights 中增强的遥测。
超出模型最大上下文长度
如果代理的日志历史记录超过模型的 上下文长度或输入令牌的最大数目,则会收到类似于以下示例的错误:
此模型的最大上下文长度为 4097 个标记。 但是,你请求了 4927 个令牌(消息中 3927 个,完成时为 1000 个)。 请减少消息长度或完成。
尝试降低代理在日志中保留令牌数或消息数的上限,以便在下一次交互中传递给模型。 对于此示例,可以选择 “减少令牌计数 ”并将 “最大令牌计数 ”设置为错误规定的最大上下文长度( 即 4097)下面的数字。
有关详细信息,请参阅 管理聊天历史记录上下文长度。
清理示例资源
如果不需要为示例创建的资源,请确保删除资源,以免继续收费。 可以按照以下步骤删除包含这些资源的资源组,也可以单独删除每个资源。
在 Azure 搜索框中,输入 资源组,然后选择 资源组。
查找并选择包含此示例的资源的资源组。
在“ 概述 ”页上,选择“ 删除资源组”。
出现确认窗格时,输入资源组名称,然后选择“ 删除”。