使用英语阅读

通过


代理和助手如何与 LLM 搭配使用

代理和助手都可以通过智能调用外部功能(例如发送电子邮件)来扩展 LLM 的功能。

  • 代理是一种人工智能,可以回答问题和自动为用户执行流程。 代理可以决定哪些函数可达成用户的目标,然后代表用户调用这些函数。
  • 助手是与用户并行工作的一种代理。 与代理不同,助手并不完全自动化的,它依赖与用户的交互。 助手通过提供建议来帮助用户完成任务。

例如,假设你要构建电子邮件聊天帮助程序应用。 除了 LLM,你还需要一个插件来执行与电子邮件相关的操作,以及用于搜索、汇总、确定意向等操作的插件。 你可以使用本机函数现用插件,以及自己的自定义插件

创建插件只是战斗的一半:你仍然需要在正确的时间调用正确的函数,这是一个容易出错且效率低下的过程。 代理可以更好地处理此过程。

代理会自动确定 LLM 可以按什么顺序调用函数来实现用户目标。 例如,假设你有一个聊天应用,该应用会查看收件箱的新内容,并确定需要针对每项内容执行的操作。 如果设置了代理,它可以协调必要的插件函数并自动执行这些步骤。

代理的组件

每个代理都有三个核心构建基块:角色、插件和规划器。

  • 角色确定代理响应用户或执行操作的方式。
  • 插件让代理从用户或其他系统检索信息。 你可以使用预生成的插件和自己的自定义插件。
  • 规划器让代理计划如何使用可用的插件。

角色

代理的角色是其标识:代理使用的任何插件和规划器都是工具,但角色决定了它如何使用这些工具。 你可以通过提示中的说明来建立代理的角色。

例如,可以使用说明告诉代理它正在帮助用户管理电子邮件,并在其做出决策时解释其决策。 你的提示可能如下所示:

prompt = $"""
    <message role="system">
    You are a friendly assistant helping people with emails.
    When you decide to perform an action, explain your decision and then perform the action.
    </message>
"""

插件

使用插件执行 LLM 无法单独执行的事情,例如从外部数据源检索数据或完成现实世界中的任务。

例如,LLM 无法发送电子邮件,因此,若要向聊天应用添加该函数,你需要创建插件。 若要处理电子邮件中的文本,可以使用核心插件,例如 ConversationSummaryPlugin

请确保清楚地记录插件中的函数,规划器使用此信息来确定哪些函数可用。

规划器

规划器可以分析可用的函数,并想出实现目标的替代方法。

调用插件函数并不总是有效的。 例如,假设要对介于 1 和 100 之间的数字求和。 可以调用数学插件,但 LLM 需要为每个数字单独调用函数。

此外,达到目标的最佳函数序列和组合取决于详细信息。 例如,假设你要构建电子邮件聊天帮助程序应用,你可以添加一个插件来启用发送电子邮件功能。 但是,某些电子邮件可能需要不同的操作,例如某个会议请求无需回复,但需要添加日历项。 规划器将查看所有可用的函数,并提供实现目标的高效方法。

助手添加用户交互

流程自动化有许多好处,但有时用户需要在此过程中做出决策。 代理无法自动执行用户操作。 这就是助手发挥作用的地方。

电子邮件聊天应用中的代理可能会生成以下用于发送电子邮件的计划:

  1. 获取用户的电子邮件地址和名称
  2. 获取收件人的电子邮件地址
  3. 获取电子邮件的主题
  4. 生成电子邮件的主题和正文
  5. 发送电子邮件

非常方便,但如果用户不喜欢电子邮件正文,该怎么办? 助手会将用户交互步骤添加到计划中:

  1. 获取用户的电子邮件地址和名称
  2. 获取收件人的电子邮件地址
  3. 获取电子邮件的主题
  4. 生成电子邮件的主题和正文
  5. 与用户一起查看电子邮件,并进行调整
  6. 发送电子邮件

语义内核聊天助手应用

若要开始使用助手,请尝试语义内核聊天助手,一个用于使用 AI 代理构建聊天体验的引用应用程序。