利用 LLMs 生成结构化输出的重要性与方法
在现代数据处理和分析中,大型语言模型(LLMs)生成结构化输出的能力对于依赖于可靠解析输出值的下游应用至关重要。LlamaIndex 本身也在以下几个方面依赖于结构化输出:
文档检索
LlamaIndex 中的许多数据结构依赖于具有特定模式的 LLM 调用来进行文档检索。例如,树索引期望 LLM 调用采用 “ANSWER: (number)” 的格式。
响应合成
用户可能期望最终响应包含一定程度的结构(例如 JSON 输出、格式化的 SQL 查询等)。
为了实现这一目标,LlamaIndex 提供了多种模块,使 LLMs 能够以结构化格式生成输出。默认情况下,结构化输出在我们的 LLM 类中提供。我们还提供了一些低级模块:
Pydantic 程序
这些是通用模块,将输入提示映射到由 Pydantic 对象表示的结构化输出。它们可能使用函数调用 API 或文本完成 API + 输出解析器。这些还可以与查询引擎集成。
预定义的 Pydantic 程序
我们有一些预定义的 Pydantic 程序,将输入映射到特定的输出类型(如数据框)。
输出解析器
这些模块在 LLM 文本完成端点之前和之后运行。它们不与 LLM 函数调用端点一起使用(因为这些端点本身包含结构化输出)。
结构化输出函数的剖析
在这里,我们描述了一个由 LLM 驱动的结构化输出函数的不同组件。管道的依赖于你是使用通用的 LLM 文本完成 API 还是 LLM 函数调用 API。
使用通用完成 API
在使用通用完成 API 时,输入和输出由文本提示处理。输出解析器在确保结构化输出方面在 LLM 调用之前和之后发挥作用。在 LLM 调用之前,输出解析器可以向提示追加格式指令。在 LLM 调用之后,输出解析器可以按照指定指令解析输出。
使用函数调用 API
在使用函数调用 API 时,输出本身是结构化的,输入可以接受所需对象的签名。结构化输出只需转换为正确的对象格式(例如 Pydantic)。
结语
结构化输出不仅提高了数据处理的可靠性,还为下游应用提供了更丰富的信息。通过 LlamaIndex 提供的各种模块和工具,你可以轻松地利用 LLMs 生成结构化输出,从而提升你的数据处理和分析能力。
希望这篇博客文章能帮助你更好地理解并应用 LLMs 生成结构化输出的方法。如果你有任何问题或需要进一步的帮助,请随时联系我们。祝你在数据处理的道路上越走越远!