)
引言为什么你写的PromptAI总给不出能用的代码“帮我写个爬虫”“帮我处理一下Excel”“帮我写个自动发邮件的脚本”——这些是大多数人第一次向AI求助时的原话。AI确实能写但写出来的代码大概率跑不通或者跑通了但结果不对。问题不在AI在于需求描述太模糊。就好比你跟一个实习生说“帮我整理一下数据”对方根本不知道你想要什么格式、按什么规则整理、异常情况怎么处理。Prompt工程听起来很高大上但对于写代码这件事核心就一句话把模糊的需求翻译成结构化的描述。接下来我会用一套“五维度法”帮你建立这个习惯然后给出三个高频场景的即用模板最后教你如何让AI帮你自动调试。第一章需求描述的“五维度法”——好Prompt的底层逻辑每次向AI提代码需求之前脑子里先过一遍这五个维度。这不是什么理论框架而是我踩了几十次坑之后总结出来的“最少必要信息”清单。维度一我要做什么用一句话说清楚任务目标但不要只说“做什么”要说“对什么数据、做什么操作、产出什么结果”。❌ “帮我处理订单数据”✅ “读取Excel里的订单数据按客户名称分组统计每个客户的订单总金额和订单数量”差距在哪里后者明确了三个要素输入订单数据、操作分组统计、输出每个客户的汇总。维度二输入长什么样这是最容易被忽略的维度。AI不知道你的Excel有几列、列名叫什么、数据格式是什么。你需要告诉它文件路径和格式Excel/CSV/JSON表结构有哪些列每列的数据类型是什么数据量级几百行还是几十万行这决定了用什么方案一个经典的翻车现场你让AI按“客户名称”分组但Excel里的列名实际叫“客户姓名”或者“Client Name”。AI老老实实写了df[客户名称]你一运行就报KeyError。这个问题在第三章会详细讲怎么解决但更好的做法是在需求阶段就描述清楚。维度三输出要什么输出格式要具体到“文件名、保存路径、包含哪些列、排序规则”。❌ “把结果保存到新文件”✅ “生成一个新的Excel文件保存到桌面文件名为‘客户汇总.xlsx’包含‘客户名称’‘订单总金额’‘订单数量’三列按订单总金额从高到低排序”维度四运行环境这个维度决定了AI能不能给出“即拿即用”的代码。你至少需要说明两点Python版本3.8还是3.10有些语法和库不兼容可用库只能用内置库还是可以装pandas如果是公司内网环境可能只能装特定版本的库不要小看这个信息。有一次我让AI写了一个脚本它用了pandas的某个新特性结果服务器上的pandas版本太老不支持排查了半天才发现是版本问题。维度五边界条件与异常处理这是“代码能跑通”和“代码能稳定运行三个月”之间的分水岭。你需要提前想清楚数据缺失怎么办金额为空按0处理还是跳过该行数据格式异常怎么办日期列混入了文本怎么办重复数据怎么办去重还是保留极端情况怎么办数据量为0时脚本会不会崩80%的线上bug不是逻辑写错了而是边界条件没覆盖。你提前把这些问题想清楚并写进PromptAI生成的代码就会自带防御性处理。五维度模板把上面五个维度整合成一个固定的Prompt结构用Python写一个脚本具体要求如下 【任务描述】[一句话说清楚要做什么] 【输入】[文件路径/数据来源表结构列名和数据类型] 【输出】[输出文件路径和格式包含哪些列排序规则] 【环境】Python版本可用库 【边界处理】[数据缺失、格式异常、重复数据等情况的处理方式]我建议你把这段模板存到备忘录里每次提需求之前打开填空。填完这五个维度你的Prompt已经从一句模糊的话变成了工程师级别的需求文档AI大概率能一版就给出可用的代码。第二章三大高频场景实战模板——即拿即用上一章讲了“五维度法”的底层逻辑这一章直接给模板。我把数据处理、文件批量操作、定时自动化任务三个场景分别做成填空式模板你只需要替换中括号里的内容。场景一数据处理典型需求合并多个Excel/CSV、清洗数据、分组统计、生成报表、数据透视。实战模板用Python写一个数据处理脚本具体要求如下 【任务描述】[例如合并多个结构相同的Excel文件按“部门”列分组对“销售额”求和同时计算每个部门的订单数量] 【输入】文件夹路径[填写路径]包含多个Excel文件每个文件第一行是表头包含的列有[列出所有列名] 【输出】生成一个新Excel文件保存到[填写输出路径]文件名为[填写文件名]包含以下列[列出输出列名]按[排序规则]排序 【边界处理】 [列名]为空时按0处理 部门名称前后有空格自动去除strip 重复行按[某列]去重保留第一条 如果输入文件夹为空打印提示并退出不报错 【环境】Python 3.10仅用pandas和openpyxl真实案例我上个月帮一个运营同事用这个模板让AI写了一个合并12个月销售数据的脚本。输入是12个Excel文件分散在不同文件夹里表头还不完全一致——有的叫“销售金额”有的叫“金额”有的叫“销售额”。关键Prompt补充“表头可能不一致帮我写一段自动匹配逻辑如果列名包含‘金额’或‘销售’关键字就认为是目标列。匹配不到关键字的列保留原样最后把所有列合并输出并额外输出一列标注‘数据来源文件’同时在脚本末尾打印出哪些列是自动匹配的哪些列没有匹配到。”AI生成的代码跑一遍就通了12个文件、总共3万多行数据合并耗时不到5秒。这个同事后来跟我说以前她手动合并这些文件要花一整个下午现在泡杯咖啡的功夫就搞定了。场景二文件批量操作典型需求批量重命名、按规则分类整理、提取特定格式文件、批量压缩/解压、清理重复文件。实战模板用Python写一个文件操作脚本具体要求如下 【任务描述】[例如将该文件夹下所有PDF文件按文件名中的日期重命名为“YYYY-MM-DD-原名.pdf”格式] 【目标文件夹】[填写路径] 【匹配规则】[例如只处理文件名以“报告”开头、扩展名为.pdf的文件忽略子文件夹] 【安全要求】 操作前先打印所有将要修改的文件名列表改前名 → 改后名让我确认后再执行 如果目标文件名已存在自动在文件名末尾加序号不要覆盖原文件 所有操作记录写入日志文件方便回溯 【环境】Python 3.10仅用os、re、shutil标准库不额外安装第三方库一个容易被忽略的细节文件操作是最容易“翻车”的场景——因为很多操作不可逆。所以每次写文件操作脚本必须在Prompt里加一句安全确认机制“所有删除/重命名/移动操作先打印预览列表要我输入‘yes’确认后才真正执行。”这个习惯能避免无数次“AI改完文件名我找不到原文件”的惨剧。我见过最惨的一个案例是有人让AI写了一个“清理重复文件”的脚本结果AI把原文件和副本一起删了因为匹配逻辑写得太宽泛。如果加了预览确认步骤这个问题在正式执行前就能发现。场景三定时自动化任务典型需求每天定时发送邮件报表、定时备份数据库、定时抓取数据并写入表格、定时清理过期文件。实战模板用Python写一个定时任务脚本具体要求如下 【任务描述】[例如每天上午9点读取数据库中的昨日订单数据生成汇总报表发送邮件到指定邮箱] 【执行频率】[例如每周一到周五上午9:00执行周末跳过] 【子任务详情】 任务1 - 数据读取[描述数据来源和查询逻辑] 任务2 - 报表生成[描述报表格式和输出位置] 任务3 - 邮件发送[描述邮件配置包括发件箱、收件箱、主题、正文模板] 【异常处理】 如果数据库连接失败重试3次每次间隔30秒3次都失败则发送告警邮件 如果邮件发送失败将失败记录写入本地日志文件第二天重试发送昨天的报表 脚本运行过程中任何未捕获的异常写入日志并发送告警邮件 【环境】Python 3.10使用schedule库做定时调度、smtplib发邮件、pandas处理数据让脚本持久运行的小技巧定时脚本写完很多人发现一关终端窗口脚本就停了。在Prompt里补一句“脚本需要长期在后台运行请说明如何用nohup启动并给出完整的启动命令。”AI会直接给你生成类似nohup python script.py output.log 21 这样的命令你不用自己去查nohup的用法。更进一步如果你用的是Windows服务器可以要求AI同时给出Windows任务计划程序的配置步骤。第三章报错不是敌人——调试的正确姿势代码拿到了运行了然后终端弹出一堆红色报错。这是最劝退零基础用户的环节。传统做法是复制报错信息→百度搜→看半天CSDN→各种说法相互矛盾→越看越懵→放弃。但AI最擅长的事之一就是读报错。你不需要理解报错只需要做好一个“二传手”。核心原则把报错信息完整复制和代码一起丢回给AI报错信息里包含了三个关键信息错误类型KeyError/TypeError/FileNotFoundError等、错误位置第几行代码、错误原因具体哪个变量或操作出了问题。AI能精准读取这三层信息快速定位根因。常见报错类型及应对KeyError键错误最常见的一类。通常是因为列名写错了或者Excel里根本没有这个列。你看到KeyError: 客户名称AI会告诉你Excel文件里没有叫“客户名称”的列。可能是列名写错了或者有多余空格。建议先打印列名看一下print(df.columns.tolist())然后把打印出的实际列名发给AI它就能帮你修正代码。FileNotFoundError文件未找到路径写错了或者文件名拼错了。你看到FileNotFoundError: [Errno 2] No such file or directory: 订单.xlsxAI会告诉你脚本在哪个目录下找文件帮你加一段代码先打印当前工作目录然后列出该目录下所有文件方便你确认文件是否在正确位置。TypeError/ValueError类型或值错误数据类型不匹配比如把字符串当数字做运算。你看到TypeError: unsupported operand type(s) for : int and strAI会告诉你金额列里有非数字内容比如“无”“-”或者文本某一行混入了字符串。帮你加一段代码先检查金额列的数据类型把非数字的值找出来并处理。SyntaxError语法错误代码本身写错了通常是AI生成代码时出了小bug。你看到SyntaxError: invalid syntax直接把报错行和前后几行代码一起发给AI它通常能秒修。报错处理的标准Prompt我运行了你给的代码报了以下错误 [完整复制报错信息包括Traceback全部内容] 请分析错误原因并给出修改后的完整代码。就是这么简单。你不需要自己去分析不需要去猜把报错信息完整复制粘贴就好。AI会帮你做剩下的所有事。第四章编译通过 ≠ 结果正确——让AI帮你写验证逻辑代码跑通了终端没有红色报错输出文件也生成了。但你打开一看总觉得哪里不对——汇总金额是0数据行数对不上排序结果看起来怪怪的代码没报错不代表结果正确。这是很多零基础用户会踩的第二个坑。在写代码时就要求AI附带验证逻辑最好的做法不是跑完再检查而是在第一次提需求时就要求AI在脚本末尾附带验证逻辑。在Prompt里加一句“脚本末尾请加上验证逻辑用3-5个简单的测试用例检查输出结果是否正确。如果验证不通过打印具体的错误信息。”AI会帮你生成类似这样的检查代码# 验证逻辑 print(开始验证...) 测试用例1已知客户A有3条记录金额分别为100、200、空值 预期汇总金额应为300 customer_a result[result[客户名称] 客户A] expected_amount 300 actual_amount customer_a[总金额].values[0] if actual_amount expected_amount: print(✅ 用例1通过客户A汇总金额正确) else: print(f❌ 用例1失败预期{expected_amount}实际{actual_amount}) 测试用例2输出行数应等于不重复客户数 expected_rows len(df[客户名称].unique()) actual_rows len(result) if actual_rows expected_rows: print(f✅ 用例2通过输出行数{actual_rows}等于预期{expected_rows}) else: print(f❌ 用例2失败输出{actual_rows}行预期{expected_rows}行) 测试用例3汇总金额总和应等于原始金额总和 expected_total df[金额].fillna(0).sum() actual_total result[总金额].sum() if abs(actual_total - expected_total) 0.01: print(✅ 用例3通过汇总金额总和一致) else: print(f❌ 用例3失败预期总和{expected_total}实际总和{actual_total}) print(验证完成。)你只需要在运行脚本后看一眼输出全部打✅就说明结果正确看到❌就把验证失败的输出发给AI让它定位问题。交叉验证用两种方法算同一个结果对于更复杂的数据处理可以要求AI做交叉验证——用两种不同的方式计算同一个结果看是否一致。比如分组求和可以同时用pandas的groupby和pivot_table各算一遍两遍结果不一致就报警。这种“双重校验”机制即便你不懂代码逻辑也能确保输出的可靠性。第五章进阶玩法——让AI学会自己调试前面几章说的流程本质上还是你在帮AI跑腿——运行代码、看报错、复制粘贴、等AI修复、再运行。来回三四次是常态虽然比自己写代码快得多但有没有更省事的办法答案是让AI自己完成这个循环。核心思路给AI三样权限执行权限AI能运行你写的Python脚本读取权限AI能读到终端输出的报错信息修改权限AI能修改它刚才生成的代码有了这三样权限AI就能实现“写代码→运行→报错→读报错→改代码→再运行→直到成功”的自动化闭环。实操方案方案一使用支持Terminal的AI编程工具如果你用的是Cursor、Windsurf或类似支持终端操作的AI编程工具可以直接告诉它“运行这个脚本如果报错自己读错误信息、自己改代码重新运行直到成功为止。最多尝试5轮。每轮都把修改的内容和原因打印出来方便我了解你做了什么。”AI会自己执行python script.py读到报错后分析原因、修复代码再执行再修复直到跑通。你只需要在最后看一眼结果。中间如果AI改了5轮还没跑通它会停下来告诉你卡在哪里了这时候你再介入。方案二使用普通对话式AI手动模拟循环如果你用的是ChatGPT网页版或类似工具没法直接给AI执行权限可以手动模拟这个循环。但有一个技巧能大幅减少来回次数把可能出错的场景提前告诉AI让它生成“防御性代码”。“读取Excel时如果文件不存在打印提示并退出不要直接报错如果列名不匹配打印出实际列名让用户确认如果金额列有非数字内容跳过该行并记录异常行号到日志文件如果数据量为0打印提示并退出。所有异常都要有明确的文字提示方便用户定位问题。”这样AI生成的代码自带异常处理80%的常见问题在第一版就能被兜住不需要来回调试。剩下的20%才是真正需要你当二传手的场景。防御性代码的价值防御性代码的本质是把“运行时异常”转化为“可读的提示信息”。同样是遇到问题普通代码给你一个KeyError: 客户名称防御性代码给你的提示是“检测到Excel文件中没有‘客户名称’列。当前文件的实际列名为[订单号, 客户姓名, 金额, 日期]。请检查列名是否拼写错误或修改脚本中的目标列名。”你看后者完全不需要你懂代码看一眼就知道问题出在哪、怎么改。这就是防御性编程在AI辅助场景下的独特价值——它把调试成本从“需要懂技术”降到了“能读中文就行”。第六章综合案例——从零到交付的完整实战这一章我会用一个真实案例把前面所有章节串起来让你看到完整的“从需求到交付”流程。需求背景我帮一个做电商运营的朋友做过一个“每日竞品价格监控”的小工具。需求是这样的每天上午10点自动抓取三个竞品网站的商品价格把数据存入Excel按日期归档如果某个商品价格波动超过5%自动发邮件提醒每周一自动生成一份上周的价格趋势周报这是一个典型的“多场景组合”需求涉及爬虫数据获取、数据处理清洗和比对、文件操作Excel归档、定时任务每天执行和邮件发送告警通知。第一步拆解需求套用模板我把这个需求拆成四个子任务分别套用第二章的模板子任务1 - 爬虫脚本使用场景三模板定时任务从三个网站抓取商品名称和价格保存为CSV文件。子任务2 - 数据处理脚本使用场景一模板读取当天的CSV和昨天的CSV对比价格变化计算波动幅度标记波动超过5%的商品。子任务3 - 邮件告警使用场景三模板的邮件模块将波动商品列表生成为邮件正文发送给指定邮箱。子任务4 - 周报生成使用场景一模板合并本周7天的数据生成趋势图表和汇总报表。第二步逐个子任务生成代码每个子任务都用五维度法写PromptAI逐一生成了代码。期间遇到两次报错第一次是爬虫脚本返回了403网站反爬。我把报错信息丢回给AI它给加了User-Agent和随机请求间隔还加了重试机制。第二次是Excel写入时日期格式乱了2024年1月5日被写成了2024/1/5导致后续的日期匹配失败。我把报错和代码一起丢给AI它加了统一的日期格式化处理。第三步加入验证逻辑按照第四章的方法我在每个子任务的Prompt里都要求了验证逻辑爬虫脚本验证是否成功抓取到三个网站的数据数据行数是否大于0数据处理脚本验证波动计算的正确性用几个已知价格的商品做测试用例邮件脚本验证邮件是否发送成功失败则记录日志周报脚本验证7天数据是否完整缺失的日期标注出来第四步组装和定时化把四个子任务串联成一个主脚本用schedule库做定时调度。最后的目录结构长这样price_monitor/ ├── main.py # 主调度脚本 ├── crawler.py # 爬虫模块 ├── data_process.py # 数据处理模块 ├── mail_sender.py # 邮件模块 ├── weekly_report.py # 周报模块 ├── data/ # 数据存储目录 │ ├── 2024-01-01.csv │ ├── 2024-01-02.csv │ └── ... ├── logs/ # 日志目录 └── reports/ # 周报输出目录全程没有写一行代码但最终脚本稳定运行了三个月直到竞品网站改版才需要调整。这个案例的关键启示复杂需求先拆解不要试图用一个Prompt覆盖所有功能拆成独立的子任务每个子任务独立生成、独立调试最后再组装。模板是加速器如果没有第二章的模板每个子任务我都需要从头想Prompt结构效率会低很多。验证逻辑是安全网不算验证逻辑只看“代码跑通了”我可能会漏掉很多隐蔽的数据错误。验证逻辑帮我在上线前发现并修复了至少3个问题。防御性代码是护城河脚本在三个月里遇到过网站宕机、数据为空、网络超时等各种异常但因为提前要求了防御性处理这些异常都被优雅地处理了没有造成数据丢失或误报。结尾总结你不需要学会编程但需要学会“指挥AI编程”回顾整篇文章我把AI辅助编程的核心能力拆成了三层第一层需求翻译能力第一章——把模糊的业务需求翻译成结构化的五维度描述。这是最基础也最重要的能力决定了AI能不能写出“对”的代码。第二层场景模板能力第二章——把高频场景固化成填空式模板减少重复思考提高需求描述效率。模板不是限制而是加速器。第三层调试协作能力第三、四、五章——把报错当输入把验证当标配把防御性代码当习惯。这一层决定了你能不能从“AI帮我写代码”进化到“AI帮我把代码调到能跑通”。这三层能力没有一层需要你懂Python语法。你不需要理解groupby的原理不需要知道try-except的语法甚至不需要会写print。你只需要知道需求该怎么描述、报错该怎么传递、结果该怎么验证。说到底AI辅助编程不是让你“学会编程”而是让你“学会指挥AI编程”。而指挥这件事门槛比你想象的低得多。