用户登录

在 LangChain 应用里可以使用结构输出解析器设置模型返回来的数据的结构,如果模型返回的数据的不符合我们定义的模式,可以使用一个模型修复一下这个数据的格式。这个就是 OutputFixingParser 的作用。

先在这个 Node.js 程序文件的顶部从 langchain/output_parsers 里面,导入 OutputFixingParser。然后再导入一个 ChatOpenAI ,它来自 langchain/chat_models/openai,修复数据格式的时候可以使用这个模型。

下面我们手工定义一个有问题的输出,声明一个 result,用一个字符模板,三个反引号,这几个反引号需要转义一下,前面可以加上反斜线。然后是 json,结束的地方也需要三个反引号,同样需要转义。

在它们之间一个 JSON 数据,里面添加一个 answer ,设置一下对应的值 ,再添加一个 sources,然后把它的值设置成一个字符串。在定义的输出模式里面,我们要求 sources 它是一个数组,所以这里如果 sources 的值是一个字符串,在解析数据的时候就会报错。

下面用一组 try,catch 区块,在 try 里面,await,用一下 parser.parse 处理一下这个 result,假设它是模型返回来的数据。然后在 catch 区块里处理一下解析数据的时候发生的错误,可以在控制台上输出这个 error。

在终端,运行一下应用,这里输出的就是解析数据的时候发生的错误,这里显示,sources 数据的类型有问题,Expected array,期望的是一个数组,但实际上它是一个 string,也就是字符串。

回到项目,在这个 catch 区块里,声明一个 fixParser,用一下 OutputFixingParser.fromLLM,先给它提供一个模型,新建一个 ChatOpenAI,提供一个对象参数,把 temperature 设置成 0。再把上面创建的 parser 交给这个 fromLLM 方法。

然后声明一个 fixedResult ,表示修复之后的数据,等于 await,用一下这个 fixParser 上面的 parse 方法,把有问题的数据交给它,这里就是这个 result。下面在可以在控制台上输出“修复后:” 然后是这个 fixedResult。

在终端,再运行一下应用。这里会显示使用模型修复之后的数据,修复之后, sources 这个属性的值就会变成一个数组了。

输出修正解析器(OutputFixingParser)《 LangChain 智能应用开发:提示 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点