如何在 Langchain 中激活详细程度

Ont*_*nio 5 python langchain large-language-model

我正在使用 Langchain 0.0.345。我无法使用LCEL 方法构建链来获得幕后发生的情况的详细输出。

我有这个代码:

from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.globals import set_verbose

set_verbose(True)

prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
model = ChatOpenAI()
output_parser = StrOutputParser()

chain = prompt | model | output_parser

chain.invoke({"topic": "ice cream"})
Run Code Online (Sandbox Code Playgroud)

根据文档,使用的set_verbose是显示中间步骤、提示构建等的详细输出的方法。但是该脚本的输出只是一个字符串,没有任何中间步骤。实际上, API 文档langchain.globals中甚至没有提及该模块。

我也尝试过verbose=True在模型创建中设置参数,但也不起作用。这用于与前一种方法一起使用类等进行构建。

建议和当前的方法是如何记录输出以便您了解发生了什么?

谢谢!

Fli*_*lan 6

您可以将回调处理程序添加到invoke方法的配置中。

像这样:

from langchain.callbacks.tracers import ConsoleCallbackHandler

# ...your code

chain.invoke({"topic": "ice cream"}, config={'callbacks': [ConsoleCallbackHandler()]})
Run Code Online (Sandbox Code Playgroud)
包含更改的代码:
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.callbacks.tracers import ConsoleCallbackHandler

prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
model = ChatOpenAI()
output_parser = StrOutputParser()

chain = prompt | model | output_parser

chain.invoke({"topic": "ice cream"}, config={'callbacks': [ConsoleCallbackHandler()]})
Run Code Online (Sandbox Code Playgroud)

输出与原始的“详细模式”不同,但这是最接近的替代方案。

备择方案

为了更有针对性的输出或更少的“冗长”

尝试将回调处理程序附加到特定对象。例如:

ChatOpenAI().with_config({'callbacks': [ConsoleCallbackHandler()]})
Run Code Online (Sandbox Code Playgroud)

您可以在此处了解有关自定义回调的更多信息

对于高详细程度

全局调试仍然适用于 LCEL:

from langchain.globals import set_debug

set_debug(True)

# your code
Run Code Online (Sandbox Code Playgroud)
对于图形用户界面

您可以使用权重和偏差或langsmith