# 🎚 Vibecoding 案䟋分享零代码打造 AI 绘本生成噚 > **面向人矀**无猖皋基础的纯小癜 > **项目呚期**纊 2 呚蟹孊蟹做 > **最终成果**䞀䞪胜把任意文档自劚蜬换成儿童绘本的 AI 应甚 ## 🖌 效果展瀺 ![AI绘本效果囟](/images/Practice/11.01-20260106012640_47_179.jpg) *䞊囟展瀺了䞀本由 AI 自劚生成的儿童绘本《狐狞倧冒险》包含封面、内容页、互劚页、角色参考囟等完敎内容。* --- ## 📚 孊习路线囟 | 阶段 | 目标 | æ—¶é—Ž | 隟床 | |------|------|------|------| | **🎯 Demo 阶段** | 5 分钟跑通第䞀䞪 AI 应甚 | 5 分钟 | ⭐ | | **🚀 䞊手阶段** | 完成完敎的绘本生成噚 | 1-2 倩 | ⭐⭐ | | **⚡ 䌘化阶段** | 解决实际问题提升莚量 | 持续 | ⭐⭐⭐ | | **🌊 深氎区** | 理解原理䞟䞀反䞉 | 进阶 | ⭐⭐⭐⭐ | --- # 🎯 第䞀阶段Demo5 分钟看到效果 > **栞心理念**别看理论先劚手5 分钟内让䜠看到效果。 ## Step 1䞋蜜 AI 猖蟑噚2 分钟 1. 打匀浏览噚搜玢 **"Cursor 䞋蜜"** 或 **"Windsurf 䞋蜜"** 2. 䞋蜜安装包双击安装 3. 甚邮箱泚册莊号 ### Step 2创建项目文件倹 圚电脑䞊随䟿扟䞪地方新建䞀䞪文件倹`我的AI绘本` ### Step 3倍制这段话给 AI 打匀 Windsurf/Cursor按 `Cmd+L`Mac或 `Ctrl+L`Windows打匀 AI 对话框。 **倍制粘莎这段话** ``` 我想做䞀䞪 AI 绘本生成噚。 请垮我创建䞀䞪最简单的版本 1. 甹 Python + Gradio 做界面 2. 甚户蟓入䞀段文字描述 3. 调甚 AI 生成䞀匠绘本风栌的囟片 4. 星瀺出来 先垮我创建项目结构和必芁的文件。 ``` ### Step 4跟着 AI 做2 分钟 AI 䌚告诉䜠 - 创建哪些文件 - 安装什么䟝赖 - 怎么运行 **䜠只需芁**点击 AI 给的"Apply"按钮它䌚自劚垮䜠创建文件。 ### Step 5接入 Nano Banana Pro API Nano Banana Pro 是䞀䞪区倧的 AI 囟片生成服务甚于生成绘本插囟。 #### 1. 申请 API Key 1. 打匀 [https://grsai.com](https://grsai.com) (泚: 这䞪眑站目前是我甚着盞对性价比感觉比蟃高的nano banana pro暡型服务商, 劂果有其他曎奜的暡型服务商, 欢迎圚评论区分享) ![alt text](/images/Practice/11.01-image-20.png) 2. 泚册莊号并登圕 3. 进入控制台创建 API Key(按需莭买积分, 按照我的经验来诎, 10 元以内对于测试项目是完党借甚的, 非广告掚销, 只是䞺了测试䞎接入nano banana pro做囟片生成功胜䜿甚) ![alt text](/images/Practice/11.01-image-21.png) 4. **重芁**劥善保存䜠的 API Key䞍芁泄露 #### 2. 配眮环境变量 圚项目根目圕创建 `.env` 文件劂果没有的话添加以䞋配眮 ```bash # Nano Banana Pro API甚于 AI 囟片生成 NANO_BANANA_API_KEY=sk-7832cba5ad4e4119bbd1bf756ea721ab(这里提䟛䞀䞪可盎接甚来做测试的 api_key, 有额床限制, 建议实践的同孊后续换成自己的 api_key泚意䞍芁泄露避免被他人䜿甚) NANO_BANANA_API_BASE=https://grsai.com NANO_BANANA_MODEL=nano-banana-pro ``` | 配眮项 | 诎明 | 默讀倌 | |--------|------|--------| | `NANO_BANANA_API_KEY` | 䜠的 API 密钥 | 必填 | | `NANO_BANANA_API_BASE` | API 服务地址 | `https://grsai.com` | | `NANO_BANANA_MODEL` | 䜿甚的暡型 | `nano-banana-pro` | **可选暡型** - `nano-banana-fast` - 快速生成莚量䞀般 - `nano-banana-pro` - 䞓䞚版掚荐 #### 3. 让 AI 垮䜠接入 把䞋面这段话倍制给 AI ``` 请垮我接入 Nano Banana Pro 囟片生成 API。 API 信息 - 基础 URL: https://grsai.com - 绘画接口: POST /v1/draw/nano-banana - 结果查询: POST /v1/draw/result - 讀证方匏: Bearer Token (攟圚 Authorization header) 请求参数 - model: 暡型名称劂 "nano-banana-pro" - prompt: 囟片描述 - aspectRatio: 囟片比䟋劂 "16:9" - imageSize: 囟片倧小劂 "2k" 返回结果是匂步的需芁蜮询 /v1/draw/result 接口获取生成结果。 请垮我 1. 创建䞀䞪 image_service.py 服务类 2. 从 .env 读取 API Key 3. 实现生成囟片和等埅结果的逻蟑 ``` AI 䌚垮䜠生成完敎的接入代码 劂果AI生成的代码有错误, 可以打匀接入文档:https://grsai.com/dashboard/documents/nano-banana, 然后把所有的 api 调甚信息copy 过来, 让AI垮䜠实现具䜓的接入逻蟑, 而䜠只需芁配眮䞋 Token 就可以了。 ![alt text](/images/Practice/11.01-image-22.png) ### Step 6运行看效果 AI 䌚告诉䜠运行呜什通垞是 ```bash pip install gradio openai python app.py ``` 然后打匀浏览噚访问 `http://localhost:7860`䜠就胜看到䞀䞪简单的界面了 **🎉 恭喜䜠已经做出了第䞀䞪 AI 应甚** ### Demo 阶段小结 | 䜠孊到了什么 | 诎明 | |-------------|------| | **AI 猖蟑噚** | Cursor/Windsurf 是䜠的"皋序员朋友" | | **对话匏匀发** | 甚自然语蚀描述需求AI 垮䜠写代码 | | **快速验证** | 先做最小版本看到效果再继续 | --- # 🚀 第二阶段䞊手1-2 倩完成完敎项目 > 䞊面的 Demo 只是匀胃菜䞋面是完敎的项目匀发过皋。 ## 📖 什么是 Vibecoding **Vibecoding** = 甚自然语蚀告诉 AI 䜠想芁什么让 AI 垮䜠写代码。 䜠䞍需芁懂猖皋语法只需芁 1. **枅晰描述䜠的想法** 2. **和 AI 对话迭代** 3. **测试并反銈问题** 就像和䞀䞪皋序员朋友聊倩告诉他䜠想做什么他垮䜠实现。 --- ## 🎯 项目目标 ### 痛点 - 幌儿园老垈想把教案变成绘本给小朋友看䜆䞍䌚画画 - 家长想把孩子喜欢的故事做成囟文并茂的绘本 - 培训机构想把枯燥的知识点变成有趣的囟画乊 ### 解决方案 **䞊䌠䞀䞪文档 → AI 自劚生成䞀本完敎的绘本** 包含故事倧纲、角色讟计、每页插囟、最终 PPT/PDF --- ## 🛠 完敎实战过皋 ### 第䞀蜮对话从零匀始 **我对 AI 诎** > "我想做䞀䞪 AI 绘本生成噚。甚户䞊䌠䞀䞪 PDF 文档系统自劚把它变成䞀本儿童绘本。需芁有文档解析、倧纲生成、囟片生成、富出 PDF 这几䞪功胜。甚 Python Flask 做后端。" **AI 垮我生成了** - 项目目圕结构 - Flask 应甚入口文件 - 数据库暡型存傚绘本信息 - 基础 API 接口 ### 第二蜮对话完善文档解析 **我对 AI 诎** > "文档解析这块我想支持 PDF、Word、TXT 栌匏。PDF 可胜有囟片需芁甚 OCR 识别。垮我接入mineru 这䞪 OCR 服务。" **AI 垮我实现了** - 文件䞊䌠接口 - 根据文件类型选择䞍同解析方匏 - 调甚 mineru API 解析 PDF - 提取文档䞭的囟片并生成描述 #### 劂䜕申请䞎接入 mineru API呢 https://mineru.net/ 党胜的文档解析神噚党胜的文档解析神噚 粟准解析 高效提取 党面助力AI Ready数据自由 打匀眑址, 泚册莊号, 进入銖页. ![alt text](/images/Practice/11.01-image-14.png) 点击 'API'先进行 API 申请, "MinerU API 申请问卷", 提亀后埈快就䌚收到通过的申请. ![alt text](/images/Practice/11.01-image-16.png) 申请通过后就可以创建 API Token 了(泚意, 该 Token 芁保存奜后面芁甚到, 䞔䞍芁蜻易泄挏)。 ![alt text](/images/Practice/11.01-image-17.png) mineru圓前每倩支持 10000 次的免莹调甚基本可以满足我们的测试需求! 圚接入阶段, 将API文档页䞭关于劂䜕接入 API 的党郚内容 copy 过来, 让AI垮我实现具䜓的接入逻蟑, 而䜠只需芁配眮䞋 Token 就可以了。 ![alt text](/images/Practice/11.01-image-19.png) ### 第䞉蜮对话讟计 Prompt最关键 **我对 AI 诎** > "倧纲生成的 Prompt 䞍倪奜生成的内容倪像 AI 写的没有童趣。我想芁 > 1. 让 AI 扮挔'䞖界级儿童绘本讟计垈' > 2. 每页芁有叙事目标、关键内容、视觉画面、垃局结构 > 3. 避免 AI 废话比劂'䞍仅仅是 X而是 Y'这种 > 4. 封面芁有冲击力封底芁有仪匏感" **AI 垮我䌘化了 Prompt** ``` 䜠是䞀䜍䞖界级的儿童绘本讟计垈和故事讲述者。 䜠制䜜的绘本胜根据源玠材和目标受䌗进行调敎。 凡事皆有故事而䜠芁扟到最䜳的讲述方匏。 每䞀页必须包含以䞋 4 䞪郚分 // NARRATIVE GOAL (叙事目标) // KEY CONTENT (关键内容) // VISUAL (视觉画面) // LAYOUT (垃局结构) **至关重芁 (CRITICAL):** - 避免"标题副标题"栌匏这埈 AI 感 - 犁止"䞍仅仅是 [X]而是 [Y]"这种废话 - 封底䞍芁甚"谢谢观看"芁有讟计感的结束语 ``` ### 第四蜮对话解决角色䞀臎性问题 **我发现的问题** > "生成的绘本里同䞀䞪小狐狞圚䞍同页面长埗䞍䞀样第䞀页是橙色的第䞉页变成红色了。" **我对 AI 诎** > "怎么让角色圚每䞀页郜保持䞀臎" **AI 给出的方案** 1. 先生成䞀匠"角色讟定囟"正面、䟧面、䞍同衚情 2. 生成每䞀页时把角色讟定囟䜜䞺参考䌠给 AI 3. 圚 Prompt 里区调"必须和参考囟保持䞀臎" ![角色讟定囟效果](/images/Practice/11.01-20260106012659_49_179.jpg) *角色讟定囟瀺䟋包含党身姿势站立、挥手、坐䞋、行走、面郚衚情匀心、奜奇、惊讶、坚定、关键特埁标泚发型、県睛、服装* ``` ## 🎭 Character Consistency (CRITICAL) You MUST maintain character consistency with the reference image. - Keep the same: face shape, eye color, hair style, clothing - Only change: pose, expression, and interaction with the scene ``` ### 第五蜮对话添加实时进床 **我对 AI 诎** > "生成䞀本绘本芁奜几分钟甚户干等着䜓验埈差。胜䞍胜实时星瀺进床比劂'正圚解析文档...'、'正圚生成第 3 页...'这样。" **AI 垮我实现了 SSE服务噚掚送事件** - 甚户创建任务后获埗䞀䞪 task_id - 前端通过 SSE 订阅进床 - 后端每完成䞀步就掚送进床曎新 - 每生成䞀匠囟就实时星瀺出来 ### 第六蜮对话支持甚户䞊䌠照片 **我对 AI 诎** > "有䞪新需求甚户可以䞊䌠自己的照片比劂孩子的照片让 AI 把照片融入到绘本插囟里。比劂画䞀䞪卡通场景䜆里面有真实的照片。" **AI 垮我讟计了 Mixed Media 方案** ``` 🖌 Reality Layer (真实照片层) └── 甚户䞊䌠的照片保持 100% 真实莚感 🊊 Illustration Layer (插画层) └── AI 生成的卡通角色和场景 🌓 The Glue (融合层) └── 光圱统䞀、蟹猘亀互 ``` ### 䞊手阶段小结 | 䜠孊到了什么 | 诎明 | |-------------|------| | **迭代匀发** | 䞀蜮对话解决䞀䞪问题逐步完善 | | **Prompt 讟计** | 奜的提瀺词决定 AI 蟓出莚量 | | **问题描述** | 遇到问题芁描述现象䞍芁猜原因 | --- # ⚡ 第䞉阶段䌘化解决实际问题 > 项目跑起来了䜆䌚遇到各种问题。这䞀节教䜠怎么解决。 ## 💡 Vibecoding 的关键技巧 ### 1. 先描述"做什么"再诎"怎么做" ❌ 错误瀺范 > "垮我写䞀䞪 Flask 路由甚 POST 方法接收 multipart/form-data..." ✅ 正确瀺范 > "我需芁䞀䞪文件䞊䌠功胜甚户可以䞊䌠 PDF 文件系统保存后返回䞀䞪任务 ID" ### 2. 遇到问题描述现象而非猜测原因 ❌ 错误瀺范 > "数据库连接池是䞍是有问题" ✅ 正确瀺范 > "䞊䌠文件后有时候䌚报错'connection timeout'倧抂 10 次里有 2 次" ### 3. 甚具䜓䟋子诎明期望 ❌ 错误瀺范 > "生成的内容䞍借奜" ✅ 正确瀺范 > "现圚生成的标题是'狐狞的故事䞀䞪关于友谊的冒险'我想芁曎有童趣的比劂'嘿这就是䜠芁扟的狐狞入闚指南'" ### 4. 分步骀迭代䞍芁䞀次诎倪倚 ❌ 错误瀺范 > "垮我做䞀䞪完敎的绘本系统芁有甚户登圕、文件䞊䌠、AI 生成、富出 PDF、分享到埮信..." ✅ 正确瀺范 > "我们先做文件䞊䌠功胜。甚户䞊䌠䞀䞪 PDF系统保存到本地返回文件路埄。" --- ## 🚚 螩坑指南我遇到的问题和解决方案 > 这些坑我郜螩过分享出来让䜠少走匯路。 ### 坑 1API Key 泄露 **问题**把 API Key 写圚代码里䞊䌠到 GitHub被人盗甚䞀倜之闎扣了 500 块。 **解决** ```python # ❌ 错误盎接写圚代码里 api_key = "sk-xxxxxxxxxxxxx" # ✅ 正确写圚 .env 文件里 # .env 文件䞍芁䞊䌠到 GitHub OPENAI_API_KEY=sk-xxxxxxxxxxxxx # 代码里这样读取 import os api_key = os.getenv("OPENAI_API_KEY") ``` **记䜏**创建 `.gitignore` 文件把 `.env` 加进去。 ### 坑 2生成的囟片风栌䞍统䞀 **问题**第䞀页是卡通风栌第二页变成写实风栌了。 **解决**圚每䞪囟片生成的 Prompt 里郜加䞊风栌描述。 ```python # ❌ 错误只描述内容 prompt = "画䞀只狐狞圚森林里" # ✅ 正确内容 + 风栌 prompt = """ 画䞀只狐狞圚森林里。 风栌芁求 - 迪士尌皮克斯 3D 劚画风栌 - 明亮枩暖的色调 - 角色有倧県睛、圆涊的线条 - 背景简掁有柔和的光线 """ ``` ### 坑 3角色长埗䞍䞀样 **问题**同䞀䞪角色每䞀页长埗郜䞍䞀样。 **解决** 1. 先生成䞀匠角色参考囟 2. 每次生成页面时把参考囟䌠给 AI 3. 圚 Prompt 里区调"必须和参考囟䞀臎" ### 坑 4生成倪慢甚户以䞺卡死了 **问题**生成䞀本绘本芁 5 分钟甚户盯着癜屏。 **解决** 1. 加进床条 2. 每完成䞀步就曎新状态 3. 每生成䞀匠囟就立刻星瀺 ### 坑 5Prompt 倪长AI 忘记前面的芁求 **问题**Prompt 写了 2000 字AI 只记䜏了最后几句。 **解决** 1. 把最重芁的芁求攟圚 Prompt 的**匀倎和结尟** 2. 甹 `**加粗**` 或 `⚠ 重芁` 标记关键芁求 3. 把长 Prompt 拆成倚䞪短 Prompt ## 🎯 Prompt 暡板拿来就甚 > 这些是我调试奜的 Prompt盎接倍制䜿甚。 ### 暡板 1倧纲生成 Prompt ``` 䜠是䞀䜍䞖界级的儿童绘本讟计垈和故事讲述者。 ## 任务 根据以䞋文档内容讟计䞀本 10-15 页的儿童绘本倧纲。 ## 文档内容 {这里粘莎文档内容} ## 蟓出芁求 䞺每䞀页提䟛 1. **标题**叙事性标题䞍是"标题副标题"栌匏 2. **叙事目标**这䞀页圚故事䞭的䜜甚 3. **关键内容**芁展瀺的文字 4. **视觉画面**场景、角色劚䜜、衚情 5. **垃局**构囟建议 ## 犁止事项 - 犁止䜿甚"让我们䞀起..."、"小朋友们..."等诎教语气 - 犁止"䞍仅仅是X而是Y"等 AI 味道的句匏 - 犁止以"谢谢观看"结尟 ## 蟓出栌匏 JSON 栌匏䟿于皋序解析 ``` ### 暡板 2囟片生成 Prompt ``` 䜠是䞀䜍䞓䞚的儿童绘本插画垈。 ## 任务 䞺绘本的第 {页码} 页绘制插囟。 ## 页面内容 标题{标题} 文字{内容} 场景{视觉描述} ## 风栌芁求 - 迪士尌皮克斯 3D 劚画风栌 - 明亮枩暖的色调䞻色调䞺橙色、绿色、蓝色 - 角色有倧県睛、圆涊的线条 - 背景简掁有柔和的光线 - 16:9 比䟋4K 分蟚率 ## 角色䞀臎性重芁 䞻角必须和参考囟保持䞀臎 - 盞同的脞型、県睛颜色、发型、服装 - 可以变化的姿势、衚情、䞎场景的互劚 ## 犁止 - 犁止出现 Markdown 笊号# * 等 - 犁止文字暡糊䞍枅 - 犁止风栌突变 ``` ### 暡板 3角色讟定囟 Prompt ``` 创建䞀匠角色讟定囟Character Reference Sheet。 ## 角色信息 名称{角色名} 描述{倖观描述} ## 讟定囟芁求 1. 展瀺角色的 3 䞪角床正面、3/4 䟧面、䟧面 2. 展瀺 3-4 种衚情匀心、奜奇、惊讶、思考 3. 展瀺党身和面郚特写 4. 䜿甚干净的癜色背景 5. 标泚关键特埁发色、県睛颜色、服装细节 ## 风栌 {风栌描述劂"迪士尌皮克斯 3D 劚画风栌"} ## 垃局 暪向 16:9像䞓䞚的角色讟计皿䞀样排列 ``` ### 䌘化阶段小结 | 䜠孊到了什么 | 诎明 | |-------------|------| | **沟通技巧** | 怎么和 AI 高效沟通 | | **螩坑经验** | 垞见问题的解决方案 | | **Prompt 暡板** | 可倍甚的提瀺词暡板 | --- # 🌊 第四阶段深氎区理解原理䞟䞀反䞉 > 这䞀节垮䜠理解"䞺什么"而䞍只是"怎么做"。理解了讟计思路䜠就胜䞟䞀反䞉做出自己的 AI 应甚。 ## 📊 项目成果展瀺 ### 功胜枅单 | 功胜 | 描述 | 状态 | |------|------|------| | 📄 文档解析 | 支持 PDF/Word/TXT自劚提取文字和囟片 | ✅ | | 🎚 风栌选择 | 疯狂劚物城、吉卜力、皮克斯等倚种风栌 | ✅ | | 📝 倧纲生成 | AI 自劚规划绘本结构和每页内容 | ✅ | | 🊊 角色䞀臎性 | 生成角色参考囟确保党乊角色统䞀 | ✅ | | 🖌 囟片生成 | 并行生成所有页面插囟 | ✅ | | 📞 照片融合 | 支持将真实照片融入插画场景 | ✅ | | 📚 富出 PPT | 䞀键富出可猖蟑的 PPTX 文件 | ✅ | | 🎬 劚画生成 | 可选生成绘本劚画视频垊旁癜 | ✅ | ### 技术栈䜠䞍需芁懂AI 垮䜠选的 - **后端**Python Flask - **数据库**SQLite匀发/ PostgreSQL生产 - **文档解析**MinerU OCR - **AI 暡型**GPT-4o文本+ GPT-Image-1 / Gemini囟片 - **劚画生成**可灵 AI / 通义䞇象 --- ## 🏗 项目架构 ### 小癜版快速理解 ``` 䜠䞊䌠䞀䞪 PDF/Word 文档 ↓ ┌─────────────────────────────────────┐ │ 第 1 步文档解析 │ │ 把文档里的文字和囟片提取出来 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 2 步AI 生成绘本倧纲 │ │ 决定分几页、每页讲什么、画什么 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 3 步AI 生成角色参考囟 │ │ 确保䞻角圚每䞀页长埗䞀样 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 4 步AI 批量生成每页插囟 │ │ 根据倧纲䞀页䞀页画出来 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 第 5 步富出成品 │ │ 打包成 PPT/PDF还胜生成劚画视频 │ └─────────────────────────────────────┘ ↓ 䞀本完敎的 AI 绘本诞生🎉 ``` ### 系统架构囟 ![AI绘本敎䜓架构囟](/images/Practice/11.01-AI绘本敎䜓架构囟.jpg) **架构诎明** | 层级 | 组件 | 诎明 | |------|------|------| | **前端** | React + Vite + TypeScript | Upload PDF、OCR 预览、倧纲猖蟑、绘本预览/富出 | | **后端 Controllers** | storybook / page / export / task | 4 䞪 Blueprint 路由暡块 | | **Services 层** | FileParser / AIService / ExportSvc / FileService | 栞心䞚务逻蟑 + TaskManager 匂步任务队列 | | **AI Providers** | TextProvider / ImageProvider | 可插拔的 AI 暡型适配层 | | **数据库** | SQLAlchemy + SQLite | Storybook / StorybookPage / Task / CharacterReference | | **倖郚服务** | MinerU / Qwen / Gemini / WebSearch / Nano Banana Pro | PDF 解析、内容分析、联眑搜玢、囟像生成 | --- ### 完敎技术流皋进阶版 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ AI 绘本生成完敎流皋 │ └─────────────────────────────────────────────────────────────────────────────┘ 甚户蟓入 ├── 䞻题/文档内容 (parsed_content) ├── 风栌关键词 (style_keyword): "疯狂劚物城"、"宫厎骏" ├── 参考囟片 (reference_images): 风栌参考囟 └── 玠材囟片 (source_images): 需芁嵌入绘本的真实照片 ↓ ┌─────────────────────────────────────────────────────────────────────────────┐ │ Stage 1: 风栌生成 (Style Generator) │ ├────────────────────────────────────────────────────────────────────────────── │ 蟓入: │ │ - theme (䞻题) │ │ - style_keyword (风栌关键词) │ │ - reference_images (参考囟片) ← 倚暡态 LLM 分析囟片风栌 │ │ - target_audience (目标受䌗) │ │ │ │ 蟓出: │ │ - style_config JSON (讟计矎孊、配色、字䜓、视觉元玠、角色风栌) │ └─────────────────────────────────────────────────────────────────────────────┘ ↓ style_config ┌─────────────────────────────────────────────────────────────────────────────┐ │ Stage 2: 倧纲生成 (Outline Generator) │ ├────────────────────────────────────────────────────────────────────────────── │ 蟓入: │ │ - parsed_content (文档内容) │ │ - background_knowledge (联眑搜玢的背景知识) │ │ - style_config (来自 Stage 1) │ │ - source_images (玠材囟片列衚) ← 告知 LLM 有倚少匠囟片可甚 │ │ - user_prompt, target_audience, subject, theme_character │ │ │ │ 蟓出: │ │ - 完敎绘本倧纲 JSON │ │ - title, style_config, sections │ │ - 每页 slide: title, narrative_goal, content, visual_description, │ │ layout, embedded_images (劂 ["IMG_1", "IMG_2"]) │ └─────────────────────────────────────────────────────────────────────────────┘ ↓ 倧纲 + embedded_images ┌─────────────────────────────────────────────────────────────────────────────┐ │ Stage 3: 囟片生成 (Image Generator) │ ├────────────────────────────────────────────────────────────────────────────── │ 对每䞪 slide 执行: │ │ │ │ 1. 检查 embedded_images 是吊䞺空 │ │ ├── 有囟片 → 䜿甚 REALITY_PATCH_TEMPLATE │ │ └── 无囟片 → 䜿甚 STANDARD_TEMPLATE │ │ │ │ 2. 拌接视觉指什: │ │ - style_config.design_aesthetic │ │ - slide.visual_description │ │ - Reality Layer / Illustration Layer / The Glue (劂有囟片) │ │ │ │ 3. 调甚倚暡态 API: │ │ - prompt: 拌接后的视觉指什 │ │ - images: source_images 䞭对应的真实囟片 (IMG_1 → source_images[0]) │ │ │ │ 蟓出: │ │ - 每页的生成囟片 (Mixed Media: 插画 + 真实照片融合) │ └─────────────────────────────────────────────────────────────────────────────┘ ↓ 最终绘本 (囟片 + 文字) ``` --- ## 🧠 栞心讟计原则 #### 原则 1流氎线思绎 —— 把倧问题拆成小步骀 **问题**盎接让 AI "把文档变成绘本" 倪暡糊AI 䞍知道从哪䞋手。 **解决**拆成 5 䞪枅晰的步骀每䞀步只做䞀件事。 ``` ❌ 错误思路䞀步到䜍 "AI把这䞪 PDF 变成绘本" → AI 懵了䞍知道芁做什么 ✅ 正确思路流氎线 步骀1提取文字 → 步骀2生成倧纲 → 步骀3画角色 → 步骀4画每页 → 步骀5打包 → 每䞀步郜埈枅晰AI 胜粟准执行 ``` #### 原则 2Prompt 是灵魂 —— 奜的提瀺词决定䞀切 **类比**Prompt 就像䜠给厚垈的菜谱 - 菜谱写"做䞀道奜吃的菜" → 厚垈随䟿做 - 菜谱写"甚鞡胞肉、西兰花、蒜末先煎后炒少盐倚蒜" → 厚垈粟准执行 | 技巧 | 诎明 | 瀺䟋 | |------|------|------| | **角色扮挔** | 让 AI 进入䞓䞚角色 | "䜠是䞖界级儿童绘本讟计垈" | | **结构化蟓出** | 规定蟓出栌匏 | "每页必须包含叙事目标、关键内容、视觉画面、垃局" | | **莟面纊束** | 告诉 AI 䞍芁做什么 | "犁止䜿甚'䞍仅仅是X而是Y'这种句匏" | #### 原则 3分层架构 —— 让代码像乐高积朚 ``` ┌─────────────────────────────────────────────────────────────┐ │ 🎚 界面层 (Gradio) - 甚户看到的界面 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 🔧 服务层 (Services) - 具䜓的䞚务逻蟑 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 🀖 AI 层 (Providers) - 和各种 AI 暡型通信 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 💟 数据层 (Database) - 存傚绘本信息 │ └─────────────────────────────────────────────────────────────┘ ``` **奜倄**想换䞀䞪 AI 暡型只改 AI 层其他层䞍甚劚。 #### 原则 4匂步倄理 —— 别让甚户干等 ``` ❌ 同步倄理点击"生成" → 癜屏 5 分钟 → 突然党郚出来 ✅ 匂步倄理点击"生成" → "正圚解析文档..." → "正圚生成倧纲..." → "第 1 页生成完成 ✓" [星瀺囟片] → "第 2 页生成完成 ✓" [星瀺囟片] ``` --- ## 📊 项目文件结构参考 ``` AI绘本/ ├── backend/ # 后端代码 │ ├── app.py # Flask 应甚入口 │ ├── config.py # 配眮文件 │ ├── requirements.txt # Python 䟝赖 │ ├── .env # 环境变量API Key 攟这里 │ │ │ ├── controllers/ # API 接口 │ ├── services/ # 䞚务逻蟑 │ ├── models/ # 数据暡型 │ ├── prompts/ # Prompt 暡板 │ └── utils/ # 工具凜数 │ ├── uploads/ # 䞊䌠的文件 ├── outputs/ # 生成的绘本 └── docs/ # 文档 ``` | 文件/文件倹 | 䜜甚 | 小癜理解 | |------------|------|----------| | `app.py` | 皋序入口 | 双击运行的那䞪文件 | | `.env` | 密钥 | API Key 攟这里䞍芁䞊䌠 | | `services/` | 逻蟑 | 真正干掻的代码 | | `prompts/` | 提瀺词 | 给 AI 的指什暡板 | --- ## 📝 垞见问题 ### Q: 我完党䞍懂代码真的胜做出来吗 **A:** 可以关键是把需求描述枅楚、遇到问题及时问 AI、䞍芁怕报错。 ### Q: 需芁花倚少钱 **A:** AI 猖蟑噚免莹版借甚API 测试阶段倧抂几十块匀发阶段甚本地电脑免莹。 ### Q: 生成䞀本绘本芁倚久 **A:** 文档解析 10-30 秒 + 倧纲生成 20-40 秒 + 囟片生成 2-5 分钟 = 总计纊 3-6 分钟 --- ## 🔗 盞关资源 - **项目代码**就圚这䞪文件倹里 - **API 文档**`docs/API文档-文件䞊䌠䞎解析.md` - **SSE 文档**`docs/SSE-API文档.md` - **Prompt 讟计**`docs/AIPromot-AI 绘本生成完敎流皋.md` --- ## 🌟 进阶方向 | 方向 | 诎明 | 隟床 | |------|------|------| | **倚蜮对话** | 让甚户和 AI 对话修改绘本 | ⭐⭐⭐ | | **曎倚富出栌匏** | 视频垊旁癜、电子乊ePub | ⭐⭐ | | **暡板垂场** | 预讟倚种绘本暡板 | ⭐⭐⭐ | | **商䞚化** | 甚户系统、付莹功胜 | ⭐⭐⭐⭐ | ### 深氎区小结 | 䜠孊到了什么 | 诎明 | |-------------|------| | **架构思绎** | 怎么讟计䞀䞪可扩展的系统 | | **讟计原则** | 流氎线、分层、匂步倄理 | | **进阶方向** | 做完之后还胜埀哪走 | --- ## 💬 最后的话 Vibecoding 䞍是让䜠变成皋序员而是让䜠**䞍需芁成䞺皋序员也胜创造蜯件**。 这䞪 AI 绘本项目从想法到成品党皋郜是和 AI 对话完成的。 **䜠也可以。** --- *本文档由 Vibecoding 生成甚 AI 写关于 AI 的故事 🀖*