如何使用LangChain的LLMChain获取发送给LLM的完整请求文本(Python)
如何获取LangChain LLMChain发送给模型的完整请求文本
你可以通过以下几种方式直接获取填充后的完整请求文本,无需手动拼接模板:
方法1:开启verbose调试模式
给LLMChain添加verbose=True参数,调用时会在控制台打印出发送给模型的完整提示内容:
from langchain.llms import OpenAI from langchain.prompts import PromptTemplate from langchain.chains import LLMChain llm = OpenAI(model_name="gpt-3.5-turbo-0613") prompt = PromptTemplate(input_variables=["a", "b"], template="Hello {a} and {b}") # 开启verbose模式 chain = LLMChain(llm=llm, prompt=prompt, verbose=True) result = chain.call({"a": "some text", "b": "some other text"})
运行后控制台会输出格式化后的完整提示词。
方法2:通过PromptTemplate直接生成
利用PromptTemplate的format方法传入参数,直接得到填充后的完整文本:
formatted_prompt = prompt.format(a="some text", b="some other text") print(formatted_prompt) # 输出:Hello some text and some other text
方法3:用回调函数捕获运行时的提示文本
如果想在调用chain的过程中自动捕获完整请求文本,无需手动调用format,可以自定义回调类:
from langchain.callbacks.base import BaseCallbackHandler from langchain.llms import OpenAI from langchain.prompts import PromptTemplate from langchain.chains import LLMChain class PromptCaptureCallback(BaseCallbackHandler): def __init__(self): self.captured_prompt = None def on_llm_start(self, serialized, prompts, **kwargs): # 捕获第一个prompt(LLMChain只会生成一个) self.captured_prompt = prompts[0] # 初始化回调实例 prompt_capture = PromptCaptureCallback() # 将回调传入LLM llm = OpenAI(model_name="gpt-3.5-turbo-0613", callbacks=[prompt_capture]) prompt = PromptTemplate(input_variables=["a", "b"], template="Hello {a} and {b}") chain = LLMChain(llm=llm, prompt=prompt) result = chain.call({"a": "some text", "b": "some other text"}) # 获取捕获到的完整请求文本 print(prompt_capture.captured_prompt)
补充说明
你之前尝试的return_final_only=True仅控制是否只返回最终生成结果,include_run_info=True返回的是运行元数据(如耗时、模型信息),均不包含格式化后的完整提示文本。
内容的提问来源于stack exchange,提问作者cserpell
相关产品推荐
相关产品推荐

