LlamaIndex系列教程-一、绪论:Agent框架三巨头之一——LlamaIndex

海心 11 次阅读 发布于 27 天前 预计阅读时间: 12 分钟


LlamaIndex系列教程-一、绪论:Agent框架三巨头之一——LlamaIndex

然而,一旦遇到稍有偏离预设脚本的情况,它就会卡壳、出错,甚至瘫痪。它无法理解情境、应变突发状况、学习新知识或进行推理,更不用说解决非结构的开放性问题。这样的Agent虽然实用,但其应用范围极为有限,缺乏适应性和通用智能。

LlamaIndex系列教程-一、绪论:Agent框架三巨头之一——LlamaIndex

我打算做一系列教程文章,关于如何使用Agent框架——LlamaIndex。

这一系列教程将包含大量的实操和代码。说到底,学再多理论,不如动手“用”起来。学任何技能,一个字就够了——“用”。你要真正掌握这套框架,关键不是死记硬背,而是把它当成工具,天天用,解决实际问题。只有用过,才能发现问题、理解原理,才能真正把知识变成你的手艺。我希望通过这套教程,帮你们从“学”转向“用”,从而真正掌握Agent框架的精髓。

但是这第一篇文章关于实操的部分不多,更多的还是在于一个概念介绍,助于不了解Agent和LlamaIndex的朋友们,对这些东西建立起一个大局观的概念。如果你在之前有了解过Coze等低代码开发的Agent框架,我也建议你可以把这第一篇文章当做一个“绪论”,来开启你在高代码开发环境下的Agent搭建之路!

智能体(Agent)

大模型(LLM)是一种基于海量文本数据训练的深度学习模型,旨在理解、生成和处理人类语言。

智能体(Agent)则是指在一个环境中,能够通过感知器(如传感器或软件接口)接收信息,并根据内部知识和规则自主决策,最终通过执行器(如机械臂、屏幕显示或指令)对外采取行动以达成特定目标的实体。

通俗来讲,LLM会思考,但不会做事。智能体能做事,但是在没有接入LLM的情况下,它也实现不了非常复杂的思考。

1. 以前的Agent能做事,但不会思考

如果Agent能做事但不会思考,它将是一个严格遵循预设指令的自动化机器。它能高效执行重复性、规则明确的任务,如流水线上的机械臂或自动售货机。(例如我们平时已经写死了的程序,它无法做出程序规定之外的任何思考和步骤)

然而,一旦遇到稍有偏离预设脚本的情况,它就会卡壳、出错,甚至瘫痪。它无法理解情境、应变突发状况、学习新知识或进行推理,更不用说解决非结构的开放性问题。这样的Agent虽然实用,但其应用范围极为有限,缺乏适应性和通用智能。

但是,如果把LLM加入到Agent的思考模块中,神奇的事情就发生了。当LLM为Agent提供强大的“思考”能力时,Agent的潜力被彻底释放。LLM可以作为Agent的“大脑”,帮助它理解复杂的指令、分析环境信息、进行推理、规划行动步骤,甚至从过去的经验中学习并优化策略。

2. LLM只会思考,但是不会做事

进来LLM发展迅猛,如Deepseek、ChatGPT这样的LLM层出不穷。他们在对话、思考方面有很强大的能力,但是他们都有一个共同的缺点:不会做事,并且无法使用工具。

例如ChatGPT,你在没有开启“联网搜索”功能的时候,它的回答完全就是基于它的训练属于。如果你问他,“今天发生了什么”,它只会乱答一通,给你的都是虚假信息。

但是如果你开启了“联网搜索”功能,相当于你就给了ChatGPT“联网搜索”这个工具,它可以用这个工具,到现实世界中去做事。 这样子,它给你的信息真实性就大大增加了。

总结:Agent+LLM,既能思考,又能做事

这种“能思考的Agent”和“能做事的LLM”的结合,标志着通用人工智能(AGI)迈出了重要一步。Agent不再是简单的执行器,而是具备了理解复杂世界、自主学习和解决问题的能力。LLM也不再是局限于生成文本的“语言宠物”,它们找到了一个将智能输出付诸实践的“身体”。

Agent框架——LlamaIndex

现在我们指导了Agent的强大之处,我们必不可少地产生了想要自己动手造一个Agent的想法。但是Agent模块种类多样,流程变化多端,智能体编排层自定义程度极高。更重要的是,很多基本的“轮子“都要我们自己去手搓,重复地”造轮子“,使得我们的开发效率低下。

