LlamaIndex 实现 React Agent

React Agent 是指 LLM 对问题自行推理并调用外部工具解决问题,如下图所示,通过一些推理步骤最终找到想要的答案。

LlamaIndex 提供了实现 React Agent 的框架,通过框架可以轻松的实现上图中的步骤。那么,如果不用 LlamaIndex 应该如何实现一个 Agent 呢?首先,需要将需要调用的外部 API 和问题提供给LLM,LLM 判断得到结果是否需要调用API,如果需要调用,将 API 名称和参数相关信息返回到应用端,应用端执行API 并将结果再次传给 LLM,LLM 再次判断是否需要调用外部工具,这是个循环的过程,直到 LLM 得到答案。通过代码,分析一下 LlamaIndex 是如何实现 ReactAgent 多轮对话的。

用 LlamaIndex 实现 ReactAgent 代码如下:

from llama_index.core.agent import ReActAgent
from llama_index.llms.openai import OpenAI
from llama_index.core.tools import BaseTool, FunctionTool

from utils import init_model

import sys, os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'parent_directory')))


def multiply(a: int, b: int) -> int:
    """Multiply two integers and returns the result integer"""
    return a * b


multiply_tool = FunctionTool.from_defaults(fn=multiply)

def add(a: int, b: int) -> int:
    """Add two integers and returns the result integer"""
    return a + b


add_tool = FunctionTool.from_defaults(fn=add)


init_model()


agent = ReActAgent.from_tools([multiply_tool, add_tool], verbose=True)

response = agent.chat("What is 20+(2*4)? Calculate step by step ")

实现 Agent 主要通过 FunctionTool 和 ReactAgent,分别看一下两个类的主要作用。

FunctionTool

FunctionTool 用来定义外部工具,包括 Function 的详细信息,功能描述、入参和出参等信息,通过跟踪可以看到,代码首先创建了两个 FunctionTool,ToolMetadata 定义了工具的详细信息。


ReactAgent

创建 ReactAgent,传入 tools、llm,max_iteration 是指最大推理次数,默认为 10 次。

调用 self._react_chat_formatter 准备提示词,提示词准备完成之后,调用 LLM大模型进行处理。

解析大模型返回结果并调用对应 Function。

每一步的结果都会存储在 Memory 中,作为历史在下一步中传给 LLM 进行处理。

总结

LlamaIndex 通过提示词将问题与工具进行关联,通过多轮推理得到最终答案。核心还是在提示词,无论 RAG 还是 Agent,都是作为桥梁,底层逻辑还是通过提示词的方式把大模型的能力外部应用能力打通并进行整合。

相关推荐
AI2AGI9 小时前
天天AI-20250121:全面解读 AI 实践课程:动手学大模型(含PDF课件)
大数据·人工智能·百度·ai·文心一言
鸭鸭鸭进京赶烤12 小时前
OpenAI秘密重塑机器人军团: 实体AGI的崛起!
人工智能·opencv·机器学习·ai·机器人·agi·机器翻译引擎
佛州小李哥15 小时前
在亚马逊云科技上用AI提示词优化功能写出漂亮提示词(下)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
大模型铲屎官16 小时前
玩转 LangChain:从文档加载到高效问答系统构建的全程实战
人工智能·python·ai·langchain·nlp·文档加载·问答系统构建
Ai多利19 小时前
2025发文新方向:AI+量化 人工智能与金融完美融合!
人工智能·ai·金融·量化
p2051 天前
搭建个人AI知识库-DIFY
ai
佛州小李哥2 天前
在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
wit_@2 天前
【深入解析】棋类游戏算法:Minimax, Negamax, 蒙特卡洛树搜索与AlphaZero
python·ai·negamax
xianfianpan3 天前
史上最简单open-webui安装方式!!!
python·深度学习·神经网络·ai
Natsuagin3 天前
在Windows上轻松部署本地大语言模型:Ollama与Open-WebUI的完整指南
windows·ai·语言模型