代理#
在 LlamaIndex 中组装代理可以通过定义一组工具并将它们提供给我们的 ReActAgent 实现来完成。我们在这里使用的是 OpenAI,但它可以与任何足够强大的 LLM 一起使用:
from llama_index.core.tools import FunctionTool
from llama_index.llms.openai import OpenAI
from llama_index.core.agent import ReActAgent
# 定义示例工具
def multiply(a: int, b: int) -> int:
"""将两个整数相乘并返回结果整数"""
return a * b
multiply_tool = FunctionTool.from_defaults(fn=multiply)
# 初始化 llm
llm = OpenAI(model="gpt-3.5-turbo-0613")
# 初始化 ReAct 代理
agent = ReActAgent.from_tools([multiply_tool], llm=llm, verbose=True)
这些工具可以是 Python 函数,就像上面展示的那样,也可以是 LlamaIndex 查询引擎:
from llama_index.core.tools import QueryEngineTool
query_engine_tools = [
QueryEngineTool(
query_engine=sql_agent,
metadata=ToolMetadata(
name="sql_agent", description="可以执行 SQL 查询的代理。"
),
),
]
agent = ReActAgent.from_tools(query_engine_tools, llm=llm, verbose=True)
您可以在我们的代理模块指南中了解更多信息。
本地 OpenAIAgent#
我们建立了一个基于OpenAI API for function calling的 OpenAIAgent
实现,允许您快速构建代理:
LlamaIndex 中的代理组件#
LlamaIndex 提供了核心模块,可以对数据进行不同用例的自动推理,从而使它们本质上成为代理。以下是一些这些核心模块以及示例教程。
用于多文档分析的 SubQuestionQueryEngine
查询转换
路由
LLM 重新排序
聊天引擎
在代理框架中使用 LlamaIndex 作为工具#
LlamaIndex 可以作为代理框架中的工具使用,包括 LangChain、ChatGPT 等。以下是这些集成的描述。
LangChain#
我们与 LangChain 有着深度集成。 LlamaIndex 查询引擎可以轻松打包为 LangChain 代理中使用的工具,并且 LlamaIndex 也可以用作内存模块/检索器。请查看我们的指南/教程!
资源
ChatGPT#
LlamaIndex 可以作为 ChatGPT 检索插件使用(我们有一个 TODO 来开发一个更通用的插件)。
资源