而Agent框架是帮助开发者构建和部署AI智能体(Agent)的软件工具集。它提供预设的结构、模块和接口,简化了智能体从感知环境、决策规划到采取行动的整个开发流程。通过使用框架,开发者可以避免从零开始搭建智能体的复杂底层逻辑,而是专注于实现智能体的核心业务逻辑和特定功能,从而提高开发效率和质量。它就像搭建房屋时的脚手架和预制件,让构建过程更便捷、可靠。

可以理解为,Agent框架将这些顶尖团队开发者们,能想到的所有的Agent相关要用到的模块,都给你封装打包好,你看着说明书就可以上手即用了,非常的方便!

LlamaIndex是一个开源数据框架,专门用于构建基于大型语言模型(LLM)的应用程序。它的主要擅长的点就是,它在RAG方面的支持做的较好,并且在工作流、工具调用等基础方面也达到了顶尖Agent框架应有的水平。

LlamaIndex核心组件

1. LLMs(大语言模型)

前面说了,Agent中必须接入LLM。LlamaIndex提供了多种简易的接入LLM的方式。鉴于市面上大部分API都是用OpenAI兼容的API调用规范,所以我们可以直接使用API调用来接入LLM。详细教程将在后续提供。

通过接入LLM,我们就可以直接在Workflow或者Agents中使用LLM。

2. Agents(智能体)

2.1 Agents Tools(工具)

前面提到,Agents相比于LLM有的一个独特优势就在于它可以用工具。而工具就可以让我们自由定制,也可以直接调用其他公司封装好的工具API。LlamaIndex同样也提供了社区,上面有工具包可以免费调用。

工具在变成实践中一般就体现为一个函数(function) 。Llamaindex可以直接将这个函数,转换成Agent可以调用的Tools,然后你直接在Agent的Tools参数下传入这个函数,即可在Agents中使用工具。工具效果是可以自定义的,Agent能用哪些工具也是可以自定义的。

2.2 Agents Context(上下文)

默认情况下,Agent在每次运行时都是“无状态”的(也可以理解为“无记忆的”),这意味着它不记得之前的对话或操作。

为了让Agent拥有“记忆”,LlamaIndex引入了一个Context类。这个Context对象就像Agent的短期记忆存储器,它可以在Agent运行期间和不同运行之间保存信息。当你创建一个Context并将其传递给Agent的每次运行时,Agent就能利用这个上下文来记住诸如用户姓名、之前的对话内容或其他重要变量。

2.3 Agents Events(事件)

在实际应用中,Agent执行任务可能需要较长时间。为了提供用户更好的体验和实时的进度反馈,LlamaIndex Agent引入了“事件”机制。Agent在运行过程中会不断触发各种事件,如Agent开始接收输入(AgentInput)、调用工具(ToolCall)、工具返回结果(ToolCallResult)、以及Agent最终生成输出(AgentOutput)等。

开发者可以监听这些事件,就像订阅消息一样,实时获取Agent的内部动态和执行进展,甚至能逐字流式地看到Agent的输出(AgentStream)。这使得用户可以清晰地了解Agent“正在做什么”,极大地提升了交互的透明度和用户体验,不再需要漫长等待最终结果。

2.4 Ask Human For Help(向人类寻求帮助)

有时候在执行一些比较危险的操作(例如智能体想要删除一些文件)的时候,我们往往希望Agent能在执行前,询问一下人类是否同意这个操作。LlamaIndex提供了类似的功能。

为了让人类参与其中,我们将让我们的工具发出一个事件,该事件不会被工作流中的任何其他步骤接收。然后我们会告诉我们的工具等待,直到它接收到一个特定的“回复”事件。然后工具才会被执行。

3. 其他关键组件

LlamaIndex还有很多其他的功能强大的组件,它们在智能体搭建的过程中是必不可少的。例如:

  • Workflow (工作流)
  • RAG(增强检索知识库)

我们在后续的教程中一定会提到他们。之所以不在绪论中介绍,是为了防止过早抛出过于复杂的概念,打击同学们的兴趣。

最后,我想说的是,只要你肯一直动手去做,跟着教程一个字母一个字母地敲代码,真正“用”起来,这个框架你一定能学会。别忘了,输入决定输出,你投入的时间和精力,就是你能学到的下限。换句话说,你给它多少,收获就有多大。更重要的是,如果你能把学习过程中的心得、代码、甚至自己做的AI工具开源分享出来,不仅能帮助别人,更会倒逼自己不断进步。真正的成长,永远来自于“输出”,而不是单纯的“输入”。所以,动起来吧,写代码、写笔记、分享你的成果,你会发现,学习变得更有力量,也更有意义。