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

如何用Pydantic 2.6.4生成含无默认非必填字段的JSON Schema?

解决Pydantic 2生成无默认值非必填字段的JSON Schema问题

要实现你需要的JSON Schema(字段无默认值、非必填、仅为string类型),可以使用Pydantic 2的Annotated结合Field显式标记字段为非必填,同时不使用Optional(避免生成null类型选项)。

正确的Pydantic模型代码

from pydantic import BaseModel, Field
from typing import Annotated

class Cell(BaseModel):
    name: str
    type: str
    organism: Annotated[str, Field(required=False)]

生成的JSON Schema

这段代码会生成完全符合你需求的Schema:

{
  "title": "Cell",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    },
    "type": {
      "type": "string",
      "title": "Type"
    },
    "organism": {
      "type": "string",
      "title": "Organism"
    }
  },
  "required": ["name", "type"]
}

原理说明

  • 显式标记非必填:通过Field(required=False)告诉Pydantic该字段不需要强制填写,因此不会出现在Schema的required列表中。
  • 保持纯类型定义:不使用Optional,避免生成包含null的anyOf类型配置,确保Schema中字段仅为string类型。
  • 不设置默认值:不在字段后赋值(比如= None),这样生成的Schema不会包含default属性,符合你对“无默认值”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:08:24