大模型格式化输出问题——基于Langchain的格式化输出 原创

发布于 2025-8-4 07:48
浏览
0收藏

“ 大模型只能输出文本数据,需要通过转换才能变成我们需要的数据对象。”

在大模型的应用场景中,格式化输出是一个非常重要的环节;特别是对Agent智能体来说,没有格式化输出,智能体就是空中楼阁。

但从技术的角度来说,文本类模型的输出只有一种格式,那就是文本数据,json也是文本数据的一种格式;模型本身无法生成类似于json对象,python对象等格式的数据;因此,虽然我们可以约束模型按照json格式进行输出,但它本质上输出的只是json字符串,而不是json对象。

大模型格式化输出问题——基于Langchain的格式化输出-AI.x社区

大模型的格式化输出

基于大模型只能输出字符串的前提,那么我们怎么约束大模型的输出呢?

在当今的程序开发领域,json格式是主流的数据传输格式;因此,一般情况下,我们和大模型的交互也是通过json串的形式来实现;但大模型本身又没有格式化输出。

在之前的文章中有提到过,在大模型应用中,唯一能和大模型直接打交道的角色只有一个——那就是提示词。

因此,一般情况下我们都会在提示词中约束大模型的输出格式,也就是告诉大模型要按照什么样的格式进行输出;这样的好处是有助于我们的程序处理;当然,现在的模型为了方便进行开发,部分模型也专门针对json格式进行训练或微调。

大模型格式化输出问题——基于Langchain的格式化输出-AI.x社区

所以,我们现在知道可以通过提示词的方式告诉模型,可以使用json格式进行通讯;但怎么把大模型输出的json字符串转换成我们可以直接使用的对象,以及由于大模型本身的不稳定性,导致偶尔模型的输出不完全符合我们要求的json格式。这个时候我们应该怎么处理?

所以,这里就涉及到另一个问题——怎么解析大模型的输出,也就是输出解析器的问题。输出解析器的几个核心目标如下:

核心目标

  1. 格式化输出:指导 LLM 按照特定格式(如 JSON、XML)生成文本。
  2. 解析结果:将 LLM 的文本输出解析为结构化对象(如 Python 对象)。
  3. 错误处理:提供容错机制(如重试、自动修复)。

输出解析器不但扮演着把文本数据解析成结构化对象的桥梁,同时还需要提供怎么格式化模型输出的问题,也就是指导大模型按照特定的格式进行文本输出;同时,为了解决模型本身的不确定性,同时还需要提供容错机制。

大模型格式化输出问题——基于Langchain的格式化输出-AI.x社区

所以,怎么实现一个输出解析器——OutputParse?

1. 通过提示词约束模型的输出——格式化输出

2. 解析输出——把大模型输出的文本数据转换成json或其它结构化对象

3. 容错机制,当输出解析失败时,则尝试其它解析方式或重新生成

而Langchain中的输出解析器——OutputParse就是基于这个原理来实现的;如StructuredOutputParser就是通过responseSchema来约束模型的输出格式,并通过parse方法来把模型输出的文本数据转换成json格式的数据。

当然,Langchain还提供了自定义解析的方式,用户可以根据自己的需求,自定义解析器。


本文转载自​​AI探索时代​​ 作者:DFires

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