AI 编程 - 提示词技巧

1 引言:为什么要学提示词

AI 已成为编程助手(代码生成、重构、自动测试、文档生成、bug 定位等)的核心工具。要把 AI 用好,写清晰、高效的提示词比简单输入问题更重要。

好的提示词能:缩短开发周期、提高代码质量、减少反复试错、稳定输出风格与格式。

2 基础概念与提示词结构

提示词 prompt是你给 AI 的指令。一般包含几个核心要素,缺一不可:

  • 角色/身份(role) :告诉模型以什么身份回答(例如 你是资深后端工程师),明确专业视角。

  • 任务描述(task) :精准定义要完成的工作(例如 请实现一个分页查询接口),避免模糊表述。

  • 输入上下文(context):提供必要的代码片段、接口定义、数据库结构或样例数据,减少模型猜测。

  • 输出约束(format):规定输出语言、代码风格、函数签名、注释规范及是否需要测试用例。

  • 示例(examples):少样本(few-shot)示例,给模型示范期望的输出样式与逻辑。

  • 质量控制指令(constraints):明确性能要求(如时间复杂度)、依赖限制(禁止外部依赖)、输出边界(只给代码块)等。

提示词示例结构(伪模板)

text 复制代码
系统:你是一个经验丰富的 Python 工程师,回答需简洁且只输出代码块。
用户:
任务:根据下面的接口说明实现函数 `get_user_page`。
上下文:数据库表结构、示例输入/输出。
约束:用 SQLAlchemy,实现分页,返回 JSON 可序列化结果,不使用原生 SQL。
示例:输入 → 输出 示例(可选)。

请开始实现,并给出简单的单元测试。

3 通用模板与基础示例

以下是编程场景中高频使用的提示词模板,可直接复制修改复用,搭配示例帮你快速上手。

模板 A --- 生成函数(简单场景)

text 复制代码
系统:你是资深 {语言} 工程师,回答要直接给出可运行的代码和必要注释。
用户:任务:实现一个函数 `FUNC_NAME`,功能:{功能描述}。
上下文:如果需要,附上输入输出示例;依赖库:{依赖列表或无}。
约束:请不要打印额外文本,仅返回代码块。写 1-2 个单元测试。

示例(Python --- 字符串反转)

text 复制代码
系统:你是资深 Python 工程师,回答只包含代码块。
用户:任务:实现 `reverse_words(s: str) -> str`,把一句话中单词顺序翻转,保留单词内部顺序。
约束:写 pytest 单元测试。

期望输出:包含目标函数与 pytest 测试用例的可运行 Python 代码块。

模板 B --- 修复 Bug(定位与修复)

text 复制代码
系统:你是调试专家,回答先指出 bug 的位置与原因,然后给出修复后的完整代码和简短说明。
用户:有以下代码(贴出代码),表现为:{错误现象,例如抛异常、结果不对},请修复并给出测试用例。
约束:保留原有 API,尽量改动最小。

4 进阶技巧

掌握基础模板后,运用以下进阶技巧,可大幅提升提示词的精准度与输出质量。

4.1 分步式提示(Decompose)

将复杂任务拆解为多个小步骤,要求模型按流程执行并返回每步结果(适合交互式场景),减少一次性输出的错误率。

text 复制代码
1) 首先分析需求并列出实现步骤。
2) 给出伪代码。
3) 翻译为目标语言实现。
4) 给出测试用例并验证逻辑。

核心优势:便于逐步修正偏差,降低模型理解复杂需求的难度。

4.2 Few-shot(少样本示范)

提供 1-3 个高质量示例,示范输入输出逻辑与代码风格。示例需短小精悍,覆盖边界场景,帮助模型快速对齐预期。

4.3 约束输出格式(强制机器可解析)

若需 JSON、YAML、固定函数签名等结构化输出,需明确格式要求并给出 schema。例如:只返回 JSON 格式,键名包括 code、desc、test_case,其中 code 为完整代码块

4.4 定制"系统提示"与角色

在多轮对话或 API 调用中,将长期约束写入系统提示,固定回答风格。例如:你是遵循 PEP8 规范的 Python 工程师,所有代码必须包含类型注解与函数注释,不输出任何解释性文字

4.5 温度与随机性控制

  • 需稳定、可复现代码时,设置低温度(0--0.2),减少模型创造性输出。

  • 需灵感、多样化实现方案时,设置高温度(0.7+),鼓励模型探索不同思路。

4.6 工具/函数调用(模型支持时)

将可执行函数签名传给模型,让其返回结构化调用结果,便于后续自动化处理。例如,让模型生成符合特定函数格式的参数,直接对接业务代码。

4.7 提示重写(Prompt Tuning)

对同一任务尝试不同措辞,记录各版本输出效果,通过 A/B 测试筛选最稳健的提示词,形成个人模板库。

5 编程场景下的高质量提示示例

以下为高频编程场景的完整提示词,可直接复制使用,适配 FastAPI、Jest 等主流工具。

示例 1 --- 生成 REST 接口(Python + FastAPI)

