Skip to content

结构化输出#

LLM 的能力产生结构化输出对于依赖可靠解析输出数值的下游应用程序至关重要。LlamaIndex 本身也在以下方面依赖结构化输出。

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

LlamaIndex 提供了多种模块,使 LLM 能够以结构化格式生成输出。我们在不同抽象级别提供模块:

  • 输出解析器:这些是在 LLM 文本完成端点之前和之后操作的模块。它们不与 LLM 函数调用端点一起使用(因为这些端点已经包含了结构化输出)。
  • Pydantic 程序:这些是将输入提示映射到由 Pydantic 对象表示的结构化输出的通用模块。它们可以使用函数调用 API 或文本完成 API + 输出解析器。这些还可以与查询引擎集成。
  • 预定义的 Pydantic 程序:我们有预定义的 Pydantic 程序,将输入映射到特定的输出类型(如数据框)。

请查看下面的部分,了解输出解析器和 Pydantic 程序的概述。

🔬 结构化输出函数的解剖#

在这里,我们描述了由 LLM 驱动的结构化输出函数的不同组件。流水线取决于您是使用通用的 LLM 文本完成 API还是LLM 函数调用 API

使用通用完成 API 时,输入和输出由文本提示处理。输出解析器在 LLM 调用之前和之后起着确保结构化输出的作用。在 LLM 调用之前,输出解析器可以向提示附加格式说明。在 LLM 调用之后,输出解析器可以解析输出到指定的说明。

使用函数调用 API 时,输出本质上是结构化格式,输入可以采用所需对象的签名。结构化输出只需以正确的对象格式(例如 Pydantic)进行转换。

资源#