You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

LangChain调用ChatOpenAI时出现AttributeError: 'str' object has no attribute 'model_dump'错误的求助

LangChain调用ChatOpenAI时出现AttributeError: 'str' object has no attribute 'model_dump'错误的求助

我在使用langchain_corelangchain-openai库时遇到了一个错误,希望有人能帮我解决这个问题。

错误信息:

AttributeError: 'str' object has no attribute 'model_dump'

示例代码:

import pandas as pd
from data_api import *
from langchain_openai import ChatOpenAI
# from langchain.chat_models import ChatOpenAI
from dotenv import load_dotenv, find_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from perplexity.perplexity import search_chat_completion
from langchain.prompts import PromptTemplate
from langchain_core.runnables import RunnableLambda
from operator import itemgetter
import json
import os
from typing import List, Dict, Any
from tqdm import tqdm

        self.llm = ChatOpenAI(model='gpt-4o', temperature=0)
        self.mini = ChatOpenAI(model='gpt-4o-mini', temperature=0)
        self.pplx = ChatOpenAI(base_url="https://api.perplexity.ai", 
                               model='llama-3.1-sonar-huge-128k-online')
        self.o1 =  ChatOpenAI(model='o1-preview', temperature=1)

chain = (
    {
        "chain1": chain1, 
        "chain2": chain2, 
        "chain3": chain3, 
        "chain4": chain4, 
        "chain5": chain5, 
        "chain6": chain6, 
        "chain7": chain7, 
        "company": itemgetter("company")
    }
    | PromptTemplate.from_template(
"""
<text>

{chain1}

{chain2}

{chain3}

{chain4}

{chain5}

{chain6}

{chain7}

</text>
"""
                    ) | self.o1 | StrOutputParser()
)
        
return chain.invoke({"company": symbol})

回溯信息:

AttributeError("'str' object has no attribute 'model_dump'")Traceback (most recent call last):


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3022, in invoke
    input = context.run(step.invoke, input, config, **kwargs)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3727, in invoke
    output = {key: future.result() for key, future in zip(steps, futures)}


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3727, in <dictcomp>
    output = {key: future.result() for key, future in zip(steps, futures)}


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/concurrent/futures/_base.py", line 439, in result
    return self.__get_result()


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/concurrent/futures/_base.py", line 391, in __get_result
    raise self._exception


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3711, in _invoke_step
    return context.run(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3022, in invoke
    input = context.run(step.invoke, input, config, **kwargs)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3727, in invoke
    output = {key: future.result() for key, future in zip(steps, futures)}


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3727, in <dictcomp>
    output = {key: future.result() for key, future in zip(steps, futures)}


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/concurrent/futures/_base.py", line 446, in result
    return self.__get_result()


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/concurrent/futures/_base.py", line 391, in __get_result
    raise self._exception


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3711, in _invoke_step
    return context.run(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/runnables/base.py", line 3024, in invoke
    input = context.run(step.invoke, input, config)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 286, in invoke
    self.generate_prompt(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 786, in generate_prompt
    return self.generate(prompt_messages, stop=stop, callbacks=callbacks, **kwargs)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 643, in generate
    raise e


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 633, in generate
    self._generate_with_cache(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 851, in _generate_with_cache
    result = self._generate(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_openai/chat_models/base.py", line 718, in _generate
    return self._create_chat_result(response, generation_info)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_openai/chat_models/base.py", line 745, in _create_chat_result
    response if isinstance(response, dict) else response.model_dump()


AttributeError: 'str' object has no attribute 'model_dump'

环境信息:

  • Python 3
PackageVersion
langchain0.3.13
langchain-community0.3.13
langchain-core0.3.28
langchain-openai0.2.14
langchain-text-splitters0.3.4
langgraph0.2.59
langgraph-checkpoint2.0.9
langgraph-sdk0.1.44
langsmith0.2.3
openai1.58.1
pydantic2.10.4
pydantic_core2.27.2
pydantic-settings2.7.0

尝试的修复

我更新了解析函数来处理str对象,但问题仍然存在:

def wrap_chain_output(chain_output):
    """Wrap children chain output."""
    if isinstance(chain_output, str):
        return chain_output
    elif isinstance(chain_output, AIMessage):  
        return chain_output.content
    else:
        raise TypeError("Unsupported type for chain_output")
  • 修改后的链示例
chain216 = (
    PromptTemplate.from_template(
        """
        **Search for the industry corresponding to the company **{company}** and then conduct research.**
        Engage in divergent thinking, including but not limited to the following keywords.
        """
    )
    | self.pplx 
)

chain2 = (
    {
        "chain211": chain211 | (lambda x: wrap_chain_output(x)), 
        "chain212": chain212 | (lambda x: wrap_chain_output(x)),
        "chain213": chain213 | (lambda x: wrap_chain_output(x)),
        "chain214": chain214 | (lambda x: wrap_chain_output(x)),
        "chain215": chain215 | (lambda x: wrap_chain_output(x)),
        "chain216": chain216 | (lambda x: wrap_chain_output(x)),
        "company": itemgetter("company")
    }
    | PromptTemplate.from_template(
        """
        ## {company}
        <text>
        {chain211}
        {chain212}
        {chain213}
        {chain214}
        {chain215}
        {chain216}
        </text>
        """
    )
    | self.llm
)
  • Langsmith bug trace info显示了相关错误的调用流程
  • 错误详情:
AttributeError("'str' object has no attribute 'model_dump'")Traceback (most recent call last):


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 633, in generate
    self._generate_with_cache(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_core/language_models/chat_models.py", line 851, in _generate_with_cache
    result = self._generate(


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_openai/chat_models/base.py", line 718, in _generate
    return self._create_chat_result(response, generation_info)


  File "/home/azureuser/miniconda3/envs/llm39/lib/python3.9/site-packages/langchain_openai/chat_models/base.py", line 745, in _create_chat_result
    response if isinstance(response, dict) else response.model_dump()


AttributeError: 'str' object has no attribute 'model_dump'

备注:内容来源于stack exchange,提问作者Nard Li

火山引擎 最新活动