15|Prompt 结构化:目标-上下文-约束-输出格式

本篇目标:这是卷 2(提示工程实战)的第一篇。我们将告别"聊天式提问",学会像写代码一样写 Prompt,让 AI 的回答从"看运气"变成"稳定交付"。


一、为什么你的 Prompt 总是不稳定?

很多人的提问方式是碎片化的:

  • 第一句:"帮我写个 Python 脚本。"
  • AI 给了个脚本。
  • 第二句:"不对,要能读取 Excel 的。"
  • AI 改了。
  • 第三句:"要把结果存到数据库。"
  • AI 又改了。
  • 第四句:"能不能加个进度条?"

这种"挤牙膏"式的提问,不仅累,而且容易让 AI 迷失上下文 (记得卷 1 讲的遗忘原理吗?)。

更高效的做法是:一次性把话说完,并且说得有条理。 这就是 结构化 Prompt


二、结构化 Prompt 的四大支柱(GOCO 模型)

一个完美的 Prompt,应该包含四个核心模块:Goal(目标)、Context(上下文)、Constraints(约束)、Output(输出格式)

1. Goal(目标):你要干什么?

用一个动词开头,清晰定义任务。

  • :"看看这个代码。"
  • :"重构 这段 Python 代码,使其符合 PEP8 规范,并优化循环性能。"

2. Context(上下文):背景信息

告诉 AI 它不知道的信息。

  • 角色:你是谁?(资深后端工程师)
  • 环境:代码运行在哪里?(Ubuntu 22.04, Python 3.10)
  • 依赖:已经装了什么库?(Pandas, SQLAlchemy)
  • 业务背景:这是给谁用的?(给财务部门用的报表工具)

3. Constraints(约束):红线与边界

告诉 AI 不能做 什么,或者必须做什么。

  • "必须使用 pathlib,禁止使用 os.path。"
  • "代码必须包含类型注解(Type Hints)。"
  • "不要解释基础概念,直接给代码。"

4. Output(输出格式):交付物标准

告诉 AI 你想要什么样子的结果。

  • "返回一个 JSON 格式的列表。"
  • "只返回修复后的代码块,不要 Markdown 包裹。"
  • "先列出修改计划,再给代码。"

三、实战对比:从"路人甲"到"工程师"

任务:写一个 SQL 查询,统计每个用户的订单总额。

❌ 路人甲 Prompt

"写个 SQL 查用户订单总额。"

AI 回复(随机性大)

它可能会给你写个 MySQL 的,也可能写个 PostgreSQL 的;可能没考虑订单状态(退款的也算进去了?);字段名也是瞎编的。


✅ 结构化 Prompt

markdown 复制代码
# Goal
Write a SQL query to calculate the total order amount for each user.

# Context
- Database: PostgreSQL 15
- Table `users`: `id`, `username`
- Table `orders`: `id`, `user_id`, `amount` (decimal), `status` (string), `created_at` (timestamp)
- Business Logic: Only include orders with status 'completed'.

# Constraints
- Use `LEFT JOIN` to include users with zero orders (show 0 as total).
- Sort by total amount descending.
- Use `COALESCE` to handle NULL values.

# Output Format
- Return only the SQL code block.
- Add comments explaining the logic.

AI 回复(精准稳定)

sql 复制代码
-- Calculate total order amount for each user, including those with no orders
SELECT 
    u.id, 
    u.username, 
    COALESCE(SUM(o.amount), 0) AS total_amount
FROM 
    users u
LEFT JOIN 
    orders o ON u.id = o.user_id AND o.status = 'completed'
GROUP BY 
    u.id, u.username
ORDER BY 
    total_amount DESC;

结果完全符合预期:用了 Postgres 语法,过滤了状态,处理了 NULL 值,排序正确。


四、Prompt 的"积木化"管理

不要每次都从头写 Prompt。你应该建立自己的"Prompt 积木库"。

1. 角色积木(Role Block)

存一个文件 role_python.md

