通过定义一些回调可以处理模型在开始,结束还有出现问题的时候的一些事情,使用这些回调可以方便调试模型。我们需要先导入一个 ConsoleCallbackHandler ,它来自 langchain/callbacks。
在下面声明一个 handler ,它的值可以新建一个 ConsoleCallbackHandler。
然后在创建这个 OpenAI 实例的时候,可以设置一下 callbacks 这个属性,它是一个数组,里面可以添加一个 handler。
在终端,执行 node index.mjs,运行一下应用。你会发现,开始调用模型,还有结束的时候,都会在控制台上输出一些内容。
回到项目,再试一下自己定义需要的回调,从这个 langchain/callbacks 里,导入BaseCallbackHandler。
修改下面这个 handler 的值,用一下 BaseCallbackHandler 上面的 fromMethods 这个方法。提供一个对象,在这个对象里,可以添加需要的回调方法。
比如模型一开始会执行 handleLLMStart,这个方法有两个参数,一个是 llm 表示模型,一个是 prompt ,表示提示文本。
在这个方法里可以在控制台上先输出一个 handleLLMStart 加上一个换行符,然后再输出 llm 还有 prompt,最后再添加一个换行符。
下面再定义一个方法,名字是 handleLLMEnd,模型处理任务结束以后会执行这个方法,它接收一个 output ,在这个方法里可以在控制台上输出一个 handleLLMEnd 加上一个换行符,然后用一下 JSON.stringify 处理一下 output,第二个参数是
null,第三个参数是 2 ,最后再输出一个 \n 。
再添加一个方法,名字是 handleLLMError,这个方法有个 error 参数,在方法里可以在控制台上输出 handleLLMError,换行符,还有这个 error,也就是在使用模型的时候发生的错误。最后再输出一个换行符。
在创建 OpenAI 实例的时候,我们可以在这个对象参数里添加一个 callbacks 属性,它的值是一个数组,里面可以添加一个 handler。
在终端可以测试一下,运行一下应用。你会发现模型在开始的时候会执行 handleLLMStart 这个回调,llm 是一个对象,它里面有个 name 属性,这里它的值是 openai ,表示现在使用的是 openai 提供的模型。prompt 是提示文本,它是一个数组。
模型结束任务以后会执行 handleLLMEnd,这里输出的就是模型返回的结果。