You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:27:21