markdown 复制代码
You are a Senior Python Engineer.
- You prefer `pydantic` for data validation.
- You use `pytest` for testing.
- You follow Google Style Guide for docstrings.

2. 任务积木(Task Block)

存一个文件 task_refactor.md

markdown 复制代码
# Goal
Refactor the provided code for better readability and performance.
# Constraints
- Keep the original logic unchanged.
- Add comments for complex logic.

3. 组合使用

当你需要重构 Python 代码时,只需要把这两个积木拼起来,再贴上你的代码即可。

CursorTrae 中,你可以把这些积木存为 .cursorrules 或 Snippets,一键调用。


五、本篇产出:通用 Prompt 模板(可复制)

请把这个模板保存到你的笔记软件里,每次提问前填空。

markdown 复制代码
# Role (角色)
[你是谁?例如:资深前端开发,精通 React 和 Tailwind CSS]

# Goal (目标)
[你要做什么?例如:实现一个响应式的登录页面组件]

# Context (上下文)
[背景信息?例如:
- 使用 Next.js 14 App Router
- 已安装 lucide-react 图标库
- 需要适配深色模式
]

# Constraints (约束)
[规则是什么?例如:
- 使用 TypeScript
- 必须包含表单验证(Zod)
- 不要使用任何额外的 CSS 文件,全部用 Tailwind 类
]

# Output Format (输出格式)
[长什么样?例如:
- 只提供组件代码文件 (.tsx)
- 不解释基础 import
]

# Input Data (输入数据 - 可选)
[如果有代码要改,贴在这里]

练习题:修复这个烂 Prompt

烂 Prompt:"帮我把这个 excel 转成 csv。"

请用上面的模板,把它改成一个结构化 Prompt。

(提示:你要考虑 excel 有几个 sheet?csv 存哪里?编码格式是 utf-8 吗?要不要保留表头?)
点击查看参考答案

markdown 复制代码
# Goal
Write a Python script to convert an Excel file to CSV.

# Context
- Input file: `data.xlsx` (contains multiple sheets)
- Target sheet: "Sheet1" only

# Constraints
- Use `pandas` library.
- Encoding: UTF-8 with BOM (to support Chinese in Excel).
- Separator: Comma (`,`).
- Handle missing values: Fill with empty string.

# Output Format
- Provide the full Python script.

下一步 :掌握了结构化,你的 Prompt 已经及格了。但有时候,仅仅把话说清楚还不够,你得给 AI "打个样"。下一章我们将学习 Few-Shot Prompting(示例驱动)------这是让 AI 瞬间学会你团队代码风格的终极秘籍。

相关推荐
@小匠1 小时前
OpenClaw vs Hermes Agent:哪个更适合你的需求?
ai编程
冲上云霄的Jayden2 小时前
LangGraph4j+LangChain4J 实验智能客服系统增加基于LLM 解决Prompt注入问题
prompt·agent·智能客服·langchain4j·agent安全·langgraph4j·prompt注入
海上日出2 小时前
这本 LLM 应用书,我翻了 5 遍:RAG 与 Agent 开发实战指南
ai编程
流云细水2 小时前
AI编程SubAgent模板大全(适配Spec驱动开发场景)
驱动开发·ai编程
Java小白笔记3 小时前
Claude Code 整合到 IDE
ai编程
张涛酱1074563 小时前
AskUserQuestionTool 深入解析:构建人机协作的交互桥梁
spring·设计模式·ai编程
程序员老刘3 小时前
《Flutter跨平台开发核心技巧与应用》新书来了
flutter·ai编程·客户端
麦哲思科技任甲林3 小时前
AI编程之需求分析与描述
人工智能·需求分析·ai编程·工作流编排·需求规格
掘金一周4 小时前
现在面试 AI 相关问题,不把底层原理扒得明明白白,真的分分钟被问麻😭 | 沸点周刊 4.16
openai·ai编程·沸点
纸枫林4 小时前
纷享销客CRM.SKILL
ai编程·skill