完整
AI 项目零代码开发:Vibe Coding 实战教程大纲
本教程面向具有一定 AI 基础但缺乏编程经验的读者,旨在教授如何以 Vibe Coding 风格通过提示词驱动,借助 Cursor 编辑器、GitHub Copilot 等工具,从零开始开发完整 AI 项目cloud.google.com。Vibe Coding 是一种新兴的软件开发实践,用户只需用自然语言描述需求,AI 即可生成可执行的代码,从而大幅降低开发门槛ibm.comsimonwillison.net。本书将围绕这一核心理念展开,通过丰富的案例和循序渐进的指南,让读者在不手写代码的情况下完成真实的 AI 项目开发。我们将强调通过提示词引导AI编写代码,并辅以适当的测试、重构和部署方法,确保项目质量和可维护性simonwillison.net。读者将在实践中学会使用 Copilot、Cursor 等 AI 编程助手,以及命令行工具、自动化测试框架、API 封装和部署平台等,将创意快速转化为产品。全书包含一个贯穿始终的主线项目 —— 多模态创作 AI 工作站,我们会在各章节中逐步实现其功能,帮助读者将所学融会贯通。
第1章 绪论:Vibe Coding 革新软件开发
-
目标概述:介绍 Vibe Coding 概念及其由来,讨论 AI 驱动编程对软件开发的变革意义ibm.comcloud.google.com。读者将了解为什么“不用手写代码也能开发应用”成为可能,以及本书的教学宗旨。
-
核心概念:阐释 Andrej Karpathy 提出的 “Vibe Coding” 定义,即用自然语言描述意图,由 AI 转换为代码的开发模式ibm.com。对比“纯粹 Vibe Coding”(完全信任 AI 输出,用于快速原型)和“负责任的 AI 辅助开发”(将 AI 视为对话式助手,人工复核测试)两种实践模式cloud.google.com。强调本书采取后者,以确保代码质量和可持续维护。
-
Vibe Coding 优势:分析 Vibe Coding 如何降低编程门槛,让缺乏编码背景的人也能实现自己的想法simonwillison.net。引用案例说明其加速原型开发、增强创造力的威力,例如有无编程经验的用户借助 AI 快速构建应用的真实故事ibm.com。
-
挑战与展望:探讨 Vibe Coding 带来的挑战(如代码质量、调试难度、安全性等ibm.com)以及应对策略。展望 AI 编程工具的发展趋势,强调读者在学习中应保持的心态:既要充分利用 AI 提速增效,也需保持对代码的基本理解和责任心simonwillison.net。
-
本章内容:提示本书结构和学习路线图,介绍主线项目“多模态创作 AI 工作站”的背景和功能构想,激发读者兴趣。本章不涉及具体动手实践,但为后续章节奠定理念基础。
第2章 环境准备与工具安装
-
目标概述:指导读者搭建 Vibe Coding 开发环境,包括安装 Cursor AI 编码编辑器、配置 GitHub Copilot 插件、命令行接口等。完成本章后,读者将拥有一个可用于 AI 生成代码的基本开发环境docs.cursor.com。
-
安装 Cursor:手把手讲解 Cursor 编辑器的下载安装与初始配置过程。介绍 Cursor 的定位——“AI 驱动的代码编辑器”,支持自然语言描述需求并自动生成代码docs.cursor.com。演示如何登录 Cursor、导入或创建项目,并确保编辑器可以访问必要的 AI 模型 API。
-
配置 Copilot:介绍 GitHub Copilot 的作用和价值——“你的 AI 编程搭档”,能在编辑器中根据上下文即时补全代码learn.microsoft.com。说明 VS Code 等环境下安装 Copilot 扩展的步骤,以及如何将其与 Cursor 或其他IDE配合使用。通过实例展示 Copilot 根据注释生成函数的简单过程,加深读者直观认识。
-
插件与扩展:列出适合初学者的辅助插件和工具。例如:代码格式化工具、调试终端、Git 集成等,提高 AI 生成代码的可读性和可管理性。特别介绍 Cursor 社区推荐的一些插件(如代码审查、错误检查插件),以及如何在 Cursor 内启用/禁用这些扩展功能。
-
CLI 与环境变量:解释命令行界面(CLI)在AI项目开发中的作用,如运行生成的脚本、安装依赖库等。教授基本的命令行操作,并以一个简单示例(如用 cursor-cli 创建新文件或执行代码)演示 AI CLI 的用法。讨论环境变量配置及其在本书后续章节(如部署 API 密钥等)中的重要性。
-
术语解释:本章引入的关键术语包括IDE、插件、API Key、终端等,分别予以通俗解释,确保零编程背景的读者也能理解各要素的作用。
第3章 项目结构管理与版本控制
-
目标概述:本章聚焦如何规划和管理由 AI 生成的项目结构。读者将学会组织文件和模块、使用版本控制跟踪变化,以及在 Vibe Coding 开发中保持代码结构清晰可控的方法ibm.com。
-
AI 生成项目骨架:讲解如何通过提示词让 AI 生成项目基础框架,例如创建特定语言的标准目录结构、主要模块文件等。提供一个案例:用一句提示让 Cursor Agent 模式生成包含多文件的项目builder.io。讨论 AI 是如何决定文件组织的,以及用户如何引导它调整结构。
-
多文件协同:介绍 Cursor 等 AI IDE 支持多文件代码生成和同步更新的特性builder.io。例如Cursor的 Agent 模式无需手动指定上下文文件即可生成跨多个文件的代码builder.io。通过一个简单项目示例说明:用户让 AI 新增功能时,如何在不同文件间衔接,Cursor 如何提示新增或修改相应模块。
-
版本控制 (Git):强调在 AI 辅助编程中使用版本控制的重要性。教授 Git 的基本概念和工作流程,让读者学会初始化 Git 仓库、提交更改,以及查看 AI 生成代码的历史差异。鼓励将 AI 每次生成或修改的代码提交一次,从而“记录”AI的每步输出,方便日后回溯或撤销问题代码simonwillison.net。
-
协同与备份:探讨多人协作下的 Vibe Coding 流程,尽管读者主要个人学习,也需了解如何通过 GitHub 等进行代码托管与分享。提供示例场景:如果AI生成了错误代码,通过版本历史快速恢复之前的版本。说明在 AI 生成大量代码的情形下,良好的结构和版本管理可以降低 AI “幻觉”或错误导致失控的风险ibm.com。
-
术语解释:本章术语包括“仓库(Repository)”“提交(Commit)”“分支(Branch)”“差异(Diff)”等,配合示意图和类比解释,让非程序员读者理解版本控制的直观意义。
第4章 提示词工程入门
-
目标概述:深入讲解如何编写高质量的提示词来引导 AI 生成所需代码,这是 Vibe Coding 成功的关键。读者将学习提示词的基本构成、有效策略和常见误区,并通过简单练习掌握对 AI 输出的精细控制方法ibm.com。
-
提示词基础:首先介绍提示词工程的概念——“以正确方式向模型提问”。解析提示词的一般结构,包括上下文说明、具体任务要求、输出格式限定等要素ibm.com。例如,将用户需求表述为“用 Python 实现一个读取 CSV 文件的函数” vs “实现一个名为 read_csv 的 Python 函数,读取指定路径的 CSV 并返回列表”输出效果对比。强调明确、具体和有上下文的提示往往能获得更理想的代码ibm.com。
-
实例演练:提供多个示例提示及 AI 产出的代码,分析其优劣。案例1:过于简短的提示如“写一个聊天室机器人”导致的泛化代码,案例2:完善后的提示如“使用 Python 和 asyncio 编写一个支持多用户的命令行聊天室机器人,要求包含消息广播和用户加入离开提示”带来的更符合预期的代码。通过对比说明添加细节、约束的重要性。
-
迭代改进:引导读者体验提示-生成-反馈-再提示的循环过程cloud.google.com。例如,AI 首次生成的函数可能有错误,通过提示“请添加错误处理,当文件不存在时给出友好提示”让 AI 修正cloud.google.com。再如增加要求“代码需包含注释”,观察 AI 修改结果。让读者体会逐步 refine 提示来完善代码的工作流。
-
常用技巧:总结编写有效代码提示的一些技巧:如明确指定编程语言/框架、描述预期输入输出、给出部分伪代码或接口定义、要求遵循某种代码风格等。提醒读者避免提示中的歧义和暗示不良做法(例如不要直接复制错误信息而无说明地让 AI 猜测)。也介绍“不要一次要生成过长代码,可以模块化生成”的策略,防止模型超长输出中途出错。
-
提示词陷阱:列举AI常见误解或失败案例,让读者学会辨析。当 AI 输出不符合预期时,分析可能是提示不清或边界条件未描述导致,并示范如何重新措辞提示纠正结果。强调永远验证 AI 输出,不要盲信其正确性promptingguide.ai。
-
术语解释:“Prompt(提示词)”“Prompt Engineering(提示工程)”“Refine(迭代完善)”等概念,并区分提示词在不同上下文(如对话系统 vs 代码生成)中的差异。保证读者理解提示词就像给AI下指令,必须清晰严谨。
第5章 实战一:开发 CLI 聊天机器人
-
目标概述:开始第一个实战项目——构建一个命令行(CLI)聊天机器人。读者将在本章应用之前掌握的提示词技巧,通过 Cursor + Copilot 引导 AI 编写一个可在终端运行、与用户对话的聊天程序。项目涵盖基本的输入输出处理、对接现有聊天模型 API(如 OpenAI ChatGPT API)等,让读者体验从0到1完成一个功能性 AI 应用。
-
提示词结构:本章的提示词将详细描述 CLI 聊天机器人的需求,包括:编程语言(Python)、使用何种库或 API(如调用 OpenAI 的 API 进行对话),功能要求(连续对话、退出命令处理),以及代码组织形式(例如将主要逻辑放在 chatbot.py 中)。通过提供示例提示词片段,说明如何让 AI 明确实现这些要求。
-
流程图:给出聊天机器人的工作流程图,例如:用户在终端输入 -> 程序发送请求到聊天模型 API -> 获取回复并显示 -> 循环等待下一个输入。流程图帮助读者理解程序各部分的衔接关系,也为 AI 生成代码时提供逻辑参考。
-
可视化代码生成过程:本节通过截屏和解说展示用 Cursor 逐步生成代码的过程。例如:在 Cursor 中输入提示后,AI 首先生成 chatbot.py 的初版代码(展示截图),我们运行测试发现无退出机制 -> 用户在对话窗口对 AI 提示“添加退出命令,当用户输入exit时结束程序”,AI 更新代码(展示diff截图)builder.io。如此循环,直到主要功能实现。整个过程直观演示“对话式编程”的体验。
-
样例项目代码结构:列出最终生成的代码文件清单和结构(本例可能简单,一到两个文件):例如:
-
chatbot.py:主程序入口,处理用户输入和输出,对接聊天模型API;
-
config.py:存放API密钥等配置(如有)。
说明各文件的作用,展示部分关键代码片段并解释其功能。 -
生成结果截图:展示最终CLI聊天机器人的运行截图。例如终端界面上一问一答的对话,包含用户输入内容和机器人回复。若有彩色输出或特殊格式,也应截图体现,让读者直观看到成果。
-
测试点与失败案例:总结在开发过程中需重点测试的情形:如网络异常是否处理(API 请求失败怎么办),退出命令是否灵敏,是否会出现无限循环等。列举一个失败案例:开始忘记处理网络错误,AI 生成的代码在断网时抛异常 -> 后续我们通过提示要求添加try-except进行了修正cloud.google.comcloud.google.com。鼓励读者主动尝试异常场景,看程序反应,并思考改进方法。
-
术语解释:本章涉及“CLI(命令行界面)”“API 调用”“JSON 序列化/反序列化”等术语,一一予以解释。例如CLI相对图形界面的特点,API Key 在调用OpenAI服务时的重要性等,确保读者理解实现细节背后的概念。
第6章 实战二:构建提示词调优器
-
目标概述:本章开发一个提示词调优工具,帮助用户试验和改进 Prompt 的应用程序。通过此项目,读者将学会构建一个简单的交互界面,让用户输入原始提示词,程序自动调用 AI 并根据预设指标反馈效果,从而指导用户优化提示词。这个项目进一步培养读者分析 AI 输出质量的能力,并实践将 AI 嵌入辅助 AI 开发流程的理念。
-
提示词结构:提示 AI 生成代码时,我们将清晰描述调优器的需求:例如采用 Web 界面或简单 CLI 交互?需要支持输入一个Prompt和若干测试问题,让AI产生输出评分?本书选择实现一个CLI版本的 Prompt 调优器:用户输入一个待优化的Prompt,以及一系列测试输入,程序批量调用模型获取输出,并根据一些规则打分。提示词需涵盖:使用哪种语言/库(Python,可能用 openai 或 llama-api 调模型),实现步骤(读取用户提供的Prompt和测试集 -> 调用模型获取结果 -> 分析结果质量 -> 给出改进建议)。
-
流程图:绘制调优器工作原理图:用户提供原始提示 & 测试用例 -> 程序循环调用 LLM 获取各测试输出 -> 程序评估输出是否符合预期(例如查找是否回答了问题、是否格式正确)-> 汇总评价并生成改进建议(可能由规则或再次Prompt模型完成)。该流程图体现出嵌套调用 AI的结构,即我们的应用本身也在使用AI完成部分任务。
-
可视化代码生成过程:继续采用 Cursor 生成代码。分步骤展示:首先让 AI 生成基本框架 tuner.py,功能:读取文件/输入中的Prompt和测试数据 -> 输出占位。截图展示初始代码片段。然后通过对 AI 的多轮对话细化功能:提示“在代码中加入OpenAI API调用,根据提供的问题数组获取回答”“将回答与理想答案比对并计算分数”等,观察AI逐步补全实现逻辑的截图。记录一次典型的 AI 生成错误与后续修正:如AI忘记并发调用,我们提示优化;或者AI生成评分函数有漏洞,我们要求改进。
-
样例项目代码结构:列出调优器的主要代码模块:
-
tuner.py:主程序,包含从输入读取Prompt和测试集、调用AI、评估与输出建议的逻辑;
-
(可选)tests/目录:存若干示例测试Prompt和问题(若采用文件存储测试用例的设计);
-
evaluation.py:如果逻辑复杂,可能拆出一个模块专门负责评估算法。
对每个模块进行介绍,突出 AI 自动生成的代码如何按照我们提示的模块化思路组织良好。 -
生成结果截图:展示调优器运行实例。例如针对一个Prompt和3个测试问题,程序输出每个回答及评分,然后总结:“Prompt 覆盖率一般,建议在提示中明确限定输出格式”。这些输出文本截图有助于读者理解工具用途,也验证项目功能正常。
-
测试点与失败案例:提示词调优器本身需要验证:如对于模型不同的回答是否能正确判断优劣。如果有条件,可模拟一个理想输出和一个糟糕输出,让调优器评分,看是否真的高低分区分明显。此外,测试网络异常或API超额情况。一个失败案例:AI 评分算法最初设计不合理,导致所有Prompt得分都相同——讲述我们如何通过修改提示词让AI引入更多判别规则。
-
术语解释:本章引入“评估指标(evaluation metrics)”“基准测试(benchmark)”等概念,以及简单的NLP评估术语如“精确匹配”“模糊匹配”等。确保读者明白何为好的 Prompt——通常是高准确率、鲁棒性强,对此也做简要说明。
第7章 实战三:知识库问答系统
-
目标概述:构建一个简易知识库问答系统,实现对特定资料的提问回答。此项目让读者学习如何利用 AI 模型结合本地资料(如FAQ文档或维基条目)进行问答,实现检索增强型应用雏形。读者将掌握文本嵌入、匹配查询或直接通过提示将知识库内容纳入上下文的技巧,体验让 AI 基于给定知识而非通用知识回答问题的开发方法。
-
提示词结构:向 AI 描述知识库 QA 系统需求时,需要覆盖:数据来源(例如一个文本文件或一组文档作为知识库)、实现方式(读取文档内容,将问题与文档匹配,提供相关段落给LLM产生答案),以及交互形式(CLI对话或Web接口)。我们将提示 AI 使用 Python 构建,阅读一个 knowledge.txt 文件内容作为知识库,对每个用户问题先在文本中找到相关句子,再让 AI 根据相关内容生成回答。提示词将指定使用何种简单文本搜索(例如关键词匹配或向量嵌入搜索,考虑到初学者难度,可采用关键词搜索结合 GPT 总结),并要求模块化设计:如 search.py 负责检索,answer.py 负责调用 LLM 生成答案。
-
流程图:绘制系统流程:用户提问 -> 程序在知识库文本中查找相关信息 -> 将找到的信息和问题一起作为Prompt发送给 LLM -> 获得答案并返回用户。若找不到相关信息,则返回默认回答(如“未找到相关信息”)。该图清晰展示检索与生成结合的过程,也是当前许多知识问答类应用的典型架构。
-
可视化代码生成过程:利用 Cursor 编写系统关键部分。首先生成 search.py:例如提示AI“编写函数,从给定文档文本中根据用户问题找到最相关的一段文字(可简单以关键词频率衡量相关性)”,AI 输出代码(截图展示函数实现)。然后生成 answer.py:提示“编写函数,调用OpenAI API,将用户问题和检索到的文本整合在一起,让模型依据提供资料回答问题”,观察AI如何构造 Prompt 模板并调用 APIlangfuse.comlangfuse.com。展示关键代码由 AI 生成的截图,并标注其中核心逻辑。最后整合到主程序 main.py:串联调用检索与回答功能,在终端循环读取问题、输出回答。整个过程中如AI出现错误理解(如用复杂算法导致代码超长),我们通过交互调整提示。
-
样例项目代码结构:列出知识库 QA 系统文件结构:
-
main.py:主程序,负责读取知识库文件、初始化检索模块,循环等待用户输入问题并输出答案;
-
search.py:文本检索模块,提供 find_relevant(text, question) 函数;
-
answer.py:答案生成模块,提供 generate_answer(question, context) 函数,内部调用 LLM 接口;
-
knowledge.txt:知识库文本(例如包含若干常见问题及答案的段落)。
描述各文件作用,特别指出知识库如何存储以及代码如何读取利用。 -
生成结果截图:示范系统运行:知识库预先填入例如“OpenAI是什么?”等条目的解释。当用户输入该问题或类似问题,系统正确提取知识库内容并生成准确回答(截图展示问答过程)。也展示一个知识库无匹配的问题,系统输出“抱歉未找到答案”的截图。
-
测试点与失败案例:测试系统对不同提问的鲁棒性。例如问法不同但意思相同的问题,能否匹配;大写小写、错别字等简单扰动是否处理。失败案例举例:一开始AI检索模块只按简单关键词,可能提取了不完整句子导致回答不准确,我们改进提示让AI增加提取段落范围或多取几句上下文。另一个常见问题:LLM 可能在知识不充分时胡编乱造(幻觉),因此我们的Prompt需提醒“如果知识库没有相关信息,只回答不知道”,测试这一情况确保模型遵循指令sangeethasaravanan.medium.com。
-
术语解释:解释“知识库”“向量嵌入”“相关性匹配”“幻觉”等术语。特别说明我们此处未深入用向量数据库,是采用简化方法实现知识问答,但提及工业界常用如 FAISS/向量数据库 的概念,供有兴趣读者扩展了解。
第8章 实战四:API 接口服务项目
-
目标概述:本章教读者开发一个将 AI 模型封装成 Web API 服务的项目,例如构建一个简易的问答HTTP接口或聊天服务端。通过这一练习,读者将掌握如何用 AI 生成后端代码,提供 RESTful API 来服务于客户端应用。这在实践中非常重要,因为许多 AI 应用需要通过网络提供服务,将模型功能供他人调用。
-
提示词结构:我们将告诉 AI 生成一个 Web 服务项目的代码框架。提示内容包括:使用的后端框架(例如 Python Flask 或 FastAPI,为了直观我们选 FastAPI)、需要暴露的API端点(比如 /ask 用于提交问题得到回答)、请求和响应格式(JSON 输入输出),以及在API内部如何调用AI模型获得结果。提示词中明确要求:创建一个 app.py 作为主程序(含FastAPI应用和路由定义),实现 /ask POST接口,接受参数 {question: "..."},返回 {answer: "..."}。并要求附带基本错误处理(如缺少参数时返回400)。
-
流程图:绘制Web API服务的架构:客户端 -> HTTP请求 (问题JSON) -> 服务器 (FastAPI) -> 调用OpenAI等获取回答 -> HTTP响应 (答案JSON) -> 客户端。标注出关键步骤如“API 解析请求”“与AI对话”“封装响应”。此外,简单展示流程中如何并发处理请求(提示FastAPI本身处理并发的能力)。
-
可视化代码生成过程:通过 Cursor 逐步生成 API 服务代码。首先根据提示生成 app.py,截图展示AI产出的FastAPI初始化和基本路由定义代码,解释其中重要部分。然后我们通过让AI补全具体实现:如 ask(question) 路由函数里调用OpenAI API获得答案并返回的逻辑。展示AI编写该部分代码的截图posthog.com。如AI忽略了某些细节(比如未处理OpenAI API失败情况),我们追加提示要求加上异常处理,截图展示改进后的代码。最后,让AI生成一个简单的 requirements.txt 或 命令说明,以便运行服务。
-
样例项目代码结构:此服务项目结构相对简单:
-
app.py:包含所有路由和逻辑的主文件(小型应用可不分模块);
-
requirements.txt:所需依赖(如 fastapi, openai 等);
-
(可选)run.sh:用于启动UVicorn服务器的脚本。
解释如何运行该服务(例如 uvicorn app:app --reload),以及可扩展性(如果功能变多,可拆分成 controllers, services 等模块)。 -
生成结果截图:展示使用 curl 或 Postman 调用 API 的截图:例如向 POST /ask 发送 JSON {"question": "今天上海天气如何?"},得到 `{"answer": "..."}。截图应包含请求和响应的示例,以证明API工作正常。若有可能,也展示服务器控制台日志截屏,看到请求进来和处理的信息。
-
测试点与失败案例:测试 API 的健壮性:如缺少参数调用是否正确返回错误,输入非常长的问题是否超时或被正确处理。探讨并发请求下服务性能(简单压测),确保 AI 生成的代码没有明显阻塞问题(例如使用异步IO的好处)。失败案例:开始AI生成的API可能每次调用模型新建Session,导致效率低或者不复用,或者忘记限制并发,我们识别并通过重构提示优化。另一个潜在问题是安全性,如未做任何鉴权即可调用。我们将在部署章节讨论此类问题,这里提醒读者注意。
-
术语解释:解释RESTful API、HTTP请求方法(GET/POST)、状态码(200/400等)、JSON格式等基本概念。确保非程序员读者理解我们构建的是一个“网上可以访问的AI机器人接口”,为后续真正上线部署打基础。
第9章 综合案例一:智能 PPT 生成助手
-
目标概述:本章进入更综合的案例——开发一个PPT 生成助手。这个助手能够根据用户提供的大纲或主题,自动生成演示文稿(PowerPoint)的内容,甚至直接输出 PPT 文件。读者将学习如何将 AI 文本生成与现有办公文档库(如 PPTX库)结合,实现跨领域的自动化创作工具。此案例培养读者对多步骤任务的分解与实现能力。
-
提示词结构:生成代码时需要详细描述 PPT 助手的需求:输入形式(例如用户给一个演示主题或提纲)、输出形式(生成 PPT 文件或至少生成各页内容文本),以及制作PPT的技术路线(使用 Python python-pptx 库创建演示文稿)。提示词将指定:创建一个脚本,可从用户获取演示标题和若干章节要点,用 ChatGPT 为每章节生成讲解内容,然后利用 python-pptx 生成一份 PPT 文件。我们要求 AI 产出的代码包括幻灯片标题、内容填充,以及基本的样式(简单美化,例如每页有标题和项目符号列表)。
-
流程图:绘制 PPT 生成助手的工作流程:用户输入主题/提纲 -> 程序调用 LLM 为提纲各部分生成扩充内容 -> 程序调用 PPT 库创建演示文档,将生成内容填入各幻灯片 -> 保存 PPT 文件并提供给用户。流程图标明两个关键AI交互:一是内容生成,二是文档生成,两者结合构成完整应用。
-
可视化代码生成过程:通过 Cursor 演示代码生成:首先生成内容创作部分函数,如 generate_slide_content(topic, outline),内部调用 AI 为每个要点生成丰富讲解。截图展示AI编写此函数的代码,如何组织 Prompt 让模型生成结构化输出(可能需要模型列出每张幻灯片要点)。接着生成 PPT 创建部分函数,如 create_ppt(slides_content) 利用 python-pptx 创建幻灯片并插入文本。截图展示AI生成的操作PPT的代码片段(添加幻灯片、文本框等)。然后整合主程序,将两部分串联。读者可以看到 AI 生成代码跨域(既会调 ChatGPT API 也会用pptx库)是可行的,但过程中如有库名错误或调用不当,我们如何纠正 AI(例如AI可能忘记调用 Presentation.save 方法保存文件,我们通过提示增补)。
-
样例项目代码结构:列出模块:
-
ppt_assistant.py:主要脚本,包含内容生成和PPT构建的逻辑,可以将关键函数拆成 content.py 和 makeppt.py 两模块以清晰分离职责;
-
templates/(可选):存放PPT模板文件(如果想实现更复杂的模板套用,这里简单提及);
-
输出文件示例:output.pptx。
解释各部分作用,以及如需变更幻灯片风格如何调整代码。 -
生成结果截图:展示助手运行后的成果:例如用户输入主题“AI在教育中的应用”及一个简单大纲,程序运行后在工作目录生成了“AI在教育中的应用.pptx”。截图可以展示生成的 PPT 文件中的幻灯片缩略图,看到标题和要点都已填入promptingguide.ai。也可截图部分日志或终端输出提示文件生成成功的信息。
-
测试点与失败案例:测试生成内容的合理性和文档有效性。打开生成的 PPT 确认内容是否符合输入提纲,各幻灯片未出现乱码或错漏。测试当用户输入提纲过长或过短的情况,AI 能否产出合适长度的内容。失败案例:一开始AI生成的PPT代码可能漏掉添加幻灯片布局,导致文件打不开,我们据此说明如何发现并修复。另一个问题:内容可能过多超出一页,我们可以改进为自动拆成多张幻灯片(这一优化作为思考题留给读者,提示AI也能实现)。
-
术语解释:介绍PPT文件结构、幻灯片、文本框等概念,解释我们使用的python-pptx库简要原理。澄清AI生成内容与实际PPT格式可能存在的差异,例如AI产出的是文本需程序放置到幻灯片中。本案例涉及多模态输出的雏形(文本到图形文档),为后续多模态项目做铺垫。
第10章 综合案例二:内容创作 Bot
-
目标概述:本章实现一个内容创作机器人,可以根据用户的指示自动撰写文章、博客或社交媒体帖文等内容。通过构建此Bot,读者将学习复杂Prompt设计(如引导模型遵循特定风格、分段输出)以及如何让AI生成较长的连贯文本,并简单探讨内容质量控制的方法。这个Bot可以用于自动化写作、营销文案生成等场景。
-
提示词结构:为了生成Bot代码,我们将详细描述Bot的功能需求:支持多种文体(文章、诗歌、广告词等)的生成,允许用户指定主题和风格长度等参数。提示AI使用Python实现一个CLI或简易GUI程序,核心逻辑:根据用户输入参数构造一个精细Prompt调用LLM得到创作内容。提示词强调要多步处理:例如先让模型列出内容提纲,再逐段生成正文,以提高一致性。这些步骤可以让AI逐步生成代码:一个函数 generate_outline(topic, style) 通过OpenAI列出提纲,另一个函数 generate_content(outline, style) 按提纲生成各段落内容,最后主程序组合输出。
-
流程图:绘制内容创作Bot运行流程:用户输入所需文章主题+风格 -> 程序构建第一个Prompt请求提纲 -> LLM返回提纲 -> 程序构建第二个Prompt逐段创作 -> LLM返回完整内容 -> 程序输出/保存内容。流程图中将提示词如何变化、模型如何迭代被清晰地表示,让读者理解渐进式提示的重要性。
-
可视化代码生成过程:分段展示AI生成Bot代码的过程:1)AI 生成 outline_generator() 函数代码,截图显示其调用模型获取提纲逻辑;2)AI 生成 content_generator() 函数代码,截图展示其如何遍历提纲并调用模型生成段落文本;3)AI 生成 main() 或 CLI 交互部分,将二者连接并处理用户输入输出。我们将重点说明AI如何被我们指引处理长文本:比如在Prompt加入“请控制文章在500字左右,分三段”等,AI 代码中体现这些参数。若AI 代码初版没有满足,我们如何通过编辑提示或直接修改部分代码再让AI接续完善。
-
样例项目代码结构:项目可能包含:
-
writer_bot.py:主脚本,包括提纲生成和内容生成逻辑(如果代码较长,也可分为 outline.py 和 content.py 模块);
-
prompts/(可选):存放一些预定义的写作风格或示例Prompt模板,提升复用性。
解释如何扩展:例如增加对多语言写作的支持,可通过在提示中增加语言参数实现。 -
生成结果截图:展示Bot运行实例。比如用户命令:“写一篇轻松风格的关于AI在医疗领域应用的博客,三段落”,截图中程序输出了拟好的标题和段落内容ibm.com。内容应大致连贯、符合同意的风格。若篇幅过长,可只截取部分并说明长度。也可以展示Bot将结果保存到文件的提示,表明内容成功写入文本。
-
测试点与失败案例:检查生成内容质量,如是否紧扣主题、有无跑题。测试不同风格参数(正式/幽默)对输出的影响,确保代码在Prompt里正确传递风格要求。失败案例:初次AI生成代码可能没有提纲步骤直接一次性生成全文,导致结构混乱。我们分析优缺点,最终通过两阶段Prompt改进效果。另一个问题是模型容易返回超长内容或不遵守字数要求,我们讨论这种模型守规问题以及可能的应对策略(如截断输出或提示里明确长度约束,但仍需监督)。
-
术语解释:“风格(style)”“语调(tone)”“连贯性(coherence)”等写作相关概念,以及提示模板的概念——可以预先设计好一段含变量的提示以复用。确保读者理解我们是在教AI写作,以及如何用程序自动化调用AI来批量生成内容的思路。
第11章 综合案例三:工单处理自动化系统
-
目标概述:本章挑战更贴近企业应用的场景 —— 开发一个自动化工单处理系统。该系统能够读取客户提交的工单(例如维修请求、投诉等),利用 AI 分类其类型、提取关键信息,甚至自动拟草回复或解决方案。本案例综合运用前面所学,包括文本解析、分类、生成回复等功能,让读者体会 AI 在企业流程自动化中的价值。
-
提示词结构:向 AI 说明此系统需求时,要涵盖多个功能模块:读取工单内容(假设以文本或表格形式存储)、分类(例如“报修”“投诉”“咨询”等类别)、提取重点字段(如用户姓名、产品型号、问题描述),以及生成回复建议。提示词可能需引导 AI 逐步完成:先生成分类模块代码,再生成信息提取模块,最后生成回复生成模块,然后组合在一起。我们明确要求使用某些NLP技巧:如分类可基于关键词或零样本推理模型,提取可用正则或简单NLP库(比如 spaCy)。提示中若涉及外部库,要指定安装导入方法。整体而言,这个Prompt较复杂,需要分解说明各子任务并希望AI分别生成。
-
流程图:绘制工单处理流程:系统监控到新工单 -> 解析工单内容 -> 分类确定处理部门/优先级 -> 提取关键数据(可能用于记录或自动填表) -> 若有模板,生成初步回复或解决方案建议 -> 人工审核后发送客户。流程图突出 AI 参与的环节:分类和回复生成。也展示AI如何与工单系统接口(假设简化为读取文件或数据库)。
-
可视化代码生成过程:将代码生成过程按照模块划分:1)分类模块:Cursor 生成 classifier.py,包含 classify_ticket(text) 函数。截图展示AI采用简单规则或提示GPT分类的代码sangeethasaravanan.medium.com(如内置几个类别关键字映射,或直接用OpenAI分类模型);2)信息提取模块:生成 extractor.py,提供 extract_info(text) 函数,可能通过正则识别"订单号:1234"这类字段或调用简单NLP。截图显示AI提取代码逻辑。3)回复生成模块:生成 responder.py,提供 generate_response(category, info) 函数,利用预定义回复模板或 LLM 根据类别生成解决方案sangeethasaravanan.medium.com。截图展示AI根据类别选不同风格回复的实现。最后集成 main.py:读取模拟工单数据、调用上述模块、输出结果(分类结果+建议回复),截图显示AI组装这些模块的代码段。整个过程中,如AI出现先后不一致(比如分类类别名和回复模块不匹配),我们演示如何调整提示确保统一。
-
样例项目代码结构:模块化清晰:
-
classifier.py:分类工单;
-
extractor.py:提取信息;
-
responder.py:生成回复;
-
main.py:主脚本,整合流程;
-
sample_tickets.txt:示例工单数据。
讲解如何替换为真实情境(如对接数据库、网络接口),并指出模块隔离的好处:方便替换更高级算法(如将简单分类换成AI模型服务)。 -
生成结果截图:展示一条示例工单处理的完整输出。例如工单文本:“客户张三反馈其购买的X产品无法开机需要维修”,系统输出分类“报修”,提取信息如{name: 张三, product: X产品, issue: 无法开机},以及建议回复“您好张三,我们已收到您关于X产品无法开机的报修请求…”. 截图包含终端打印的这些结果或日志。
-
测试点与失败案例:测试不同类别工单(投诉 vs 咨询)的分类准确度和回复差异;测试字段缺失或格式异常的工单,提取模块能否健壮处理。失败案例:AI 初版分类规则可能混淆相似类别,举例说明在提示中加入更多示例如何提高准确性。另可能回复口吻不妥(太生硬或不专业),我们通过在Prompt中规定语气(礼貌+简洁)改进之sangeethasaravanan.medium.com。强调最终回复给客户前应由人工审核,提示AI生成代码时也加入相应注释警示,这体现人机协作的必要。
-
术语解释:介绍“工单系统”“分类标签”“模板回复”等业务术语。解释正则表达式用于信息提取的原理(非编程读者可简单理解为模式匹配文本)。涉及到的NLP概念如零样本分类等也做简要说明。
第12章 综合案例四:视觉问答微应用
-
目标概述:本章实现一个小型视觉问答应用,让读者体验多模态AI项目。应用功能:用户提供一张图片和一个问题,系统利用图像识别模型获取图像内容,再结合语言模型回答问题。例如上传一张风景照问“这是什么地方?”,系统先识图得到可能的地点信息,再由语言模型给出回答。这让读者尝试整合计算机视觉和LLM,在 Vibe Coding 框架下开发多模态应用。
-
提示词结构:针对视觉问答项目,我们提示 AI 生成的代码涉及调用现有图像识别API或模型(考虑简易,使用现成的如百度OCR或AWS Rekognition,或者OpenAI的图像识别如果有)。提示内容包括:用Python编写一个接受图像文件和文本问题的程序,首先对图像执行分析获取描述或标签,然后将图像描述和用户问题一起作为Prompt给ChatGPT得到回答。我们要求模块化设计:vision.py 处理图像 -> qa.py 处理问答。提示词明确使用某个公开的图像API(以减少模型实现复杂度),并示例API的返回结构供AI参考。
-
流程图:绘制视觉问答流程:用户提供图片+问题 -> 图像分析模块(调用CV API,输出描述/标签)-> 将问题和图像描述整合为Prompt -> 调用LLM生成答案 -> 返回给用户。流程图特别强调图像信息如何融入Prompt,例如Prompt模板:“这是一张描述为{标签}的图片。问:{用户问题}。请基于图片内容回答。”
-
可视化代码生成过程:使用 Cursor 生成图像分析代码:如AI编写 analyze_image(image_path) 函数,内部调用假定的API(示例:AWS Rekognition或者OpenAI Vision API),截图显示AI对API用法的实现(如果无法确知接口细节,我们提供伪代码形式,AI通常会给出假定代码)。再生成QA代码:answer_question(image_info, question) 函数,将image_info和question组装Prompt调用语言模型。截图展示Prompt构建和模型调用代码。最后 main.py 整合:接受命令行参数或固定测试图像路径,调用上述函数并打印答案。展示AI生成这些部分代码的过程截图,重点说明Prompt如何设计。
-
样例项目代码结构:主要模块:
-
vision.py:包含 analyze_image 函数,封装图像识别API调用;
-
qa.py:包含 answer_question 函数,封装LLM问答调用;
-
main.py:整合以上,实现一个简单交互或读取测试文件运行。
若使用外部API服务,还会有配置文件存放API Key,使用说明等。 -
生成结果截图:展示用一张示例图和问题运行的结果。例如提供一张猫的照片,问“这只猫是什么品种?”,系统可能识别出“图像中是一只橘色的短毛猫”,然后回答“这可能是一只橘色虎斑猫”。截图包括终端输出或日志,显示图像分析结果和最终答案。也可加入识别API返回的JSON片段截图,让读者了解底层数据。
-
测试点与失败案例:测试各种图像和问题:如问题与图像无关时,系统应察觉并提示无法回答(测试Prompt要引导模型在无法根据图像回答时拒绝或说不确定)。失败案例:最初AI生成的代码可能对接API不正确或忽略某步,例如忘记将图像转换合适格式。通过报错信息截图,说明我们如何调整提示或代码解决。另一个挑战是LLM可能基于常识回答而非图像内容,我们强调提示需反复提醒模型依据提供的图像信息回答sangeethasaravanan.medium.com。可能在Prompt加入“只根据以上图像描述回答,不要添加额外猜测”。
-
术语解释:解释“多模态”“计算机视觉(CV)”“OCR”“图像识别”等概念。说明API与本地模型的区别,以及常用的视觉AI服务。强调这是读者首次接触非文本输入的AI编程,属于难度提升点,但掌握后将大大拓展可开发应用范围。
第13章 进阶技巧:AI 生成代码的测试自动化
-
目标概述:进入进阶部分,首先讨论测试自动化在 AI 编码过程的重要作用。本章教授读者如何用AI来辅助生成单元测试代码,以及如何将持续测试融入开发循环,实现代码变更后自动运行测试,提升项目稳健性cloud.google.com。这不仅巩固读者对代码正确性的重视,也展示AI在保证代码质量方面的用途。
-
编写测试用例的提示:演示如何通过提示让 AI 为之前章节的项目生成测试代码。例如选取 CLI 聊天机器人项目,提示AI:“为 chatobot.py 编写三个 PyTest 单元测试:情况1-正常对话返回预期回答,情况2-用户输入exit正常退出,情况3-遇到网络错误抛出异常”。AI 将输出对应的测试函数代码cloud.google.com。截图展示这些 AI 生成的测试代码,并强调 AI 能快速覆盖常见场景,但也可能遗漏边角情况,需要我们审查。
-
集成测试与持续集成:介绍如何设置自动化测试环境,如使用 pytest 运行测试套件。指导读者编写一个简单的CI脚本或GitHub Actions配置,在每次代码生成/修改后运行测试。虽然这部分需要些编码细节,我们可利用AI生成 YAML 配置文件的片段。展示一个工作流程示意:开发者用AI生成代码 -> 触发测试 -> 测试结果反馈,若失败则根据信息提示AI修改代码。
-
Prompt 驱动测试:提出一种思路:让 AI 自己基于代码和需求生成测试输入并检查输出是否正确,即Prompt 级测试。例如利用ChatGPT描述:“如果函数应该返回列表,当输入X时,期望输出Y”,让AI直接判断当前代码行为是否一致,从而发现潜在问题。引用Google的做法:他们让AI先写代码再让AI写测试确保代码质量cloud.google.com。虽然读者未必成熟应用,但介绍这一前沿思想拓宽视野。
-
可视化过程:用一个具体实例展示AI生成测试->运行测试->根据失败信息再让AI修复代码的循环。截图1:AI生成的测试,其中有一个故意失败(比如我们的聊天机器人没处理空输入,但测试覆盖了空输入应报错的情形)。截图2:运行pytest结果显示哪个测试失败。截图3:我们将失败原因(AssertionError等)反馈给AI,提示“修改代码通过测试”,AI 生成改进的代码。通过这组图文说明AI辅助调试的强大作用simonwillison.netsimonwillison.net。
-
挑战与注意:讨论AI生成的测试本身也需要审查,不能绝对信任。特别是AI有时对功能理解偏差,写的断言不正确。因此人作为监督者要review测试是否真正验证需求。引入“测试即文档”思想:测试用例描述的期望行为本身帮助澄清需求,在人机协作开发中非常有益。
-
术语解释:澄清“单元测试”“集成测试”“持续集成(CI)”“断言”等概念。解释PyTest等测试框架基本原理。强调即使读者不懂所有代码,也应明白测试的通过与否决定了代码是否可信,从而愿意投入精力学习这部分。
第14章 进阶技巧:Prompt 单元测试与质量评估
-
目标概述:本章探讨如何对提示词(Prompt)本身进行测试和评估。随着项目复杂度上升,Prompt 对输出的控制力至关重要,我们需要确保 Prompt 修改不会造成其他功能退化。这类似于软件的单元测试概念,但对象变为Prompt。读者将学到在 Prompt 工程中引入自动化检查的方法,提高 Prompt 的可靠性和可调试性。
-
Prompt 单元测试理念:解释什么是 Prompt 的“单元测试”。即针对一个Prompt设计若干输入情景(上下文),预期模型输出满足某些要求,通过批量调用模型验证。如果有偏差就算测试失败blog.csdn.net。这种方法可用于回归测试:当Prompt更新后,用相同测试检查输出变化。强调这是前沿实践,未必成熟,但值得尝试。
-
实例:FAQ 机器人 Prompt 测试:以知识库问答系统为例,其Prompt要求模型未找到答案时回复“不知道”。设计三个测试问题:一个知识库有答案的问题、一个没有答案的问题、一个边界模糊的问题。通过脚本自动调用模型3次,收集回复,判断是否符合预期(如第二问模型确实回答“不知道”)。展示AI生成的测试脚本代码blog.csdn.net,它可能使用OpenAI API,输入固定Prompt+问题,看输出包含关键词“不知道”。截图展示测试脚本及执行结果通过/不通过的情况。
-
工具与框架:介绍社区已有的一些 Prompt 测试工具,如 Promptfoo、Langfuse 等支持A/B测试和打分的框架langfuse.com。比如Langfuse可以版本化Prompt,随机路由不同版本收集用户反馈langfuse.com。亦可提及微软Guidance等允许对LLM输出加约束检查。鼓励读者结合项目使用这些工具,尽管本书主要以自建简单方法为主。
-
可视化过程:选取内容创作Bot或工单回复中的Prompt,演示Prompt单测。截图1:Prompt模板及预期格式说明。截图2:测试用例表(输入->预期输出片段)。截图3:运行测试工具或脚本结果,若某项失败,高亮显示预期与实际的差异。这样读者直观理解Prompt修改影响输出如何被检测到,例如我们把回复语气从礼貌改幽默,测试可能发现某些正式场景下不适合。
-
维护Prompt的最佳实践:总结在项目中维护高质量Prompt的一些建议:版本控制Prompt文件,每次修改伴随注释;建立Prompt Library,不同功能的Prompt分开存储;在上线前对关键Prompt进行人工review和模拟测试;以及A/B测试在Prompt优化中的作用(为下一章埋下引子)。
-
术语解释:解释“回归测试”“评估指标”等。尤其说明Prompt输出的评估不同于代码的确定性:需要选取合理衡量标准,比如包含特定关键词、回答正确性(可能需要人工或AI辅助判断)。引出LLM-as-a-judge概念(用AI评价AI输出)但提醒可能的偏差。本章前沿性质浓厚,但内容深入浅出,为读者日后深入Prompt工程指明方向。
第15章 进阶技巧:AI代码重构与优化
-
目标概述:在长期项目中,代码需要不断重构优化。本章讨论如何利用 AI 助手对现有代码进行重构(Refactor),包括提升代码可读性、消除重复、优化性能等。读者将学习用提示引导 AI 理解大段现有代码并提出改进,以及半自动地应用这些改进,从而迭代完善项目代码库ibm.com。
-
重构的重要性:结合前面章节的开发经历,指出AI初次生成的代码往往为完成功能而牺牲结构和性能,因此需要重构。例如在工单系统中可能出现大量硬编码规则,可重构为配置驱动;在内容Bot中部分代码可提取公用函数等。强调重构不会改变功能,但让代码更优雅,这是软件工程的重要实践ai.plainenglish.io。
-
提示AI进行重构:演示如何写Prompt请 AI 重构代码。例如对内容创作Bot的 writer_bot.py,提示:“重构此代码,将提纲生成和内容生成拆分成独立类,各方法添加文档字符串,并移除冗余变量”。AI 将输出修改后的代码ai.plainenglish.io。截图对比重构前后的代码差异,标出AI做了哪些改进(例如代码去重、函数粒度调整)。也可以多轮交互:AI改完后,我们进一步提示“请确保符合PEP8规范,变量命名有意义”,AI再作调整。
-
Cursor 的重构助力:介绍 Cursor 编辑器内建的AI重构功能,如选中代码点击“Fix with AI”按钮,让AI直接修改代码builder.io。读者可以尝试在 Cursor 中对之前项目代码进行重构操作。说明Cursor如何高亮改动并允许用户选择接受与否。强调人工审阅仍然必要:确保AI改动没引入新bug(因此重构后需跑测试章的测试验证)。
-
性能优化:除了代码结构,AI也可建议性能改进。例如大数据处理改用生成器节省内存,或将多个API调用并行化。我们可以示例:Prompt问AI“分析这段代码的效率瓶颈并优化”,针对某项目慢点(比如逐行处理文件),AI 可能建议批量读取等。虽然初学者对性能细节未必敏感,但让他们知道AI也具备一定性能优化能力builder.io。
-
可视化过程:挑选一份有瑕疵的代码片段,用Cursor截屏展现AI重构建议的弹窗或diff视图,旁边解释变化。或展示AI把一段重复代码抽取成函数的对比图。通过这些可视化,读者能切身体会重构带来的代码质量提升。
-
潜在问题:提醒AI重构也非完美:可能发生过度重构(把简单代码搞复杂)或功能误改。举例AI曾错误地改变算法逻辑(如把深拷贝改成浅拷贝导致bug),说明在关键代码重构时需要谨慎,多运行测试验证。
-
术语解释:解释“重构(Refactor)”的含义、“代码异味(Code Smell)”“DRY原则(Don't Repeat Yourself)”等。说明重构不同于优化,前者关注代码结构可维护性,后者关注性能,两者往往相辅相成。本章旨在提高读者在AI帮助下持续改进代码的意识和能力。
第16章 进阶技巧:Cursor 插件精选与配置
-
目标概述:本章聚焦 Cursor 编辑器的高阶用法,包括推荐的插件和配置,帮助读者打造更顺畅高效的 AI 编程环境。通过了解 Cursor 的各种贴心功能,读者可以进一步提升 Vibe Coding 的体验,比如更快定位问题、与团队协作等。
-
Cursor 强力功能回顾:简述 Cursor 内建的一些强力功能:如多文件Tab自动补全builder.io、一键错误修复和调试按钮builder.io、代码上下文记忆等。确保读者充分发掘 Cursor 默认提供的AI能力,而不仅限于前几章基础使用。举例说明:Cursor的“Debug with AI”可以读取错误堆栈并让AI直接给出修复建议builder.io;“Explain Code”功能可帮助非程序员读者理解AI生成的复杂代码段,这非常实用。
-
热门插件推荐:列出在 Cursor 或相关IDE中,可以配合AI使用的优秀插件。例如:
-
Linting/Formatting 插件:自动代码格式检查 (如 ESLint、Black),与AI生成结合确保代码风格一致。
-
GitLens:版本控制可视化插件,方便查看AI每步提交的变更(类似时间轴)。
-
Error Lens:高亮显示运行时错误行,可搭配AI快速导航修复。
-
ChatGPT or Copilot Chat 插件:在编辑器侧边提供对话窗口,便于一边看代码一边问AI。
对每个插件简要介绍其功能和安装方法。提示这些插件大多有VSCode版,而Cursor本身可能集成部分功能。 -
配置优化:分享一些Cursor的配置技巧:
-
调整AI模型参数:Cursor允许选择模型(GPT-4/3.5等)docs.cursor.com, 可根据任务需要切换速度与质量;
-
内存/上下文设置:大型项目时如何利用 Cursor 的 Codebase Indexing 提高AI对项目理解docs.cursor.com;
-
键盘快捷键:如常用的 Cmd+K 唤出AI对话builder.io(用户也可更改避免冲突),还有快速执行单元测试或运行代码的快捷键,提高效率。
-
主题和界面:选择合适的主题让AI生成代码高亮更清晰等,增强长时间编写的舒适度。
-
实用技巧:介绍一些使用 Cursor + Copilot 的小贴士:比如逐行验证策略——在AI生成一段代码后,逐步运行/测试,Cursor可以在终端一键执行Python代码,看结果是否符合预期,然后继续下一段。再如片段生成——选中部分TODO注释让AI生成特定函数,而不是一次生成整文件,提高可控性。
-
问题排查:如果 Cursor 提示出错或卡住,如何处理?建议读者:清除下问或者拆分问题,或检查自己Prompt有无触发敏感词导致AI拒答。说明 Cursor 本身日志或Request ID获取docs.cursor.com的方法,以便向官方求助。
-
视觉辅导:插入Cursor界面的截图:如侧边Chat窗口、AI自动补全建议弹出、diff对比界面等,直观展示这些插件/配置带来的效果。
-
术语解释:介绍“Lint”“Indexing”“Context窗口长度”等概念,以及Cursor专有的一些名词如Composer模式、Agent模式等builder.io。帮助读者不仅会用,还知其然,遇到问题时能理解提示信息含义。
第17章 部署与运维:将 AI 项目发布上线
-
目标概述:完成开发后,将应用部署上线是关键一步。本章教授如何将AI项目部署到云平台(以 Vercel、Railway 为例),让项目可以被他人访问使用。同时介绍部署后的基本运维,如监控日志、扩展规模等。通过实际部署主线项目或先前案例,读者将学会将本地运行的AI应用发布为互联网服务。
-
部署平台选择:比较几种流行部署方案:Vercel适合前后端一体Serverless部署、Railway提供简单后端部署支持多种语言。根据主线项目特点,我们假设使用 Railway 来部署后端 API,Vercel 部署前端界面或Serverless函数。解释这两个平台的优点:免费套餐、自动构建、易与GitHub集成等。
-
部署准备:指导如何在平台上新建项目、连接Git仓库或直接上传代码。需要AI生成一些配置文件:例如 Railway 的 Dockerfile 或 Procfile(如果需要);Vercel 的 vercel.json 等。演示用 AI 生成Dockerfile 的提示:“为 FastAPI 项目编写 Dockerfile,使用python:3.10镜像,端口8000”,AI输出文件内容。截图展示生成的配置文件并解释关键行。
-
上线过程:以 Railway 为例,截图展示将代码推送到GitHub后,Railway自动构建部署的界面。说明环境变量如 API KEY 如何在平台上安全配置,而不直接硬编码。等待部署完成,通过提供的域名访问服务测试。如果有错误(例如缺少某库),通过平台日志查看并调整。强调日志查看的重要性,在Railway/Vercel控制台可以实时监控应用输出的日志。
-
域名与前端:如果项目需要前端,如主线项目“多模态工作站”可能有网页界面,我们简述将前端部署到 Vercel(因为Vercel擅长静态和前端)。将AI生成的前端代码推至Vercel,一键上线。同时可演示绑定自定义域名的流程(初学者了解即可)。
-
部署截图:提供项目在云平台上的运行截图:包括Railway服务的 Dashboard(显示运行中、请求统计等),以及实际访问接口或网页的截图。例如浏览器请求主线项目的一个功能返回结果的画面,证明部署成功。
-
挑战与优化:谈及部署AI应用可能遇到的问题:如依赖安装失败(解决:检查requirements)、内存超标、API密钥泄露(提醒不要传.git包含密钥)。对每个问题简要给出应对:调整实例配置、使用.env管理密钥等。引导读者思考成本:许多云平台AI调用要花费,如何在设置中控制QPS或使用较小模型以降低成本。
-
术语解释:解释“容器(Container)”“Docker”“Serverless”“环境变量(Environment Variable)”等部署相关概念。帮助非IT背景读者理解云部署的基本思想:本地跑起来->上传云端跑,让全世界可访问。消除对部署的神秘感,增强动手尝试的信心。
第18章 部署与运维:提示词 A/B 测试与模型升级
-
目标概述:上线后,并不意味着高枕无忧。本章讲解如何在生产环境进行提示词的 A/B 测试和模型效果比较,以持续优化应用性能。读者将学会在不影响用户体验的情况下,对比不同Prompt版本或不同模型(如GPT-4 vs GPT-3.5)的效果,以数据驱动地改进系统langfuse.com。
-
Prompt A/B测试原理:解释何为 A/B 测试:将流量随机分为两组,分别使用Prompt A和Prompt B,观察哪组表现更优langfuse.com。在AI应用中,这表现为对照两种不同提示词或模型的输出质量指标。强调需要明确的评价指标,如用户反馈评分、任务成功率等。
-
实现方法:介绍在代码中实现A/B分流的简洁方式:例如在API服务里,用随机或用户ID奇偶决定使用Prompt A还是Blangfuse.comlangfuse.com。演示AI生成相应代码片段,将之前API调用那部分拆成两套Prompt(或两种模型api key),根据条件选择。截图展示这样的实现,附注释说明。也提到可以借助现成工具如 Langfuse 的Prompt管理来更方便地做 A/Blangfuse.com。
-
数据收集与分析:部署A/B测试后,需要收集结果数据。介绍可以在响应中增加一些字段或在后台日志记录例如“使用PromptA输出长度X用户评价4星,使用PromptB输出长度Y用户评价5星”。如果读者项目没有用户评分机制,也可以用人工事后判断或用LLM作为判分员langfuse.com。强调样本量和统计显著性的重要性,但不过深究数学,只提醒不要因个别案例误判。
-
模型版本对比:除了Prompt,还可测试新模型效果。例如OpenAI推出新版本模型,可以一部分请求走新模型一部分走旧模型,观察质量、速度和成本差异flow-ai.com。提醒升级模型虽诱人,但可能有细微行为改变,A/B测试有助于评估新模型是否值得完全替代旧模型。
-
可视化:提供A/B测试监控界面的截图或自制图表:例如在一定时间窗内,PromptA/B分别的用户满意度评分柱状图,或两种模型返回错误率对比。可以简单假设数据做一个示意图,让读者直观明白分析过程。若用了现成服务(如Langfuse),也可截图其Dashboard示例。
-
实战案例:列举一个例子:内容创作Bot上线后,团队怀疑改写Prompt能提升幽默风格,于是进行A/B,结果B方案使用户平均停留时长提高了20%。通过这个小故事说明A/B测试带来的收益。
-
术语解释:解释“实验组/对照组(A/B组)”“指标(metric)”“显著性”以及常见的用户指标如留存、转化等(简要提及)。澄清A/B测试需要一定用户基数才有效果,个人小项目可通过人工方式模拟。让读者理解优化是持续的过程,而不仅仅停留在开发阶段。
第19章 部署与运维:日志分析与异常兜底
-
目标概述:本章聚焦AI应用上线后的运行维护,包括日志的收集与分析,以及如何处理异常情况(如模型出错、响应延迟或内容不当)提供兜底策略,保障应用稳定可靠sangeethasaravanan.medium.com。读者将学习运维基本功,使其AI项目在生产环境中安全稳健运行。
-
日志的重要性:讲解为何需要日志:可以记录用户请求、AI输出、执行时间、错误信息等,这些数据是诊断问题和改进的关键。建议在项目中加入适当日志语句,例如每次API调用前后打印提示词和返回长度、每次出现错误打印异常栈等。AI 可以辅助生成日志代码:提示它“在每个关键步骤加入日志,格式: 时间-级别-信息”,AI 会插入 print 或使用 logging 模块代码。展示AI生成的日志代码片段,并说明如何配置日志级别和输出文件。
-
日志分析:学会通过分析日志发现问题模式。如查看一段时间内错误日志,统计频率最高的问题。例如某个问题触发模型总是无法回答,提示需要改进知识库;或者发现每次长输入都会导致超时。介绍基本的日志分析技巧,甚至可以用AI来帮助——将日志文件片段提供给ChatGPT,请它总结常见错误类型。当然,小心不要上传敏感日志给AI。
-
异常兜底策略:讨论AI应用可能出现的异常:模型API超时或返回错误、生成内容不符合要求(比如不恰当或不符合格式)、用户滥用等。针对每类异常,设计兜底方案:
-
超时/无响应:设置调用超时时间,一旦超时返回预设答复如“抱歉,当前繁忙请稍后重试”,并在后台重试或上报sangeethasaravanan.medium.com。
-
格式错误:如果模型输出不符合JSON等格式,可尝试自动重试一次,或使用Guardrails库验证格式并纠偏sangeethasaravanan.medium.com。
-
内容不当:集成内容审核(OpenAI Moderation或第三方),如检测到毒性则返回安全提示而非模型原输出sangeethasaravanan.medium.comsangeethasaravanan.medium.com。
-
服务不可用:如果AI服务本身挂掉,系统应快速切换到备用模型或返回备用答案(如一个通用抱歉回复),保证不崩溃requesty.aiquarkus.io。
-
实现兜底:可以让AI生成部分代码实现上述逻辑。例如用try/except围绕API调用,多捕获一些异常并处理;或使用guardrails框架定义输出schema,AI自动重试sangeethasaravanan.medium.com。截图展示添加这些容错代码的关键片段。再如多提供两个模型API keys,主服务失败时调用备用服务(OpenAI vs Anthropic),实现多提供商冗余requesty.ai。
-
监控报警:简要提及设置监控的思路:例如通过日记或指标,如错误率超一定阈值触发邮件/短信通知。这超出初学者实现范围,但可以提示有现成SaaS或平台工具。
-
可视化:给出异常处理流程图:例如模型返回检测->通过/不通过->不通过时走兜底路径(如返回预设答案并记录日志)。也可以截图假设一个日志片段和标注其中关键异常记录、耗时信息,让读者感受分析方法。
-
术语解释:解释“兜底(Fallback)”“容错(Fault Tolerance)”“监控(Monitoring)”等。特别介绍 Guardrails 概念sangeethasaravanan.medium.com,指出一些工具(如 Nvidia NeMo Guardrails)可方便实现输出验证和重试sangeethasaravanan.medium.com。强调 AI 应用上线后开发者责任:持续关注模型表现,及时调整策略以确保用户获得稳定可靠的服务sangeethasaravanan.medium.com。
第20章 主线项目(上):多模态创作 AI 工作站框架搭建
-
目标概述:从本章开始,读者将综合运用前面章节所学,分段实现贯穿全书的主线项目——多模态创作 AI 工作站。本章主要搭建项目基础框架,包括确定功能模块、建立项目结构、实现核心架构。多模态工作站旨在提供一个平台,让用户在其中进行文本、图像、甚至音频的创意生成和交互。本章之后,21、22章将逐步填充各模块细节并完成部署。
-
项目愿景:先向读者描绘主线项目的全貌:它汇聚此前多个小项目功能于一身——既能聊天答疑,又能生成内容、制作PPT,甚至处理图像问答,成为一个综合性AI工具集。用户界面拟采用Web界面,方便选择不同功能。此处明确各子功能:聊天助手、知识问答、内容创作、PPT生成、视觉问答等,以及如何在一个应用中组织它们。
-
模块划分:根据功能将项目分为若干模块/子系统:
-
对话模块(Chat Module):用于一般聊天和问答(整合CLI聊天机器人的能力和知识库QA);
-
创作模块(Creation Module):用于生成文章、博客等内容(整合内容创作Bot功能);
-
演示模块(Presentation Module):用于生成PPT(整合PPT助手功能);
-
视觉模块(Vision Module):用于图像问答(整合视觉QA);
每个模块可以有前端界面和后端API分别实现。提示AI按照MVC思想组织代码,如各模块有各自路由。 -
项目结构建立:利用AI生成初始项目目录和文件。提示词示例:“创建一个多模块Flask应用,每个子应用在 blueprint 下:chat, creation, presentation, vision。设置 main.py 来启动整个应用。” AI 输出的结构比如:
-
app/
-
init.py
-
chat.py
-
creation.py
-
presentation.py
-
vision.py
-
templates/(如有前端页面)
-
static/(静态资源)
-
main.py
截图展示AI生成的项目结构树和关键初始化代码。 -
核心架构实现:让AI生成 app/init.py 内容:注册各模块blueprint,配置全局设置。截图展示代码并解释 Flask blueprint 的概念。然后生成一个简单的模块骨架代码,例如 chat.py 内定义路由 /chat 返回“Chat module up”占位内容等等,保证整体可运行。
-
流程图:绘制工作站高层架构图:前端各功能入口 -> 后端各模块 -> 内部再调用LLM或其他服务 -> 返回结果。让读者清楚模块之间关系和数据流向。
-
整合先前成果:在本章可能不实现所有细节,但指出将复用前面章节的算法和提示:例如 Chat模块将用到CLI聊天机器人的逻辑、知识库检索;Creation模块用之前的内容Bot;Presentation模块会调用之前的PPT生成代码;Vision模块复用视觉QA逻辑。为避免重复,实际实现中会提取公共部分如 LLM API 调用作为一个util模块。
-
样例项目代码结构:列出当前完成的文件和空函数列表,表示框架已就绪,功能待填充:
-
app/chat.py:(函数 get_answer(question) 待实现:结合知识库和聊天)
-
app/creation.py:(函数 create_content(params) 待实现)
-
...
-
main.py:启动 Flask 应用。
这让读者知道接下来每章会往这些模块里添加代码。 -
测试框架:在结尾提醒已配置测试环境依然可用,鼓励读者在完善每模块后编写测试确保各部分协同工作。当前可以启动服务器(截图终端输出“Running on http://localhost:5000”),并访问各模块URL返回占位响应,验证路由正常工作。
-
术语解释:复习并解释“模块”“Blueprint”“MVC 架构”等。因为项目开始变大,概念跟上很重要。强调架构清晰可扩展的重要性,这也是为何前面小项目没有简单糅合而是最后专章来集成。
第21章 主线项目(中):多模态功能实现与集成
-
目标概述:本章在上一章框架基础上,填充各功能模块的具体实现逻辑,使多模态创作工作站具备实际可用的核心功能。我们将重点实现聊天/问答、内容创作、PPT生成和视觉问答四大功能,并让它们共享统一的用户界面和后台服务结构。读者将在此过程中看到跨模块协作的代码,以及如何在一个大型项目中管理提示词和配置。
-
聊天与知识问答集成:完善 Chat 模块。复用第5章 CLI 聊天机器人代码,实现与用户自由对话;同时融合第7章知识库QA功能,当检测到问题属于知识库范围时,引入知识库检索提供更准确答案。实现思路:在 chat.py 的 get_answer(question) 中,先调用知识检索 find_relevant() 判断是否有高相关资料,若有则构造"根据以下资料回答: ... [资料] 问: ..."这样的Prompt调用LLM回答cloud.google.com;若无则走普通对话模式调用LLM。提示AI生成相应代码,展示关键片段截图。处理上下文对话状态,可使用Session或简单全局缓存最近对话,实现连续对话记忆。
-
内容创作模块:完善 Creation 模块。集成第10章内容Bot逻辑,实现一个 /create 接口,接受参数如主题、风格等,返回生成的文章。将之前 outline_generator 和 content_generator 函数整合,或直接将提示词组装放在此模块处理。AI 生成代码后,我们优化它能返回段落分段的结果。截图展示Creation模块生成内容的核心Prompt和调用。
-
PPT生成模块:完善 Presentation 模块。复用第9章PPT助手代码。在 /presentation 接口实现: 接收演示主题或大纲 -> 调用内容生成逻辑(可能复用 Creation 模块的生成函数,只是生成结果格式不同)-> 调用 PPT 生成函数创建pptx文件 -> 返回下载链接或存储路径。AI 生成这部分代码,我们校对确保文件IO正确。截图展示生成 PPT 的部分日志或结果通知代码。由于无法直接在HTTP响应中发送二进制文件(除非前端下载),可以选择将 PPT 保存在服务器并提供下载URL,此细节向读者解释。
-
视觉问答模块:完善 Vision 模块。复用第12章视觉QA逻辑,实现 /vision 接口:接受上传图像和提问 -> 用以前的 analyze_image 获取描述 -> 将描述和问题交给LLM回答 -> 返回答案文本。AI 生成Flask处理文件上传的代码(使用 request.files 等),我们检查安全性如限制文件大小格式。截图展示Vision模块调用CV API以及返回答案的主要代码段。测试时可用一张示例图编码为base64发送,书中说明web界面将在下一章开发。
-
模块协作与共享:确保各模块共用的部分(如调用OpenAI API的key、通用Prompt片段)提取到配置或util中,例如 app/utils.py 里写一个 call_llm(prompt) 函数,各模块调用之。这样方便管理。AI 协助我们提炼,截图展示util函数的代码。
-
前后端联调:由于本章主要做后端,实现后可用curl等测试接口是否正常返回。但我们也初步规划前端如何调用。例如Chat模块将对应一个聊天页面,通过AJAX不断POST提问;Creation模块在前端提供表单提交获取文章;Vision模块需要前端支持文件上传。虽未实现前端,在此写出各接口的URL和使用方法供第22章用。
-
样例项目代码结构:更新列出现在完整实现的主要代码文件和重要函数:
-
app/chat.py:实现对话与知识库QA(列出函数 get_answer 等);
-
app/creation.py:实现内容生成(函数 generate_article 等);
-
app/presentation.py:实现PPT生成(函数 create_ppt 等,调用 utils.save_ppt 保存文件);
-
app/vision.py:实现图像问答(函数 answer_image_question 等);
-
app/utils.py:封装通用AI调用、日志、错误处理等。
-
测试与演示:通过在本地运行服务器,使用模拟请求测试每个模块:
-
Chat:终端下用curl发送 /chat 提问,观察JSON回答;
-
Creation:发送主题看看返回文章摘要片段;
-
Presentation:请求PPT生成,验证服务器创建了pptx文件;
-
Vision:发送测试图像,看回答合理性。
讲解每步测试结果,附部分终端IO截图证明功能已打通。当然,全功能需要第22章前端来友好展现,但此时后端引擎已经齐全。 -
术语解释:解释“接口(endpoint)”“HTTP请求/响应”等Web开发基本术语,确保读者理解前端通过URL触发我们实现的各功能。指出多模态集成后的复杂度上升,但因为模块化清晰,开发仍有条不紊,这是本书Vibe Coding方法论的胜利成果。
第22章 主线项目(下):前端实现与项目完成发布
-
目标概述:主线项目的最后冲刺。本章将为多模态创作工作站开发前端界面,使各功能模块以友好的方式呈现给用户,并实现与后端接口的交互。完成前端后,将工作站部署上线,提供给读者试用体验。本章标志着一个完整 AI 项目的诞生,也为全书画上圆满句号。
-
前端技术选型:考虑读者背景简单,我们选择轻量的前端方案,例如直接用 HTML/CSS/JavaScript 或简易前端框架(如Bootstrap 搭配 jQuery)开发。解释这样做易于AI生成代码且读者理解,不深陷前端复杂性。若有兴趣可日后替换为React等。
-
界面设计:描述各功能页面结构:
-
首页:导航链接到各子功能页面。
-
聊天页:对话窗口UI(类似简易聊天盒),左侧显示历史问答,底部输入框发送问题。
-
创作页:表单允许输入主题、选择风格的下拉框,提交后在页面下方显示生成的文章文本。
-
演示页:输入演示标题/大纲,多选是否包含图像(如简单扩展),提交后提供下载 PPT 链接。
-
视觉问答页:文件选择控件 + 输入问题文本,提交后显示图像缩略图和答案文本。
我们给AI的提示包含上述布局要求和用Bootstrap美化的期望,让其生成初步HTML。 -
生成前端代码:AI 分别生成 HTML模板和JavaScript。我们可以采用 Flask 模板渲染(Jinja2),但为简化理解,也可做纯静态HTML调用后端REST接口。选择后者更直观:前端JS用 fetch 请求我们的 Flask后端API。AI将生成若干HTML文件,各含基本结构和JS脚本。截图展示例如 chat.html 里的聊天框结构和用于调用 /chat 接口的 JS 代码(使用 fetch('/chat', {method:'POST', body:...}) 发送用户输入,收到JSON后更新对话框)。
-
集成与打磨:将AI生成的前端文件放入 templates/ 或 static/ 文件夹,并配置 Flask 使之可访问(在 main.py 添加静态文件路由或简单的 send_from_directory)。修改后端接口返回格式以便前端处理,例如统一返回 JSON,比如 {"answer": "...", "status": 0} 等。可能需要调整CORS或JSONify方法。对这些我们通过AI提示和自主修改解决,记录修正过程。
-
用户体验优化:加入一些前端提示和错误处理:如生成内容时加载动画、错误时弹出提示框。AI可以生成基础代码,我们整合。比如 creation.html 增加 “正在生成,请稍候…” 状态指示。Vision模块文件上传通过AJAX需特殊处理 formData,我们确保AI代码正确处理。
-
完成度检查:本阶段我们应完整运行前后端,打开每个页面尝试实际操作:
-
在聊天页输入问题,马上看到AI回复追加在对话框;
-
在创作页提交主题,几秒后文章段落出现在页面;
-
在演示页提交,片刻后出现下载PPT链接,点击可下载文件并打开检查;
-
在视觉页上传测试图片并提问,稍后看到回答文字。
如果条件允许,我们可截图网页界面的几个功能演示图promptingguide.ai——如聊天页面对话记录、内容页输出的文章、视觉页带有图片和答案等等,展示给读者。 -
部署上线:将完整项目部署。由于上章已经部署后端,这里只需确保静态前端也部署(Railway能托管简单静态文件;或使用Vercel托管前端并将API请求代理到Railway域名)。给出上线后访问URL示例,让读者真正能够体验(如果本书支持在线Demo,可提供二维码)。强调我们使用了环境变量存储API密钥,在部署平台正确配置,截图展示配置界面以教育读者安全意识。
-
项目展望:庆祝项目完成,鼓励读者进行更多扩展:例如增加语音输入(调用语音识别API)使之成为真正多模态(文本、图像、语音)工作站;加入用户登录管理保存创作记录等。点明AI开发世界的广阔前景。
-
术语解释:最后解释一些前端术语如“AJAX”“DOM”“CORS”,并回顾全书涉及的重要概念,巩固知识体系。
附录 :总结与进阶阅读
-
学习心得:总结 Vibe Coding 的学习之旅,强调读者已掌握从环境配置、提示工程、各类AI项目开发到测试部署的全流程技能。回顾最初Karpathy对vibe coding的展望:如今读者也能“只需给出想法,AI 即刻写出代码”ibm.com。指出虽然路上也要面对调试和优化,但相比传统编程,效率和门槛已有显著改变。
-
最佳实践清单:提供一份简短的清单,总结本书提到的重要实践:例如“始终验证AI生成代码的正确性promptingguide.ai”、“使用单元测试保障功能”、“善用AI工具的高级功能如自动重构和Guardrailssangeethasaravanan.medium.com”、“部署前做好Prompt调优A/B测试”等langfuse.com。
-
拓展阅读:推荐读者深入学习的方向和资料:
-
关于 Prompt Engineering,更系统的指南和社区(如 OpenAI 官方指南、PromptingGuide 等);
-
关注 AI 编程新工具(如 Replit Ghostwriter、Cursor agent 模式等)的动态,不断尝试builder.io;
-
深入了解AI模型原理:如果有兴趣编码,可补学Python基础、模型调用接口等,这会让与AI协作更高效。
-
安全与伦理方面的学习:AI编程虽快,但要注意数据隐私和模型偏见问题,推荐一些博文和规范守则。
-
读者故事:可能的话,引用一两个已经采用Vibe Coding模式成功转型的开发者案例,激励读者。比如某非科班背景的人用AI实现了自己的创业想法,或者某团队通过AI加速开发上市产品ibm.com。用真实故事结束,让读者满怀信心地投入自己的AI创造之路!
(全书完)
**参考资料:**IBM《What is vibe coding?》ibm.comibm.com、Google Cloud《Vibe Coding Explained》cloud.google.comcloud.google.comcloud.google.com、Simon Willison 博客simonwillison.net、Cursor 官方文档docs.cursor.com、Medium 技术文章等,上述内容为本书提供了理念和技术上的支撑。读者可据此进一步扩展学习,在AI辅助编程的新时代不断探索创新。