关于大模型格式化输出问题的深入研究 原创

发布于 2025-8-13 07:11
浏览
0收藏

“ 大模型格式化输出的原理,第一步告诉大模型我们需要什么样的格式,第二步按照我们的格式要求去解析大模型的输出;大模型的输入与输出只有一种,那就是文本数据包括格式化的文本数据。”

今天在开发时遇到一个格式化输出的问题,开发框架使用的是Langchain的格式化解析器PydanticOutputParser;关于Langchain的格式化解析器就不多做介绍了,为了兼容不同的数据格式,Langchain提供了多种不同的解析器,包括StructuredOutputParser(配合ResponseSchema使用),JSONOutputParser,StrOutputParser解析器等。

但输出解析器的原理也很简单,首先在提示词中约束模型的输出格式,然后获取模型输出之后,再把输出数据转换成我们所需要的数据。

注意:大模型只接受一种输入和输出,那就是文本字符串;我们需要什么格式的数据,需要把这些文本转换成对应的数据格式。

数据解析器——OutputParser

在上面我们介绍说,大模型只接受一种输入和输出,那就是文本格式;虽然大模型的输出可能看起来很像JSON或XML对象等,但实际山它就是一个字符串。

而我们也都知道,提示词是一种与大模型交互的手段,但提示词并不能强制约束大模型要做什么,不要做什么;什么意思呢?

就是说,虽然我们可以在提示词中要求大模型按照JSON的格式进行输出,并且指定其输出的字段;但大模型并不一定会听你的按照固定的格式,固定的要求进行输出。

而这就带来了一个问题,那就是模型没有按照我们的要求进行输出,也就是说模型的输出是错误的;这就导致我们无法正常处理输出数据;这样也就无法进行下一步处理。

关于大模型格式化输出问题的深入研究-AI.x社区

所以,这时我们就需要做一个异常处理,当模型输出有误时,我们需要捕获这个解析异常,注意这里说的是解析异常不是输出异常;原因就是前面所说的,我们可以要求大模型按照我们需要的格式进行输出,但大模型并不一定会听你的;而这时,只有我们解析数据时,才会知道大模型的输出是否符合我们的标准。

当捕获这个解析异常之后,我们需要重新调用模型,让模型再次按照我们要求的格式进行输出;当然,模型这一次也不一定会听我们的,因此可能需要几次重试,才有可能得到我们想要的结果。

为什么这里要专门强调格式化输出?

原因在于,在构建大模型应用时,我们需要大模型的输出方便我们的处理,或者让大模型去自主调用工具,而这些都需要格式化输出才行;否则,面对完全没有格式的数据,我们什么都做不了。

而所谓的格式化输出的原理也很简单,首先是告诉大模型我们需要什么格式的数据,然后再按照我们的格式要求去解析大模型的输出。


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

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