text 复制代码
系统:你是资深后端工程师,熟悉 FastAPI、Pydantic 与 SQLAlchemy。回答只返回代码块,代码可直接运行。
用户:
任务:实现一个分页用户列表接口 `GET /users`,支持 `page` 和 `size` 参数,返回 JSON:{total:int, page:int, size:int, items:[{id:int,name:str,email:str}]}
上下文:数据库模型 User(id:int,name:str,email:str),使用 SQLAlchemy ORM。
约束:避免 N+1 查询,加入简单的输入验证,写一个 pytest 测试覆盖主要逻辑。

示例 2 --- 自动生成单元测试(JavaScript/Node)

text 复制代码
系统:你是资深 JS 测试工程师,熟悉 Jest。回答只返回代码块,包含测试用例与简短设计说明。
用户:这里是一个函数(贴代码),请为其生成 5 个边界覆盖的 Jest 单元测试,并解释每个测试用例的设计目的(一句话/个)。
约束:不要改变被测试函数的签名。

示例 3 --- 重构建议 + 代码输出

text 复制代码
系统:你是资深架构师,写作风格简洁,优先考虑代码可读性、扩展性与可维护性。
用户:请阅读下面代码(贴代码),提出 3 条重构建议并据此输出重构后的代码(只输出修改后的文件内容)。

6 提示词调试与版本管理

好的提示词是迭代出来的,通过科学的调试与版本管理,可持续优化输出质量。

  • 细粒度修改:每次仅调整一个维度(如约束条件、示例数量),便于定位优化点与回滚。

  • 记录与对比:用文档或 Git 保存提示词版本,同步记录对应输出效果(示例输入+模型输出),形成迭代日志。

  • 自动化测试:将模型输出纳入 CI 流程,检查是否符合函数签名、通过静态类型检查与单元测试。

  • 指标化评估:定义量化标准(如编译通过率、测试覆盖率、静态分析分数),客观评价提示词效果。

7 常见问题与解决方法(FAQ)

问:模型输出不稳定、每次结果不一样,怎么办?

答:设置低温度(0--0.2),固定系统提示与角色,增加少样本示例,同时强制输出格式(如固定函数结构),减少随机性。

问:AI 产生错误或不安全的代码,如何规避?

答:切勿直接将生成代码用于生产。需搭配自动化测试、静态检查、安全扫描,关键场景必须人工审核;同时在提示词中明确安全约束(如禁止 SQL 注入、避免硬编码密钥)。

问:模型写错 API 调用或出现拼写错误,如何修正?

答:提供精准的依赖库版本、API 文档片段作为上下文,补充正确的调用示例;用单元测试覆盖接口边界,强制模型对齐正确用法。

问:如何让模型只输出代码而不附加解释?

答:在系统提示中明确指令:只返回代码块,不输出任何解释性文字、注释外的说明,并在用户提示中重复强调,强化约束。

问:上下文窗口不足,无法传入完整代码/文档,怎么办?

答:仅保留最小可用上下文(核心代码片段、关键接口定义),冗余文档通过 RAG(检索增强生成)按需调取;用函数调用将大量上下文结构化,减少无效信息占用窗口。

结束语:学习路线与实践建议

提示词工程没有捷径,核心在于"实战+迭代",以下建议帮你快速提升:

  • 实战为王:覆盖多场景练习(生成代码、修 Bug、重构、写测试、生成文档),积累不同场景的模板。

  • 构建个人 Prompt 库:将高频任务的优质提示词版本化管理,标注适用场景与优化要点,便于复用。

  • 自动化评价:把模型输出纳入现有测试与 CI 流程,用量化指标替代主观判断,提升提示词稳定性。

  • 持续迭代:对核心业务场景的提示词做 A/B 测试,跟踪输出质量与效率,定期优化模板。

我的博客:https://itart.cn/blogs/2026/note/prompting-techniques.html

相关推荐
冰西瓜6002 小时前
国科大高级人工智能期末复习(五)行为主义
人工智能
zch不会敲代码2 小时前
机器学习之线性回归简单案例(代码逐句解释)
人工智能·机器学习·线性回归
UR的出不克2 小时前
基于PyTorch的MNIST手写数字识别系统 - 从零到实战
人工智能·python·数字识别
Das12 小时前
【机器学习】06_集成学习
人工智能·机器学习·集成学习
大江东去浪淘尽千古风流人物2 小时前
【Project Aria】Meta新一代的AR眼镜及其数据集
人工智能·嵌入式硬件·算法·性能优化·ar·dsp开发
Java后端的Ai之路2 小时前
【AI应用开发工程师】-分享Java 转 AI正确思路
java·开发语言·人工智能·java转行·程序员转型
Σίσυφος19002 小时前
视觉矩阵之 正交矩阵
人工智能·算法·矩阵
java1234_小锋2 小时前
【专辑】AI大模型应用开发入门-拥抱Hugging Face与Transformers生态 - 基于BERT文本分类模型微调
人工智能·深度学习·bert
网络安全研发随想2 小时前
主流大语言模型(LLM)的后训练技术
人工智能·机器学习·语言模型