先维护 LLMChain,再比较 LCEL 迁移:练习答案
参考实现
完整实现:
python
from langchain_classic.chains import LLMChain
from langchain_core.language_models.fake import FakeListLLM
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import RunnablePassthrough
p=PromptTemplate.from_template("{topic} {language}")
old=LLMChain(llm=FakeListLLM(responses=["ok"]),prompt=p,output_key="summary")
new=RunnablePassthrough.assign(summary=p | FakeListLLM(responses=["ok"]))
x={"topic":"retry","language":"Chinese"}
assert old.invoke(x) == new.invoke(x) == {**x,"summary":"ok"}
print("contract preserved")FakeListLLM 已返回字符串,因此本题不必增加多余解析器;真实 chat model 返回消息,通常需要解析器。