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

使用PydanticOutputParser解析时遇类型错误:期望字典而非列表

问题解决思路

核心问题原因

你遇到的NEFDataModel expected dict not list错误,根本原因是解析器的目标是单个NEFDataModel对象(字典结构),但API返回的是多个该对象组成的数组(列表结构),和parameters字段关系不大,先解决结构不匹配的问题。

具体修复步骤

  • 调整解析目标为数组类型
    直接把PydanticOutputParser的解析目标改成List[NEFDataModel],示例代码:

    from langchain.output_parsers import PydanticOutputParser
    from typing import List
    from pydantic import BaseModel
    
    # 你的原有NEFDataModel定义
    class NEFDataModel(BaseModel):
        parameters: dict
        # 其他字段...
    
    # 修改解析器,目标为数组
    nef_output_parser = PydanticOutputParser(pydantic_object=List[NEFDataModel])
    
  • 处理响应内容格式
    注意response.content是字节流,需要先转成JSON字符串再传给解析器,避免格式问题:

    import json
    
    # 把字节转成JSON对象再转成字符串
    response_json = json.loads(response.content)
    parsed_result = nef_output_parser.parse(json.dumps(response_json))
    
  • 验证parameters字段(可选)
    如果调整后仍有错误,再检查parameters字段的定义是否和API返回的结构一致:

    • 如果API返回的parameters是固定结构的嵌套对象,建议把它定义成Pydantic子模型,而不是用dict类型,比如:
      class ParametersModel(BaseModel):
          param1: str
          param2: int
          # 其他参数字段...
      
      class NEFDataModel(BaseModel):
          parameters: ParametersModel
          # 其他字段...
      

    这样能更精准地匹配数据结构,避免类型错误。

内容的提问来源于stack exchange,提问作者Zainab Younus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:57:46