模块7:编程与技术场景

难度:⭐⭐⭐⭐ 高级 | 建议时长:4-5小时

目标:掌握代码生成、审查、调试、重构的专业提示词,以及 API 调用和 AI 辅助开发工作流


7.1 代码生成

基础:直接生成

用 Python 实现一个函数:
- 功能:输入字符串列表,返回最长的回文字符串
- 函数名:find_longest_palindrome
- 要求:有类型提示、详细中文注释、时间复杂度尽量低
- 附带 3 个测试用例

进阶:带约束的代码生成

用 Python 写一个日志管理工具类:

功能需求:
1. 写入日志到文件
2. 支持分级(DEBUG/INFO/WARNING/ERROR)
3. 日志文件按日期自动切割
4. 设置最大保留天数

技术约束:
- 仅用 Python 标准库
- 线程安全
- 兼容 Python 3.8+

代码规范:
- Google 风格 docstring
- 中文注释
- 所有公开方法有类型提示

输出:完整可运行代码 + 使用示例

技巧:约束越明确,生成的代码越接近你的项目规范。 不说约束,AI 会按它认为的”最佳实践”来,可能跟你项目风格完全不同。


7.2 代码审查

请审查以下代码,从这些角度给出建议:

1. Bug检查:逻辑错误或边界情况遗漏
2. 性能:有没有可优化的地方
3. 安全性:SQL注入、XSS 等安全隐患
4. 可读性:命名、结构、注释
5. 最佳实践:是否符合社区规范

输出格式:
| 行号 | 问题类型 | 严重程度 | 问题描述 | 改进建议 |

代码:
"""
[粘贴你的代码]
"""

技巧:让 AI 用表格输出审查结果,方便你逐条跟进。 如果代码很长,分文件/分函数审查效果更好。


7.3 Bug 调试

我遇到以下错误,请帮我分析:

错误信息:
"""
[粘贴完整的错误堆栈]
"""

相关代码:
"""
[粘贴出错的代码]
"""

环境:Python 3.11 / macOS / [相关依赖版本]

请按以下步骤分析:
1. 错误原因(根因是什么)
2. 修复方案(给出修改后的代码)
3. 如何避免同类问题(预防建议)

技巧:错误堆栈一定要贴完整,不要只贴最后一行。 AI 需要看到完整的调用链才能准确定位问题。


7.4 代码重构

请重构以下代码:

重构目标:
1. 提高可读性(当前逻辑太乱)
2. 遵循单一职责原则
3. 增加错误处理
4. 提取可复用的工具函数

约束:
- 保持外部接口不变(函数名和参数不变)
- 功能完全一致
- 用了设计模式要说明是什么、为什么用

原始代码:
"""
[粘贴代码]
"""

输出:
1. 重构后的完整代码
2. 改动说明(做了什么、为什么)
3. 前后对比(哪些地方改善了)

7.5 API 调用与 Function Calling

什么是 Function Calling?

Function Calling = 让 AI 不只是”说话”,还能”动手”。

类比:
普通 AI → 你问它天气,它说"我没法查实时天气"
Function Calling → 你问它天气,它调用天气 API 获取真实数据返回给你

没有 Function Calling:AI 只能动嘴
有了 Function Calling:AI 能动手操作外部工具

AI 怎么调用函数的?

你发送:
  "北京明天天气怎么样?"

AI 判断:
  "这个问题需要查天气,我有一个 get_weather 函数可以用"

AI 返回(不是文字,是一个函数调用请求):
  { "function": "get_weather", "arguments": { "city": "北京", "date": "明天" } }

你的程序:
  接收到调用请求 → 执行 get_weather("北京", "明天") → 获取结果

你把结果发回给 AI:
  { "temperature": "15-22℃", "weather": "小雨" }

AI 最终回复:
  "北京明天小雨,气温 15-22℃,建议带伞出门。"

设计函数描述的提示词

当你用 API 接入 Function Calling 时,需要用自然语言描述你的函数:

{
  "name": "search_products",
  "description": "在商品数据库中搜索商品。当用户询问商品信息、
    价格、库存时调用此函数。",
  "parameters": {
    "type": "object",
    "properties": {
      "keyword": {
        "type": "string",
        "description": "搜索关键词,如商品名称或类别"
      },
      "max_price": {
        "type": "number",
        "description": "价格上限(元),不填则不限"
      }
    },
    "required": ["keyword"]
  }
}

关键:函数的 description 写得好不好,直接决定 AI 能不能在正确的时候调用它。 就像给新员工的岗位说明书——写得越清楚,他越知道什么情况该做什么。


7.6 AI 辅助开发工作流

日常开发中的 AI 使用模式

模式1:解释 → 修改 → 验证
  "先解释这段代码的作用" → "把 XX 改成 YY" → "检查修改后有没有问题"

模式2:需求 → 方案 → 代码 → 测试
  "我要实现XX功能" → "给出2-3种方案" → "用方案A写代码" → "写单元测试"

模式3:报错 → 定位 → 修复 → 防范
  "分析这个报错" → "定位根因" → "给出修复代码" → "怎么避免再犯"

高效使用 AI 写代码的经验

1. 先给上下文,再提需求
   ❌ "写一个用户注册接口"
   ✅ "我的项目用 FastAPI + SQLAlchemy + PostgreSQL,
      已有 User 模型。请写一个用户注册接口,
      要求校验邮箱格式、密码强度,用 bcrypt 加密"

2. 代码改动要指定范围
   ❌ "优化一下这个项目"
   ✅ "只优化 utils.py 中的 parse_date 函数,
      目前它处理不了 '2024年1月1日' 这种中文日期格式"

3. 让 AI 先解释再动手
   "先解释这段代码的作用,确认你理解正确后再修改"
   → 避免 AI 误解意图导致改错

4. 要求输出完整可运行的代码
   "输出完整文件,不要省略任何部分,不要用 '...' 代替"
   → 避免得到残缺代码

7.7 动手练习

练习1:代码生成

为你最常用的编程语言设计一个”代码生成万能模板”,包含功能需求、技术约束、代码规范、输出要求。

练习2:调试模板

设计一个”万能调试提示词”,要求能覆盖不同语言和错误类型。

练习3:开发工作流

设计一条”需求分析 → 方案设计 → 代码实现 → 测试验证”的提示词链。


本章小结

✅ 代码生成:功能需求 + 技术约束 + 代码规范 = 高质量代码
✅ 代码审查:多角度表格化输出,方便逐条跟进
✅ Bug调试:完整堆栈 + 相关代码 + 环境信息
✅ 代码重构:明确目标,保持接口不变
✅ Function Calling:让 AI 不只动嘴还能动手
✅ 开发工作流:先给上下文,指定范围,要求完整输出

下一步08_提示词模板与框架.md