'list' object has no attribute '_merge_partial_and_user_variables'

2025年09月26日 13:37 响应: 1.98秒 状态: success

🚨 错误信息

Traceback (most recent call last): File "D:\新建文件夹\langchain-base\Chatbot.py", line 35, in <module> prompt = ChatPromptTemplate.format_messages( [ ...<2 lines>... ] ) File "D:\software\Python\Lib\site-packages\langchain_core\prompts\chat.py", line 1203, in format_messages kwargs = self._merge_partial_and_user_variables(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'list' object has no attribute '_merge_partial_and_user_variables'

🤖 AI解决方案


Traceback (most recent call last):
File "D:\新建文件夹\langchain-base\Chatbot.py", line 35, in
prompt = ChatPromptTemplate.format_messages(
[
...<2 lines>...
]
)
File "D:\software\Python\Lib\site-packages\langchain_core\prompts\chat.py", line 1203, in format_messages
kwargs = self._merge_partial_and_user_variables(kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute '_merge_partial_and_user_variables'

  • 错误翻译:


  • AttributeError: 'list' object has no attribute '_merge_partial_and_user_variables'
    AttributeError: 'list' 对象没有属性 '_merge_partial_and_user_variables'

  • 原因分析:

  • ChatPromptTemplate.format_messages() 方法被错误地传递了一个列表作为参数,而它期望的是关键字参数。

  • 解决方案:

  • 应该使用 ChatPromptTemplate.from_messages() 来创建 ChatPromptTemplate 实例,并将消息列表作为参数传递。

    python
    # 假设 prompt_template 是你的 ChatPromptTemplate 实例
    # 错误用法:
    # prompt = prompt_template.format_messages([...])

    # 正确用法:
    from langchain_core.prompts import ChatPromptTemplate, SystemMessage, HumanMessage

    chat_template = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant."),
    ("human", "{user_input}")
    ])

    # 然后使用 format_prompt 或 invoke 来格式化
    formatted_prompt = chat_template.invoke({"user_input": "你好"})

  • 预防措施:

  • 1. 仔细查阅 Langchain 官方文档,确认 ChatPromptTemplate 的创建和使用方法。
    2. 在调用方法前,检查传递的参数类型和结构是否符合预期。