导语

随着大模型模型的快速发展,越来越多的企业开始构建各种AI助手,譬如:腾讯的混元大模型融入到腾讯文档;字节的豆包大模型融合到飞书。那么如何才能开发出高效实用的AI助手呢?去年以来,人工智能公司 Anthropic 和很多行业的团队合作去构建LLM Agent,近日撰文《Building effective agents》[1]分享了他们的一些经验。

Consistently, the most successful implementations weren’t using complex frameworks or specialized libraries. Instead, they were building with simple, composable patterns.

一直以来,最成功的实现并没有使用复杂的框架或专门的库。相反,它们是用简单、可组合的模式构建的。

什么是AI Agent (智能体)

“Agent (智能体)” 在市面上有两种定义:

  • • 可以长时间独立运行的完全可自主的系统,并且能调用各种工具完成复杂任务。
  • • 使用多个预设的指令构成的预设的工作流 workflow。

Anthropic则是将所有的类型都归类为 agentic systems ( 智能系统 ),根据架构的不同来区分 Workflow 工作流 和 Agents 智能体:

  • • Workflow 工作流:通过预设的代码对LLM和工具进行精心编排的系统。如:字节扣子的工作流。
  • • Agents 智能体:大模型LLM动态地自主控制自己的程序流程以及自主调用工具的使用,最后能一直将执行状态保持到任务完成

譬如:需求是购买一张飞往北京的机票。Agents会根据需求,进行任务拆解(查询出发/到达城市天气、查询航班、下订单购买),在任务执行的过程中,会自主调用工具完成任务,并且会自主解决中途出现的问题,直至任务完成。

null

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

你可能不需要一个 agentic systems ( 智能系统 )

在使用LLM构建应用的时候,我们建议尽可能地找到最简单的解决方案,只有在必要的时候才增加架构复杂性。这就意味着,你并不一定需要去构建一个 agentic systems ( 智能系统 ) 。因为 agentic systems ( 智能系统 ) 通常需要以更高的响应延迟以及更高昂的成本为代价来换取更好的任务效果,所以你必须要在两者之间作出取舍。

没有解决问题的银弹。

Workflow Or Agents

  • • Workflow:可以为明确的任务提供可预测性和一致性。当你需要处理具有一定复杂性任务的时候,可以选择使用。
  • • Agents:可以提供更高的灵活性和更强的决策能力。当你需要让大模型LLM动态根据环境进行高动态的决策,那么你可以选择使用他。譬如:程序代码编写情景,让Agents帮你根据产品需求完成整个PR的编写并提交。

实际上,对于很多应用来说,很多时候,一个优化过的,带检索和上下文示例信息的LLM 调用通常就足够了。某种意义上来说,就是一个RAG。

检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。

何时以及如何使用框架

许多框架使 agentic systems ( 智能系统 ) 的实现更容易,包括但不限于:

  • • LangChain[2] 的 LangGraph
  • • Amazon Bedrock 的 AI Agent 框架[3]
  • • Rivet[4],一个拖放式 GUI LLM 工作流构建器
  • • Vellum[5],另一个用于构建和测试复杂工作流的 GUI 工具
  • • 字节的Coze[6]
  • • 腾讯的腾讯元器[7]

这些框架通过简化标准的底层任务,譬如:调用LLM、 定义提示词、文档解析工具和链式调用各个模块,使得新人入门门槛降低,更加容易上手。但这是需要付出代价的,这些框架通常会对底层进行新的抽象、提出新的概念。也就是大家编程里面所熟悉的,“实在不行加一层”。这就很有可能会屏蔽掉底层的提示词和响应,将会直线增加Debug的难度。这类框架也会增加更多的复杂性,让用户在配置上更加简单,以此来吸引新用户的使用。

我们建议你直接使用 LLM API,很多情景都可以用几行代码实现。如果你使用框架,要确保理解底层代码。对框架的实际底层架构进行错误假设是出错的常见原因。

这是我们对应的一些LLM示例[8],仅供您参考。

一步步学习: 增强LLM的基础构建模块, 工作流 Workflow, 智能体 Agents

在本节中,我们将探讨在生产环境中看到的 agentic systems ( 智能系统 ) 的常见模式。我们将从增强LLM的基础构建模块开始,逐步增加复杂性。从简单的工作流Workflow到智能体Agents。

基础构建模块 - 增强LLM

null

Agentic systems ( 智能系统 ) 的基础构建模块是增强了检索、工具调用和记忆能力扩展功能的 LLM。我们当前的模型可以主动使用这些功能:生成自己需要的Query查询语句、选择适当的工具Tools进行调用以及记住需要记忆Memory的信息

