跳转到内容

结构化输出

大型语言模型生成结构化输出的能力对于依赖可靠解析输出值的下游应用至关重要。 LlamaIndex本身在以下方面也依赖于结构化输出。

  • 文档检索: LlamaIndex中的许多数据结构依赖于遵循特定模式的LLM调用来进行文档检索。例如,树状索引期望LLM调用的格式为“ANSWER: (数字)”。
  • 响应合成: 用户可能期望最终响应包含某种程度的结构(例如JSON输出、格式化的SQL查询等)

LlamaIndex 提供了多种模块,使大型语言模型能够以结构化格式生成输出。默认情况下,我们的LLM类中提供了结构化输出功能。我们还提供更底层的模块:

  • Pydantic程序: 这些是通用模块,将输入提示映射到由Pydantic对象表示的结构化输出。它们可以使用函数调用API或文本补全API+输出解析器。这些也可以与查询引擎集成。
  • 预定义 Pydantic 程序: 我们已预定义可将输入映射至特定输出类型(如数据框)的 Pydantic 程序。
  • 输出解析器:这些模块在大型语言模型文本补全端点前后运行。它们不适用于大型语言模型函数调用端点(因为后者本身就包含结构化输出)。

请参阅以下部分以了解输出解析器和Pydantic程序的概述。

这里我们描述一个基于LLM的结构化输出函数的不同组件。该流程取决于您使用的是通用LLM文本补全API还是LLM函数调用API

通过通用补全API,输入和输出由文本提示处理。输出解析器在大型语言模型调用前后发挥作用,确保结构化输出。在大型语言模型调用前,输出解析器可以向提示添加格式指令。在大型语言模型调用后,输出解析器可以根据指定指令解析输出。

通过函数调用API,输出本质上采用结构化格式,输入可以接收所需对象的签名。结构化输出只需转换为正确的对象格式(例如Pydantic)。