JSON Schema → Pydantic
Chuyển đổi JSON Schema sang code model Pydantic v2, trong trình duyệt của bạn. Dán schema, nhận về một class Python sẵn sàng để dán. Hữu ích cho workflow LLM với structured output.
Nhập dữ liệu ở trên để xem kết quả.
Công cụ này để làm gì?
JSON Schema và Pydantic là hai cách chính để mô tả một object có cấu trúc — JSON Schema là tiếng nói chung cho OpenAPI specs, LLM function-calling, và structured outputs; Pydantic là library validation dữ liệu de-facto của Python. Khá thường, bạn có cái này và cần cái kia. Công cụ này thực hiện chuyển đổi theo một chiều: dán JSON Schema, nhận class Pydantic có thể thả vào file Python.
Khi nào nên dùng
- LLM structured outputs.
response_formatcủa OpenAI và tool-use của Anthropic đều nhận JSON Schema. Sau khi thiết kế và test schema, bạn thường muốn một Pydantic model để validate và truy cập field trong Python. - Sinh client OpenAPI. Một spec OpenAPI cho bạn JSON Schema cho mỗi request/response body; đây là cách nhanh để có Pydantic model tương ứng mà không cần generator full.
- Migrate Schema → Python. Bạn kế thừa một hệ thống dùng JSON Schema để validate và muốn chuyển sang Pydantic. Dán từng schema, nhận class khởi điểm, tinh chỉnh.
- Scaffolding nhanh. Bạn phác thảo cấu trúc trong JSON trong notebook; biến nó thành model thật với một lần dán.
Công cụ này xử lý gì
type: objectvớiproperties+required— sinh class BaseModel lồng nhau.type: arrayvớiitems— sinhList[X].- Primitives:
string→str,integer→int,number→float,boolean→bool,null→None. formattrên string:date-time→datetime,email→EmailStr,uri/url→HttpUrl,uuid→UUID.enum→Literal[...];const→Literal[X].oneOf/anyOf→Union[...]; biến null gập vàoOptional[...].- Mảng
type: ["string", "null"]→Optional[str]. description→Field(..., description=...).default→ default của field.minimum/maximum/minLength/maxLength→Field(ge=..., le=..., min_length=..., max_length=...).- Tên field không phải identifier Python hợp lệ được sanitize, và
alias=được thêm để giữ tên gốc trên wire. Model được cấu hình vớipopulate_by_name=True. - Object lồng nhau trở thành class lồng nhau, đặt tên theo field nếu không có
title. $defs/definitionsđược phát ra như class riêng.
Công cụ này chưa xử lý
$refngoài (URL refs). Refs cục bộ đến$defshoạt động.patternProperties. Phát comment TODO.additionalPropertiesvới schema. Phát comment TODO.- Tổ hợp
allOfmulti-base.allOfsingle-element được unwrap. - Validator tùy chỉnh dựa trên
pattern— phát field nhưng bỏ qua regex. Thêm Pydantic@field_validatorsau khi dán nếu bạn cần.
Lưu ý thường gặp
- Pydantic v2 vs v1. Output mặc định là v2 (hiện tại). Chuyển qua dropdown nếu bạn ở codebase v1.
- Output là điểm khởi đầu, không phải lời cuối. Review nó. Đặc biệt với union phức tạp, kiểu đệ quy, và bất cứ thứ gì với rule validation tùy chỉnh.
- Tên quan trọng. Field "Root class name" kiểm soát tên class top-level. Sub-classes được đặt tên theo property
titlenếu có, ngược lại theo field chứa chúng. - Required vs Optional ở v2. Field required không có default dùng
.... Field optional mặc địnhNonevà được bọc trongOptional[T].