代理#
概念#
数据代理是 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:逐步执行#
默认情况下,我们的代理公开了query
和chat
函数,这些函数将执行用户查询的端到端操作。
我们还提供了一个低级 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 指南。
还请查看我们的工具部分!