我们建议关注实现的两个关键方面:

  • • 为特定用例定制这些功能,并确保它们为 LLM 提供易用、文档完备的接口。
  • • 虽然有许多方法可以实现这些扩展,但一种方法是通过 Anthropic 最近发布的模型上下文协议MCP[9],它允许开发者通过简单的客户端实现与不断增长的第三方工具生态系统集成。字节火山引擎的边缘云智能硬件调用就有在使用该协议。

在本文的其他部分,我们都假设每个LLM都能调用这些增强性的能力。

Workflow 工作流: Prompt Chaining 链式提示

为了提高大语言模型的性能使其更可靠,一个重要的提示工程技术是将任务分解为许多子任务。 确定子任务后,将子任务的提示词提供给语言模型,得到的结果作为新的提示词的一部分,即每个 LLM 调用 处理前一个LLM调用的输出。 这就是所谓的链式提示(prompt chaining),一个任务被分解为多个子任务,根据子任务创建一系列提示操作。

你可以在任何中间步骤添加程序检查(见下图中的"Gate"),以确保处理过程正常。

null

什么时候使用这个工作流?

当任务可以轻松、整洁地分解为固定的子任务时,此工作流是理想选择。主要目标是通过使每个 LLM 调用成为更容易的任务,用延迟换取更高的准确性

应用场景:

  • • 生成市场营销文案,然后将其转换成另外一种语言
  • • 文章编写
  • • 编写文章大纲
  • • 检查文章大纲是否符合标准
  • • 根据大纲编写文章

Workflow: Routing 路由

null

针对不同的用户输入进行分类,并将其路由到专门处理该分类的工作流。此工作流允许关注点分离,并构建更专业化的提示。如果没有此工作流,单纯针对一种用户输入进行优化可能会降低其他用户输入的效果。

分离关注点使得解决特定领域问题的程式码从业务逻辑中独立出来,业务逻辑的程式码中不再含有针对特定领域问题程式码的调用(将针对特定领域问题程式码抽象化成较少的程式码,例如将程式码封装成function或是class),业务逻辑同特定领域问题的关系通过侧面来封装、维护,这样原本分散在整个应用程序[10]中的变动就可以很好的管理起来。

关注点分离的价值在于简化计算机程序的开发和维护。当关注点分开时,各部分可以重复使用,以及独立开发和更新。具有特殊价值的是能够稍后改进或修改一段代码,而无需知道其他部分的细节必须对这些部分进行相应的更改。

什么时候使用这个工作流?

Routing 路由 非常适合复杂的任务,能更好地单独处理不同的用户输入类别,并且可以通过 LLM 或 传统的分类模型/算法准确处理分类。

应用场景:

  • • 将不同类型的客户服务查询(一般问题、退款请求、技术支持)引导到不同的下游流程、提示和工具。
  • • 将简单/常见问题路由到较小的模型(如 Claude 3.5 Haiku),将困难/罕见问题路由到更强大的模型(如 Claude 3.5 Sonnet),以优化成本和速度。

Workflow: Parallelization 并行

null

LLM 有时可以同时处理一项任务,并以编程方式聚合它们的输出。这个工作流有两个要点:

  • • 任务切片分段:将任务分解为独立的并行运行的子任务。
  • • 多个LLM结果:多次运行相同的任务以获得不同的输出。

什么时候使用这个工作流?

  • • 当分割的子任务可以并行处理以提高速度
  • • 当需要从多个不同的视角获取生成内容
  • • 尝试通过多轮尝试以获得更好更高置信度的结果
  • • 对于具有多个考虑因素的复杂任务,当每个考虑因素由单独的 LLM 调用处理时,LLM 通常表现更好,从而可以专注于每个特定方面。

应用场景:

  • • 任务切片分段:

    • • WAF安全防护:一个LLM处理用户查询,而另一个LLM识别非法内容或非法请求。这往往让同一个 LLM 调用同时处理安全防护和用户查询响应的表现要更好
    • • 对同一个提示词Prompt,让多个LLM从不同的方面同时对其进行评估,以衡量在不同方面的表现。
  • • 多个LLM结果:

    • • 审查代码是否存在漏洞时,可以使用不同的提示词Prompt来识别潜在问题并进行标记。
    • • 需要使用多个指标来评估内容的健康程度,例如主题、内容的适当性、观点的正确性等。此外,也可以考虑使用不同的评判标准来平衡误报和漏报的情况。

Workflow: Orchestrator-workers 编排Workers

null

