☰
AI 编程实战:从提示词工程到高效协作准则
2026/10/7 16:29:40 网站建设 项目流程

前言:

在 AI 辅助编程日益普及的今天,如何高质量地与 AI 协作已成为开发者的核心技能。本文将通过正反两方面的案例,展示提示词质量对编程结果的决定性影响,并总结出一套实用的 AI 协作行为准则。

1. 提示词正确使用案例

本节展示了 3 个覆盖不同角色(开发、安全、运维)的正面案例,演示如何使用结构化提示词引导 AI 生成高质量代码。所有代码文件均由 AI 根据提示词自动创建和生成。

1.1 开发角色:猜数字游戏

作为开发者,不仅要保证核心功能,还要充分考虑各种异常情况(如非数字输入),确保代码健壮性。程序应“优雅”地处理异常而非直接崩溃。

AI 提示词示例:

角色:你是一位注重代码稳健性的 Python 开发者。
任务:编写一个猜数字游戏的脚本。
约束:

  • 随机生成 1~100 的整数;
  • 使用while循环持续猜测;
  • 必须处理非数字输入,禁止程序报错;
  • 猜对后必须输出 "Bingo" 并退出。

参考:使用input()获取用户输入;使用random.randint(1, 100)生成目标数字。
验收标准:输入非数字提示“无效”并继续循环;输入 50 时输出 "Bingo";输入 60 时提示 "Too big"。

AI 生成的代码如下 (guess_number.py):

1 import random 2 3 target = random.randint(1, 100) 4 5 while True: 6 user_input = input("请猜一个1-100的数字:") 7 try: 8 guess = int(user_input) 9 if guess == target: 10 print("Bingo!") 11 break 12 elif guess > target: 13 print("Too big") 14 else: 15 print("Too small") 16 except ValueError: 17 print("无效")

代码说明:

  • 使用random.randint(1, 100)随机生成目标数字。
  • 使用while True循环持续让用户猜测。
  • 使用try-except ValueError完美处理非数字输入,提示“无效”并继续循环。
  • 猜对后输出 "Bingo!" 并使用break退出。

1.2 安全角色:密码强度检测

密码安全是系统安全的第一道防线。我们需要编写一个脚本检测密码强度,帮助用户设置符合要求的密码。

AI 提示词示例:

