Skip to content

代理#

概念#

数据代理是 LlamaIndex 中由 LLM 驱动的知识工作者,可以智能地在数据上执行各种任务,包括“读取”和“写入”功能。它们能够执行以下操作:

  • 在不同类型的数据(非结构化、半结构化和结构化)上执行自动搜索和检索。
  • 以结构化方式调用任何外部服务 API,并处理响应并将其存储以备后用。

在这个意义上,代理比我们的查询引擎更进一步,因为它们不仅可以从静态数据源“读取”,还可以动态地摄取和修改来自各种不同工具的数据。

构建数据代理需要以下核心组件:

  • 推理循环
  • 工具抽象

数据代理通过一组 API 或工具进行初始化,这些 API 可以被代理调用以返回信息或修改状态。给定一个输入任务,数据代理使用推理循环来决定使用哪些工具,以及以哪种顺序调用每个工具的参数。

推理循环#

推理循环取决于代理的类型。我们支持以下代理:

  • 功能调用代理(与任何功能调用 LLM 集成)
  • ReAct 代理(适用于任何聊天/文本完成端点)。
  • “高级代理”:LLMCompiler(https://llamahub.ai/l/llama-packs/llama-index-packs-agents-llm-compiler?from=)、Chain-of-Abstraction(https://llamahub.ai/l/llama-packs/llama-index-packs-agents-coa?from=)、Language Agent Tree Search(https://llamahub.ai/l/llama-packs/llama-index-packs-agents-lats?from=)等。

工具抽象#

您可以在我们的工具部分了解更多关于我们的工具抽象。

博客文章#

有关详细信息,请查看我们详细的博客文章

低级 API:逐步执行#

默认情况下,我们的代理公开了querychat函数,这些函数将执行用户查询的端到端操作。

我们还提供了一个低级 API,允许您逐步执行代理。这使您能够更好地控制创建任务,并分析和处理任务中每个步骤的输入/输出。

查看我们的指南

使用模式#

数据代理可以按以下方式使用(示例使用 OpenAI 功能 API)

from llama_index.agent.openai import OpenAIAgent
from llama_index.llms.openai import OpenAI

# 导入和定义工具
...

# 初始化 llm
llm = OpenAI(model="gpt-3.5-turbo-0613")

# 初始化 openai 代理
agent = OpenAIAgent.from_tools(tools, llm=llm, verbose=True)

查看我们的使用模式指南以获取更多详细信息。

模块#

在我们的模块指南中了解更多关于我们不同代理类型和用例的信息。

我们还有一个代理运行器和工作者的低级 API 指南

还请查看我们的工具部分