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

如何将Pydantic BaseModel解包为kwargs且保留嵌套模型实例

解决方案

你可以通过Pydantic自带的导出参数控制序列化深度,无需自行实现转换逻辑,是当前最简洁的实现方案。

版本适配说明

Pydantic 1.x 版本

使用.dict()方法的max_depth参数,设置为1即可只展开当前BaseModel的第一层字段,所有嵌套的BaseModel实例都会保留原类型,不会被递归转换为字典:

def run_routing_from_job(job):
    return run_routing(
        job.inputs.input_file,
        # 仅展开config的第一层字段,嵌套模型保留实例
        **job.inputs.config.dict(max_depth=1)
    )

你还可以搭配其他常用参数灵活调整导出结果:

  • 增加exclude_none=True:排除值为None的字段,避免传无效参数
  • 增加exclude_defaults=True:排除值为默认值的字段,减少冗余参数
  • 增加by_alias=True:使用字段定义的alias别名作为字典的键,适配参数名不匹配的场景

Pydantic 2.x 版本

Pydantic 2.x废弃了旧的.dict()方法,替换为model_dump()方法,max_depth参数的使用逻辑完全一致:

def run_routing_from_job(job):
    return run_routing(
        job.inputs.input_file,
        **job.inputs.config.model_dump(max_depth=1)
    )

自定义场景扩展

如果你需要对特定字段做单独的序列化规则(比如部分嵌套模型要展开、部分要保留实例),可以给对应字段添加serializer自定义序列化逻辑,无需修改全局导出配置。

内容的提问来源于stack exchange,提问作者Tom McLean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:08