基于 LlamaIndex 实现 Agent 智能体
Agent 是什么?
在当前的 AIGC 应用生态中,Agent(智能体)已成为不可或缺的核心功能。从字面意义上理解,Agent 意为'代理',但在国内主流大模型产品的定义中,绝大多数将其称为'智能体'。
智能体的定义与定位
不同厂商对 Agent 的定义略有差异,但核心逻辑一致:
- 智谱清言:定义为'智能体'。
- 通义千问:定义为'智能体'。
- Kimi:定义为'私人助理'。
- 扣子 (Coze):定义为'智能体'。
从使用者角度看,智能体就像专门完成某一类任务的机器人。其设计目的为了实现特定的目标或完成特定的任务。它像是一个专家,专门解决某一类问题。例如,医生比喻中,Agent 如同专科大夫,只能看骨科相关的病;而大模型 LLM 则像全科大夫,什么病都能看。
在设计上,Agent 与通用 LLM 有显著区别。处理复杂数学公式或特定领域知识时,向专门为解决问题设计的 Agent 提问,比直接向 LLM 提问得到的答案更准确。
Agent 的创建和使用
以智谱清言为例,创建智能体时有不少配置项,其中两个最重要的配置是:
- 配置信息 (Prompt Engineering):包括 System Prompt 和 Role Prompt。这决定了 Agent 的角色设定和行为准则。
- 知识库 (RAG):加上知识库后,Agent 实际上变成了一个 RAG(检索增强生成)应用。这让 Agent 外挂一个用户上传的知识库,学习上传的知识后,能更准确地回答问题。
除了联网能力和代码能力外,知识库的集成是提升 Agent 专业性的关键。
基于 LlamaIndex 的 Agent 实现
LlamaIndex 是一个强大的数据框架,用于构建 LLM 应用。使用 LlamaIndex 实现一个简单的 Agent Demo 相对容易。
环境准备
首先确保安装了必要的依赖包:
pip install llama-index llama-index-llms-glm
基础工具调用 Demo
我们可以利用 ReActAgent 来实现工具调用。以下代码展示了如何创建一个能够执行加减乘除运算的 Agent。
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool
# 假设已自定义 GLM4LLM 封装
from llamaindex_demo.custom.custom_llm_glm import GLM4LLM
def multiply(a: float, b: float) -> :
a * b
() -> :
a + b
():
multiply_tool = FunctionTool.from_defaults(fn=multiply)
add_tool = FunctionTool.from_defaults(fn=add)
llm = GLM4LLM()
agent = ReActAgent.from_tools([multiply_tool, add_tool], llm=llm, verbose=)
response = agent.chat()
(response)
__name__ == :
main()


