Prompt Engineering 实战:从"写长文"到"写好提示词"
刚开始接触 AI 时有个误解,Prompt 越长越好描述越详细越好。结果 AI 经常忽略关键信息,生成的内容偏离主题,上下文消耗巨大。经过几个月的摸索才明白,好 Prompt 不是写长文而是写好提示词。
曾写过一个五百字的 Prompt,请帮忙写一个登录页面。这个页面需要有用户名输入框和密码输入框,还有登录按钮。样式要美观符合现代设计风格。输入框要有验证功能,比如不能为空密码要符合复杂度要求。还要有记住密码的选项。页面要响应式能在手机和电脑上正常显示。按钮要有点击效果比如按下时变色。错误信息要在输入框下方显示红色文字。整个页面的背景色是白色输入框边框是灰色。字体大小是十六像素。等等。
AI 生成的页面有很多没提到的功能,缺少特别强调的验证逻辑,样式和描述的也不一致。问题在于信息密度低,五百字里真正重要的信息只有五十字,AI 不知道该关注什么。优先级混乱,验证逻辑是最关心的但在文中不起眼,样式细节占了大量篇幅。上下文浪费,五百字的 Prompt 留给 AI 回答的空间很少。
吸取教训后开始写精确的 Prompt,页面结构 div.container 大于 form.login-form 大于 div.input-group 大于 input.username-input type 等于 text 加 input.password-input type 等于 password 加 button.login-btn。AI 严格按照这个结构生成,但代码可读性差,没有考虑实际使用场景,缺少必要的错误处理。过度精确限制了 AI 的创造性,有时候模糊比精确更有效。
经过多次试错,总结了一个结构化 Prompt 框架。结构包括任务一句话说明要做什么、上下文关键背景信息、约束必须遵守的规则、示例一到两个具体例子、输出期望的输出格式。
用上面的例子,现在的 Prompt 是任务生成一个登录页面的 HTML 和 CSS 代码。上下文这是一个企业内部系统用户都是员工需要高安全性。约束包括必须包含用户名和密码输入验证、必须有记住密码功能、必须响应式设计。示例包括验证用户名不能为空密码至少八位,样式简洁商务风格白色背景蓝色主题色。输出返回完整的 HTML 文件包含样式和简单 JS 验证。效果生成的页面完全符合要求,验证逻辑正确,样式简洁美观,只用了一百五十字的 Prompt。
在 Prompt 中顺序很重要。错误顺序样式要求、验证逻辑、安全要求。正确顺序安全要求、验证逻辑、样式要求。AI 会更关注开头的内容。
比起文字描述示例更有效。文字描述验证逻辑用户名不能为空密码至少八位不能包含特殊字符。示例验证示例,用户名空行错误用户名不能为空,密码一二三行错误密码至少八位,密码感叹号行错误不能包含特殊字符。
告诉 AI 想要的输出格式。返回完整的 HTML 文件,CSS 写在 style 标签内,JS 写在 script 标签内,不要额外解释只返回代码。
对于复杂任务分步进行。第一步分析需求列出功能点。第二步设计页面结构返回 HTML 骨架。第三步添加样式返回完整页面。
生成 API 接口文档之前五百字长文,请帮忙写一个用户管理系统的 API 接口文档。这个系统有用户注册登录信息修改等功能。注册接口需要用户名密码邮箱还要验证邮箱格式。登录接口需要用户名和密码成功后返回 token。信息修改接口需要 token 验证可以修改用户名邮箱等信息。
现在结构化,任务生成用户管理系统的 API 接口文档。上下文企业内部系统 RESTful API JSON 格式。约束包括所有接口需要 token 验证除了 login 和 register,返回格式统一 success boolean data object error string。示例 POST api login,Request username string password string,Response success true data token string 或 success false error string。输出返回完整的 API 文档包含所有 CRUD 接口。文档更准确格式更统一生成时间更短。
每次写 Prompt 前会问自己,任务明确吗一句话能说清楚,优先级对吗最重要的放前面,约束清晰吗必须遵守的规则,有示例吗一到两个具体例子,输出格式明确吗期望的具体格式。
好的 Prompt Engineering 不是写作文而是给指令。结构化比长篇大论重要,优先级比信息量重要,示例比抽象描述重要,格式化比自由发挥重要。这套方法提高了百分之六十的 AI 使用效率。