【Python LLM 小说自动化生成实战】2|搭建Pydantic Schema数据模型
一、Pydantic Schema介绍Python 里 Pydantic 是专门做 Schema 建模的工具写类字段类型它就能自动帮你校验数据、转换类型后端和AI项目基本都这么写。所谓Schema通俗解释就是规定数据长什么样——有哪些字段、什么类型、哪些必填、哪些可选。我们即将要建的 src/schema.py就是用Pydantic定好小说数据的格式。之后程序读写数据都会按这个模板来校验省得字段乱、类型错。小编之前踩过full_summary缺失的坑、index和order字段名不匹配问题根源就是数据模型和 AI 输出规范没对齐Schema 就是解决这类问题的第一道防线。二、搭建 schema.py 数据模型文件① 新建文件目录在项目根目录创建src文件夹文件夹内新建schema.py空白文件。② 使用 Cline 插件自动生成代码打开 VS Code 侧边栏 Cline 插件输入如下指令精准指定文件路径与建模需求/src\schema.py 用pydantic建模这个小说系统的数据结构。要表达- 一本小说有标题、主题、全书概括以及若干章节- 每个章节有先后顺序、标题、本章要写的情节要点、一些可选的线索关键设计点章节还要能装正文. 流程是-规划阶段生成大纲(这时各章节为空)写作阶段在逐步把正文填进去最后整体交个导出。所以不要为“已经写完的章节”单独建一个类同一个章节模型正文字段从空到满就行可根据自己的要求修改指令③Cline 分步执行流程输入指令后切换到插件右下角Plan模式按下回车让 AI 生成开发计划仔细核对生成的规划内容确认完全贴合我们的建模需求无多余冗余设计规划无误后切换至Act执行模式AI 会自动生成完整 Python 代码通读生成的源码核对字段名、校验规则、默认值全部匹配需求确认无 bug 后点击Save写入 schema.py 文件。补充此处附上我本次生成完成、可直接粘贴使用小伙伴们也可以对照 AI 生成结果查漏补缺。from __future__ import annotations from pydantic import BaseModel, Field class Chapter(BaseModel): 小说中的一个章节。 order: int Field(..., ge1, description章节序号) title: str Field(..., min_length1, description章节标题) outline: str Field(..., descreption章节大纲) plot_points: list[str] Field( default_factorylist, description本章要写的情节要点, ) clues: list[str] Field( default_factorylist, description可选的线索写作阶段可逐步补充, ) body: str Field( default, description正文内容规划阶段可为空写作阶段逐步填充, ) class Novel(BaseModel): 一部小说的整体数据结构。 title: str Field(..., min_length1, description小说标题) theme: str Field(..., min_length1, description小说主题) full_summary: str Field(..., min_length1, description小说全文概括) chapters: list[Chapter] Field( default_factorylist, description小说章节列表, )三、代码完整友好解析3.1 头部导入语法逐句讲解from __future__ import annotations from pydantic import BaseModel, Fieldfrom __future__ import annotations兼容前置引用语法允许在Novel类里直接写list[Chapter]不用额外做类型延迟导入新手写结构化数据模型必加。BaseModelPydantic 所有数据模型的父类自带全套能力自动校验数据、对象一键转 JSON、JSON 一键转 Python 实例是整套 Schema 的基石。Field自定义字段约束工具用来设置必填标识、数值范围、默认值、字段说明文字精细化管控每一项数据规则。3.2 字段配置区分规则高频考点Field(...)代表必填字段创建模型实例时必须传入内容缺失直接抛出校验报错default字符串字段默认空文本适配章节正文初期空白的场景default_factorylist列表类型专用默认值千万别直接写 default[]会出现全局列表共享、数据错乱的经典 Python 坑用 default_factory 每次都会生成全新空列表。3.3 两大核心数据模型拆解① Chapter 单章节模型复用型设计字段划分1必填项order章节序号、title章节标题、outline章节大纲- 附加约束order 数值必须≥1杜绝 0、负数章节序号标题不能为空字符串2可选项- plot_points情节要点、clues故事线索默认空列表规划阶段可逐步补充- body章节正文默认空字符串完美适配项目流程 —— 生成大纲时留白逐章扩写后填充完整正文全程只用一套模型不用重复写两套类。② Novel 整本小说顶层模型全部核心基础字段均为必填小说标题 title、主题 theme、全书梗概 full_summary三项缺一不可可选字段chapters章节列表默认空集合内部存储多个 Chapter 对象。小提示模型内所有字段名称都可以根据自己的习惯自定义只要配套修改提示词、JSON 清洗逻辑即可灵活度很高。文末收尾 下集预告本节我们完成了项目核心数据模型的定义搭建起小说数据的标准模板从根源规避后续 LLM 输出 JSON 解析失败的问题。下一节预告【Python LLM 小说自动化生成实战】3项目.env 配置文件设计统一管理 API 密钥、模型参数、重试次数等全局变量。 本系列专栏合集传送门小白入门从零实战开发Python LLM小说自动化生成系统