使用LangChain+OpenAI生成文本时LLMChain验证错误求助
LangChain LLMChain 验证错误解决方案
问题背景
使用Python 3.10,依赖openai==1.3.5、langchain==0.0.345,尝试用LangChain结合OpenAI生成文本时,运行代码出现ValidationError。
原代码
#openai==1.3.5 #langchain==0.0.345 from transformers import pipeline from langchain import PromptTemplate, LLMChain, OpenAI import os os.environ['OPENAI_API_KEY'] = '*****' def generate_story (scenario): template = ''' You are a story teller. Please make a story based on the context below: CONTEXT: {scenario} STORY: ''' prompt = PromptTemplate (template = template, input_variables = ['scenario']) story_llm = LLMChain(LLM = OpenAI( model_name = 'gpt-3.5-turbo', temperature = 1), prompt = prompt ) story = story_llm.predict(scenario = scenario) print(story) return story scenario = 'A person is skiing down a snowy slope.' story = generate_story (scenario) print(story)
错误信息
/usr/local/lib/python3.10/dist-packages/pydantic/main.cpython-310-x86_64-linux-gnu.so in pydantic.main.BaseModel.__init__() ValidationError: 2 validation errors for LLMChain llm field required (type=value_error.missing) LLM extra fields not permitted (type=value_error.extra)
问题原因
LangChain的LLMChain类初始化参数要求传入小写的llm,你写成了大写的LLM,导致Pydantic验证时:
- 找不到必填的
llm字段,抛出"field required"错误 - 大写的
LLM属于未定义的额外字段,抛出"extra fields not permitted"错误
修正后的代码
修改LLMChain初始化时的参数名,将LLM改为llm:
#openai==1.3.5 #langchain==0.0.345 from transformers import pipeline from langchain import PromptTemplate, LLMChain, OpenAI import os os.environ['OPENAI_API_KEY'] = '*****' def generate_story (scenario): template = ''' You are a story teller. Please make a story based on the context below: CONTEXT: {scenario} STORY: ''' prompt = PromptTemplate (template = template, input_variables = ['scenario']) # 这里将LLM改为llm story_llm = LLMChain(llm = OpenAI( model_name = 'gpt-3.5-turbo', temperature = 1), prompt = prompt ) story = story_llm.predict(scenario = scenario) print(story) return story scenario = 'A person is skiing down a snowy slope.' story = generate_story (scenario) print(story)
额外说明
gpt-3.5-turbo属于Chat模型,在LangChain中更适合用ChatOpenAI类而非OpenAI类,当前版本OpenAI类虽能兼容,但如果后续出现问题,可以替换为:
from langchain.chat_models import ChatOpenAI # 替换OpenAI为ChatOpenAI story_llm = LLMChain(llm = ChatOpenAI( model_name = 'gpt-3.5-turbo', temperature = 1), prompt = prompt )
内容的提问来源于stack exchange,提问作者zesla
相关产品推荐
相关产品推荐