角色:你是一位安全审计工程师。
任务:编写一个 Python 密码强度检测脚本。
约束:

  • 长度必须在 8~16 位;
  • 必须同时包含数字和字母;
  • 必须包含特殊字符(如 !@# $ %);
  • 满足所有条件输出 "Strong",否则输出 "Weak"。

参考:使用str.isdigit(),str.isalpha()检测字符类型。
验收标准:输入 "abc123!x" 输出 'Strong';输入 "abcdefg" 输出 'Weak' (缺数字和特殊字符)。

AI 生成的代码如下 (password_checker.py):

1 password = input("请输入密码:") 2 3 has_digit = any(c.isdigit() for c in password) 4 has_alpha = any(c.isalpha() for c in password) 5 has_special = any(c in "!@#$%" for c in password) 6 length_ok = 8 <= len(password) <= 16 7 8 if has_digit and has_alpha and has_special and length_ok: 9 print("Strong") 10 else: 11 print("Weak")

代码说明:

  • 检查密码长度是否在 8~16 位。
  • 使用str.isdigit()和str.isalpha()检查是否包含数字和字母。
  • 使用自定义集合检查是否包含特殊字符。
  • 只有所有条件满足才输出 "Strong"。

1.3 运维角色:端口存活检测

在运维工作中,及时发现服务器端口异常是保障稳定运行的关键。

AI 提示词示例:

角色:你是一位资深运维开发工程师。
任务:编写检测 localhost 80 端口存活的脚本。
约束:

  • 超时设置为 1s;
  • 如果连接失败,必须重试 2 次;
  • 最终成功输出 "UP",失败输出 "DOWN";
  • 使用socket库。

验收标准:端口存活时输出 "UP";端口不可达时重试后输出 "DOWN"。

AI 生成的代码如下 (port_check.py):

1 import socket 2 3 def check_port(host, port, timeout=1, max_retries=2): 4 attempts = max_retries + 1 5 6 for attempt in range(attempts): 7 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8 sock.settimeout(timeout) 9 10 try: 11 result = sock.connect_ex((host, port)) 12 if result == 0: 13 sock.close() 14 return True 15 finally: 16 sock.close() 17 18 return False 19 20 host = 'localhost' 21 port = 80 22 23 if check_port(host, port): 24 print("UP") 25 else: 26 print("DOWN")

代码说明:

  • 使用socket库检测端口。
  • 超时设置为 1s (sock.settimeout(1))。
  • 使用connect_ex进行检测。
  • 连接失败时重试 2 次(共尝试 3 次)。

2. 提示词使用中的常见问题

根据日常工作,我们可以总结出 AI 编程中常见的四个“坑”及其改进方法。

2.1 需求不明确

问题描述:提示词过于模糊,导致 AI 做出大量假设。例如只说“写一个用户注册 API”,AI 会自行决定框架、字段和验证规则,生成的代码往往不符合实际预期。
改进方案:提供完整上下文,包括技术栈(Flask/FastAPI)、接口路径、请求方法、字段定义、验证规则、返回格式及异常处理。

2.2 上下文缺失

问题描述:缺乏量化基线和架构约束。例如修复 N+1 查询问题时,如果不给出“性能提升目标”或“禁止修改表结构”的约束,AI 可能会给出无法落地的建议。
改进方案:建立“项目上下文文档”,包含技术栈、架构约束、数据库 Schema 等。

表 1:正反提示词在本案例中的作用

要素在本案例中的作用如果缺失会怎样
项目背景锁定技术栈和架构风格,AI 会自动遵循项目规范AI 可能引入无关依赖或错误模式
约束条件明确定义优化边界和禁区AI 可能引入新缺陷,或修改不安全的表
验收标准3 条中的验收标准明确,AI 能判断是否有有效的依据只能让人工一审

2.3 异常处理不完善

问题描述:忽略边界条件导致生产事故。例如批量发送短信任务,如果没有考虑服务重启、并发竞争、重试机制等,极易导致重复发送或消息丢失。
改进方案:在提示词中显式列出异常场景(幂等性、并发锁、超时重试)。

表 2:缺少边界条件可能引发的事故

缺少的边界条件多 worker 部署时可能的故障可能引发的事故
缺少幂等处理多个 worker 会重复发送同一条短信重复扣短信费
缺少并发控制两条短信同时发送,状态更新冲突重复发送短信
缺少重试机制网络抖动导致部分 API 调用失败,消息永久丢失短信漏发
缺少优雅关闭进程被 kill 时正在处理的短信被丢弃大量未发送
缺少超时控制某条短信阻塞整个 Celery worker 进程队列积压

2.4 需求描述不完整

问题描述:“挤牙膏”式的迭代。用户像切香肠一样一点点提需求(先写基础版 -> 加过期处理 -> 加刷新逻辑...),导致 AI 每次都在旧代码上打补丁,最终代码结构混乱,难以维护。
改进方案:一次性给出完整需求。利用“项目上下文文档”避免重复描述公共信息,专注于当前任务的完整逻辑。

表 3:五步迭代 vs 一步到位对比

维度五步迭代的解决方策一次性给出的完整解决方案
代码结构每轮都在上一轮基础上打补丁,层层嵌套直接设计统一的 Token 类,API 一开始就组织好
测试覆盖率每轮只测新增功能,老功能可能退化完整设计测试用例,首轮就覆盖所有场景
格式规范第一轮不规范,后续几轮不一致开始就统一命名和返回值格式
调试难度出错时要排查是哪一轮引入的问题出问题就是整体设计问题,定位更快

3. 与 AI 协作的行为准则

为了最大化 AI 的效能,建议遵循以下三条核心准则。

3.1 验收优先:先定义正确标准

将 TDD(测试驱动开发)思想引入 AI 协作。先写验收标准,再让 AI 写代码。

  • 反例:“帮我写个登录功能”。
  • 正例:“帮我实现登录,要求:密码错误返回 401,成功返回 JWT Token,Token 有效期 2 小时”。
    这样 AI 生成的代码天然符合预期,且方便验证。

3.2 小步推进:一次只做一件事

把大任务拆小,降低试错成本。

  • 第一轮:先实现基础功能。
  • 第二轮:加上异常处理。
  • 第三轮:完善错误码和日志。
    每完成一个任务立即测试验证,确认没问题再进入下一个。

3.3 善用版本控制:Git 是你可靠的恢复工具

在使用 AI 编程时,Git 不仅仅是代码管理工具,更是你的“后悔药”。

  1. 每个新功能从干净的 Git 状态开始:确保git status无未提交变更,随时可以通过git checkout .一键还原。
  2. 一个小功能点一次提交:不要等到完成所有功能再提交。对于 AI 生成的每个独立可工作的部分,都应当及时提交。
  3. 遇到问题及时重置:如果 AI 的多次修改让代码越来越复杂,不要继续“修补”。使用git reset --hard HEAD回到已知的干净状态,开启新对话,重新用完整的提示词来解决。
  4. 避免累积问题:多次失败的尝试会产生一层又一层的修补代码。当你最终找到解决方案时,先回滚再干净地实现,而不是在失败代码上继续修改。

3.4 及时验证,不要盲目信任

在 AI 修改了代码后,不要立刻开始下一个任务,而是先测试验证当前的修改是否正确。

正确的做法是对于 AI 生成的代码一定要及时验证,如图 1 所示。这种“修改一步验证一步”的工作节奏,能够将问题的解决成本降到最低。

(注:修改文件 -> 运行测试 -> 测试通过? -> 是:继续下一个 / 否:解决问题)


希望这篇整理后的博客内容对你有所帮助!如果有具体的代码需要补充或调整,欢迎随时告诉我。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询