在此工作流中,中心 LLM 可以动态地将任务分解并委托给多个LLM Workers,以便他们可以完成工作,并且最终的结果可以被整合在一起。

什么时候使用这个工作流?

这种工作流非常适合处理复杂任务,例如:在代码编写中,需要处理的文件数量和每个文件中需要进行的更改内容都可能因任务而异。虽然拓扑结构与并行化相似,但它的关键区别在于其灵活性,即子任务的数量和任务内容都不是预定义的,而是由中心LLM根据特定的内容输入来确定的

应用场景:

  • • 每次对多个文件进行复杂更改的编码产品。譬如:Github Copilot 。
  • • 搜索任务涉及从多个来源收集和分析信息,以查找可能相关的信息。

Workflow: Evaluator-optimizer 评估-优化

null

在此工作流中,一个LLM根据用户输入生成对应的结果,而另一个LLM针对结果提供反馈,不断地在两者之间进行迭代优化。

什么时候使用这个工作流?

当我们能为任务设置明确的评估标准,并需要持续迭代改进,能提供可衡量的价值时,这种工作流程特别有效。整个流程:首先,当LLM的响应结果能获得明确反馈时,LLM 的响应结果会得到显著改进;其次,评估LLM 可以提供类似这种反馈。就像人在不断地迭代优化作品的过程一样。

应用场景:

  • • 文学类翻译,对内容追求精益求精。翻译LLM在第一次翻译的时候,可能无法感知到词汇的细节。但评估LLM可以根据设置的评判标准,准确地给出有效的批判性反馈。
  • • 需要多轮搜索和分析以收集全面信息的复杂搜索任务,其中评估LLM会决定是否需要进一步搜索。

智能体 Agents

null

智能体的随着LLM的能力成熟而诞生,譬如:能理解复杂的用户输入、能进行推理以及规划、能更加可靠地调用工具和故障自愈能力。

智能体的任务执行来自用户的命令或者与用户进行交互式的对话。智能体一旦收到任务,便会独自对其进行任务规划和任务执行,也可能会在任务执行的过程中询问用户更多信息以辅助任务执行。在执行的过程中,对于智能体最关键的就是,在每一步中通过工具调用等方式,从环境中获取“基础事实”以评估当前的任务进度。智能体会在预定的检查点 或者 遇到无法解决的障碍的时候,会自动暂停并向用户求助。智能体通常会在任务完成的时候才终止任务,但是通常在任务执行的时候也会包含其他的终止条件(譬如:最大迭代次数),以而避免智能体脱离控制。

智能体可以处理很复杂的任务,但是实现却是非常地简单。通常智能体只需要循环地让增强LLM基于当前的环境信息反馈去调用工具。因此,清晰、周到地设计工具集及其清晰文档至关重要。

什么时候使用智能体?

智能体可以用于很难或者不可预测步数的开放式问题上,以及你无法使用代码对执行路径进行固定的情况。LLM可能会执行很多轮并且你需要在一定程度上信任LLM的决策,某种意义上的放权。也因为智能体的自主性让其成为在可信环境中处理弹性任务的理想选择、更高的使用成本、累积更多的错误。我们建议在沙盒环境中进行广泛测试,并设置恰当的安全防护。

应用场景:

  • • 能解决SWE-bench任务[11]的编程智能体,它可以基于任务的描述来编辑许多个文件。
  • • “computer use[12]”的实现,其中Claude使用了 “computer” 来完成任务。

null

定制化

上面所提到的基础构建模块和构建模式并不是一成不变的。开发者可以根据自身需求,通过改变模块和不同组合去适应不同的场景。与任何 LLM 特性一样,成功的关键是衡量性能并对实现进行迭代。

再次强调:只有在能明显改善LLM结果时,你才应该考虑增加复杂性。

总结

在大模型领域取得成功不在于构建最复杂的系统,而在于根据实际业务需求构建合适的系统。从简单的提示词开始,通过全面评估对其进行优化,只有在更简单的解决方案不足时才添加多步骤的 agentic systems ( 智能系统 )不要过度优化。

在实现智能体时,我们应该努力遵循三个核心原则:

  1. \1. 保持智能体设计的简单性。
  2. \2. 应该优先考虑通过显式定义智能体步骤以增加任务执行时的透明度。
  3. \3. 通过全面的工具文档和测试,精心设计您的agent-computer interface (ACI)。

框架可以帮助你快速入门,但在生产环境时,尽可能地减少抽象层并使用基本组件构建。通过遵循这些原则,你可以创建不仅功能强大,而且可靠、可维护并受用户信任的代理。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