Zod 是一个用来声明还有验证数据类型用的库,一般用在使用 TypeScript 语言编写的项目里。在我们的 LangChain 应用也可以使用 Zod 定义模型输出的数据结构跟模式。
先在这个 Node.js 程序文件的顶部导入一个 z,它来自 zod 这个包。然后声明的这个 parser 这回可以用一下 StructuredOutputParser 上面的 fromZodSchema 这个方法返回。里面用一下 z.object 方法,提供一个对象,里面是这个对象的模式。
比如它应该有一个 answer 这个属性,值可以用一下 z.string() 表示它的值应该是一个字符串类型的值,然后用 describe 方法描述一下这个属性,“用户问题的答案” ,再添加一个 sources 属性,它的值是一个数组,用一下 z.array() 这个方法,给它提供一个 z.string() ,表示数组项目的类型是字符串。接着用 .describe() 方法描述一下这个 sources 属性,“回答用户问题的来源,应该是一个网址”。
我们在控制台上再输出这个 prompt 检查一下。在终端,运行一下这个 node 应用,一开始会输出交给模型处理的这段提示文本。你会发现这段提示文本里描述了一下模型输出的内容要使用的格式。
这里说 the output should be a markdown code snippet formatted in the following schema ,输出应该是一段 Markdown 代码片断,模式像下面这样。
最后我们输出的是解析之后的数据,它是一个对象,里面有一个 answer 属性,它是一个字符串,另外还有一个 sources 属性,它是一个数组类型的数据,里面有一个字符串项目。