打破神话:通过简单问题了解LLMs中主观和非主观方法
简介
随着人工智能和LLMs(大型语言模型)在自动化任务、改善客户体验和开发智能系统方面的爆炸式增长,通常讨论两种关键方法: 代理方法和非代理方法。但实际上有什么区别呢?
更重要的是,这些方法如何可以改进您正在构建的系统呢?对于已经熟悉传统编码和工作流程的人来说,Agentive方法是否真的比非-Agentive方法更有价值?让我们清晰地阐述并通过一个您可以理解的例子来比较这两种方法。
非代理方法:使用LLMs的传统、逐步方法
非主体性方法本质上是与LLM进行互动的传统方式。您定义特定的提示、查询和回复。这是一种直接的方法,您可以完全控制模型的行为。您指定每一步,模型只是根据您给出的指示简单地回复。
非主动方式的特点:固定提示和顺序步骤对于每个问题或查询,您提供详细的提示。如果您正在处理多个任务,比如检查订单状态,解释延迟以及处理退款,您需要明确定义所有这些步骤。例如,您可能首先问:“我的订单状态是什么?”根据回复,您可能会问:“为什么我的订单延迟了?”如果客户要求退款,您将需要定义另一组提示。
手动流程控制:您必须自己编写每个潜在的步骤。如果用户提出新问题,您需要编写新代码来处理该流程。这是静态的,因为系统不会自行决定下一步该做什么 - 它只是响应您设置的提示。
上下文管理:保留上下文(例如,先前的交互或数据)并不是自动的。您需要编程系统来记住过去的交互,比如检查订单状态或处理退款。
理性方法:通过自主代理使LLMs更加智能
相比之下,机构方法涉及创建代理,这些代理被设计为自动采取行动并管理工作流程。这些代理不仅仅是对提示的响应,他们可以根据环境、用户目标和上下文决定接下来该做什么。他们还可以处理多个任务并与外部系统(例如 API 或数据库)进行交互,而不需要为每个步骤手动编程。
特征的代理方式:以目标为导向的代理:代理不是为每个任务设置一个提示,而是有一个目标(比如“解决订单查询”),然后决定采取哪些步骤来实现该目标。例如,如果代理需要回答顾客关于订单延迟的问题,它会先检查订单状态,然后解释延迟,如果必要的话,启动退款流程。
动态决策:代理人不会等待您逐个指导每个行动。它基于上下文和当前情况做出决策。例如,如果客户在查询订单状态后询问退款,代理人会记住先前的上下文并自动启动退款流程。
上下文感知:代理人能够追踪多个查询之间的上下文。它不需要您编写特殊代码来记住先前的交互。这意味着如果客户询问他们的订单,然后询问延迟,然后询问退款,代理人可以利用上下文来依次处理所有这些请求,而无需手动干预。
如何行动主义方法增加价值
代理方法通过使系统更具适应性和自主性来增加显著价值。在非代理系统中,您必须为特定查询预先编程每个步骤,而在代理系统中,代理根据新情况动态调整。
例如:如果用户询问,“我的订单状态是什么?”然后问及延迟情况,最后请求退款,非主动系统需要针对每个步骤分别设定预定义提示和回复。然而,主动系统会无缝处理整个流程。它会自动检查订单状态,解释延迟,并在不需要您手动编码每个步骤的情况下启动退款流程。
此外,在一个主动式系统中,新的询问可以更加灵活地处理。即使用户提出了一个陌生的问题,代理可以根据其对用户上下文和可用工具(如API)的理解动态地决定下一步该做什么,以获取相关数据。
问答:解决有关主体与非主体方法常见困惑
Q1: 如果我使用一个非代理系统,不能简单地预定义每个可能用户查询的流程,比如“我的订单状态如何?”或“我能改变地址吗?”为什么我需要一个代理呢?在非代理系统中,您可以为特定用户查询创建预定义的流程。但是,您仍然需要为每个交互写出每个可能的步骤序列。如果用户问“我的订单状态如何?”系统需要按照固定的顺序进行操作,如果用户后来要求退款,您需要单独编码处理。
一个主动性系统提供更多的灵活性。代替手动为每个查询定义顺序,代理根据对话的上下文自动决定下一步该做什么。它不需要预定义每个动作,因为它可以处理新的和动态的情况,而无需您编写每个可能的顺序。
Q2:我明白代理可以根据上下文来选择行动,但这并不意味着我仍然需要定义可用的行动,比如API或任务(例如更新地址)吗?这难道不就和在基本系统中写出流程一样吗?是的,无论是代理系统还是非代理系统,您都需要定义可用的行动(如API、外部服务等)。然而,关键的区别在于这些行动是如何被安排顺序的。
在一个非代理系统中,您需要为每次交互编写完整的操作序列。例如,当用户想要更改他们的地址时,您必须手动定义涉及的所有步骤(验证地址,检查资格,等等)。
在代理系统中,代理根据实时上下文确定行动顺序。例如,如果用户要求更改地址,则代理可能首先验证地址,然后检查用户是否符合条件,然后才更新详细信息。这减少了需要预先定义每种可能的行动流程的需求。
Q3: 我不能只是把用户查询发送给LLM,让它识别主题(例如地址更改或退款请求),自动选择正确的流程吗?在这里,代理系统如何增加价值?在代理和非代理系统中,LLM都可以识别主题(如“地址更改”或“退款请求”)。然而,区别在于接下来发生了什么。
在一个非代理系统中,一旦确定了主题,系统将遵循针对该主题的硬编码的动作顺序。如果用户的请求发生变化或需要额外的上下文,流程可能会中断,需要更多的编程来处理这些情况。
在一个个体系统中,一旦确定了主题,代理根据实时环境动态决定如何继续。代理不仅仅执行预定义的步骤;它考虑情况并调整其响应。例如,代理可能决定在发起更新之前验证新地址,这在非个体系统中需要额外的逻辑。
Q4:我在代理系统中仍需编程可用工具(如API)来更新地址或发送电子邮件吗?是的,您仍需在代理系统中定义可用工具(API、电子邮件服务等)。然而,代理系统的价值在于决策过程:代理根据上下文确定何时以及如何使用这些工具。
在非代理系统中,您必须按固定顺序硬编码每一步。在代理系统中,代理可以根据用户的需求自主处理各种任务(如验证地址或发出退款),而无需您每次都编写操作序列。
Q5:我明白代理可以根据上下文自动决定该做什么,但这还只是为每个查询编写预定义流程的问题吗?这与基本的LLM提示和静态流程有何不同?关键的区别在于代理系统允许动态、目标导向的决策。在非代理系统中,您必须定义互动的每个步骤,而代理系统使代理能够根据上下文自主确定最佳的行动顺序。
例如,如果用户要求更改他们的地址,一个主动性系统可能会首先检查用户是否有资格,然后验证地址,而在非主动性系统中,您需要手动定义这些步骤中的每一个。
通过理解机构化和非机构化方法之间的差异,您可以为您的系统选择合适的策略。机构化方法提供了灵活性、上下文感知能力和自主决策,大大降低了处理动态交互所需的复杂性和手动工作量,最终使您能够构建更具可伸缩性和高效性的基于人工智能的解决方案。
结论
虽然代理可以帮助自动化决策并减少硬编码,但它们仍然需要预定义的工具和一定程度的结构化任务流程,特别是在更复杂的使用案例中。在更简单的系统中,例如少量互动(如更改地址),您可以轻松硬编码步骤并实现类似的功能。
然而,当系统发展并且潜在的互动、工具和目标数量增加时,代理的真正好处变得明显。在这种情况下,基于上下文的动态决策比僵化的手动编码流程提供了显著的优势。
为什么它仍然比手动编码的流程更好?
代理的真正好处在于当系统变得更加复杂和动态时。例如,如果您有数百或上千个与系统相关的不同查询(例如,地址更改、退款请求、订单状态),硬编码所有可能的流程是不切实际的。手动管理这些将是繁琐、容易出错且耗时的。
代理商减少了手动为每种可能的情景创建单独流程的需要。相反,它们允许根据目标和环境动态协调工具和任务。这种灵活性不仅加快了开发速度,而且在系统扩展时提高了可扩展性。
上下文理解(例如,记住地址是否在以前已更改)是代理的另一个关键优势。这使系统能够根据用户的历史行动,而不需要每次有新查询时都不断重新编程。随着系统的发展,需要更复杂的互动,代理成为管理复杂性、提供更反应灵敏、用户为中心体验的无价工具。
总的来说,代理商提供了一定程度的灵活性、决策能力和可扩展性,这是手动硬编码所无法匹敌的 — 尤其在管理日益增多的动态交互以及各种工具和目标时。
在下方让我知道你的想法,并在我的下一篇博客中从头开始编写一个代理。