Agent是什么?
1 Agent是什么?
1.1 Anthropic: Building effective agents中给出的定义:
https://www.anthropic.com/engineering/building-effective-agents
what are agents?
(1)在长时间内独立运行,使用各种工具来完成复杂的任务的完全自主的系统
(2)遵循预定义工作流的更规范的实现
将所有这些变体归类为agentic systems,但要在workflows和agents之间进行重要的架构区分:
workflows是通过预定义的代码路径编排LLM和工具的系统。
Agents是LLM动态指导自己的流程和工具使用的系统,保持对它们如何完成任务的控制。
1.2 OpenAI: A practical guide to building agents 中给出的定义:
https://openai.com/business/guides-and-resources/a-practical-guide-to-building-ai-agents/
What is an agent?
虽然传统软件能够帮助用户简化和自动化工作流程,但智能体能够在用户授权下以高度独立的方式代表用户执行相同的工作流程。
智能体是能够独立代表您完成任务的系统
workflow是指为实现用户目标而必须执行的一系列步骤,例如解决客户服务问题、预订餐厅、提交代码更改或生成报告。
那些集成了大型语言模型(LLM)但不使用它们来控制工作流程执行的应用——如简单的聊天机器人、单轮对话模型或情感分类器——不属于智能体。
更具体地说,智能体具有以下核心特性,使其能够可靠且一致地代表用户采取行动:
它利用大型语言模型来管理工作流程的执行和决策。它能够识别工作流程何时完成,并在需要时主动纠正其行为。如果执行失败,它可以暂停操作并将控制权交还给用户。
它可以访问多种工具以与外部系统交互——既用于收集上下文信息,也用于执行操作——并根据工作流程的当前状态动态选择合适的工具,同时始终在明确定义的防护边界内运行。
我的理解:
Agent 是一个能够"理解目标→制定计划→调用工具→执行任务→根据结果继续行动"的软件程序。它和传统程序最大的区别是拥有"自主完成任务"的能力。
要能够区分workflow和agent:
workflows是通过预定义的代码路径编排LLM和工具的系统。
Agents是LLM动态指导自己的流程和工具使用的系统,保持对它们如何完成任务的控制。3、什么时候构建智能体?
2 什么时候应该构建智能体?
1.1 Anthropic: Building effective agents:
使用LLMs构建应用时,寻找最简单的解决方案,并且只在需要时增加复杂性。这可能意味着根本不构建agentic systems。agentic systems 经常以延迟和成本换取更好的任务性能,您应该考虑这种权衡何时有意义。
当需要更高的复杂性时,工作流为定义明确的任务提供了可预测性和一致性,而当需要大规模的灵活性和模型驱动决策时,智能体是更好的选择。然而,对于许多应用程序来说,使用检索和上下文示例优化单个LLM调用通常就足够了。
1.2 OpenAI: A practical guide to building agents:
构建智能体需要重新思考系统如何进行决策和处理复杂性。与传统的自动化不同,智能体特别适合那些传统确定性、基于规则的方法难以胜任的工作流程。
以支付欺诈分析为例。传统的规则引擎就像一份检查清单,根据预设标准标记交易。而大型语言模型(LLM)驱动的智能体更像是一位经验丰富的调查员,能够评估上下文,考虑细微的模式,并在没有明确规则被违反的情况下识别可疑活动。这种细致的推理能力正是智能体能够有效处理复杂、模糊情境的关键。
在评估智能体能够带来价值的场景时,应优先考虑那些此前难以实现自动化的工作流程,尤其是传统方法遇到阻碍的场景:
- 复杂决策:涉及细致、上下文敏感决策的工作流程,例如客户服务中的退款审批。
- 难以维护的规则集:由于规则集过于庞大和复杂而变得难以管理,更新成本高或易出错的系统,例如进行供应商安全审查。
- 高度依赖非结构化数据:涉及解读自然语言、从文档中提取意义或与用户进行对话式交互的场景,例如处理家庭保险索赔。
在决定构建智能体之前,需明确验证您的用例是否清晰符合这些标准。否则,确定性的解决方案可能已足够。
我的理解:
使用LLMs构建应用时,尽可能寻找最简单的解决方案,只在需要的时候构建agent。
可以先看是否能使用检索和上下文示例优化单个LLM调用来解决;
再看能否使用工作流来解决;
最后,如果场景中涉及到复杂决策、难以维护的数据集、高度依赖非结构化数据等情况,或者需要大规模的灵活性和模型驱动决策,可以考虑构建agent。