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

如何修改Pydantic模型字段描述?调用model_json_schema未生效

解决Pydantic模型字段描述更新后JSON Schema不生效的问题

直接修改model_fields中字段的description后,调用model_json_schema()返回的还是原始描述,这是因为Pydantic会缓存模型的JSON Schema,修改字段属性不会自动更新这个缓存。

解决步骤

在更新字段描述后,清除模型的schema缓存,让model_json_schema()重新生成schema时读取最新的字段属性:

修改后的代码

from pydantic import BaseModel, Field

class A(BaseModel):
    @classmethod
    def update_description(cls, field_name: str, new_description: str):
        if field_name in cls.model_fields:
            cls.model_fields[field_name].description = new_description
            # 清除schema缓存,触发重新生成
            if hasattr(cls, '__pydantic_schema_cache__'):
                cls.__pydantic_schema_cache__.clear()
        else:
            raise ValueError(f"Field '{field_name}' does not exist in {cls.__name__}")

class B(A):
    J: str = Field(description="MEATBALL")

B.update_description('J', 'Updated')

b_instance = B(J="A")
print(b_instance.model_json_schema()) 

原理说明

Pydantic在首次调用model_json_schema()时,会将生成的Schema结果缓存到模型类的__pydantic_schema_cache__属性中。后续调用该方法时,直接返回缓存值,不会重新读取字段的最新属性。清除缓存后,再次调用model_json_schema()会重新遍历字段属性生成Schema,此时就能拿到更新后的描述。

内容的提问来源于stack exchange,提问作者Zachary Fontaine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:47:35