前言
在使用 DeepSeek 或 GPT 时,你是否遇到过这些情况?
-
"这 AI 好像听不懂人话,写的代码总是跑不通。"
-
"写的文章车轱辘话来回说,一股 AI 味。"
-
"同样的模型,为什么别人能用它做架构设计,我只能用它做简单的翻译?"
真相是:模型的能力是固定的,但你的 Prompt(提示词)决定了它发挥 10% 还是 90% 的潜能。
大多数人把 AI 当作**"搜索引擎"(给关键词,找答案)或者"聊天对象"(随便聊聊)。
但其实Prompt 是一种自然语言编程。DeepSeek 本质上是一个概率预测引擎,你的每一个字,都是在调整它预测下一个 Token 的概率分布。
一、 底层逻辑:AI 是如何思考的?
要写好 Prompt,首先要理解 LLM(大语言模型)的本质。
LLM 不是人,它是"文字接龙"机器。
当你输入"苹果"时,它不是在脑海里想象一个红色的水果,而是在计算:"在'苹果'这两个字后面,接'手机'、'价格'还是'好吃'的概率更高?"
Prompt 的作用,就是通过上下文约束,把"概率空间"收敛到你想要的方向。
-
Bad Prompt:
解释量子力学。- AI 的困惑: 给谁解释?解释多深?是用公式还是比喻?(概率发散,输出平庸)
-
Good Prompt:
你是一名物理学教授。请用给 5 岁小孩讲故事的方式,不用任何数学公式,解释量子力学中的"量子纠缠"现象。- AI 的确定性: 角色=教授,对象=5岁,约束=无公式,目标=量子纠缠。(概率收敛,输出精准)
二、 核心方法论:结构化提示词 (Structured Prompting)
优秀的 Prompt 应该像代码一样,具备清晰的结构。我们推荐 CRISPE 框架:
-
C (Context) - 背景: 你是谁?由于什么原因需要做这件事?
-
R (Role) - 角色: AI 应该扮演什么专家?
-
I (Instruction) - 指令: 具体要做什么?(动词驱动)
-
S (Constraints) - 约束: 不能做什么?字数、格式限制。
-
P (Payload) - 输入数据: 需要处理的具体内容。
-
E (Example) - 示例: (最重要) 给出一个理想的输出样例。
实战对比:让 DeepSeek 写 SQL
❌ 普通用户的写法:
帮我写个 SQL,查一下最近一个月消费最多的用户。
✅ 工程师的写法:
# Role
你是一个精通 MySQL 8.0 的高级数据分析师。
# Context
我们正在进行季度销售复盘,需要找出高价值客户进行回访。
# Database Schema
Table: orders
- user_id (int)
- amount (decimal)
- created_at (datetime)
- status (tinyint, 1=completed)
# Instruction
编写 SQL 查询最近 30 天内,状态为 completed 的订单中,累计消费金额最高的前 10 名用户。
# Constraints
1. 使用 SUM() 聚合金额。
2. 只要输出 SQL 代码,不要 Markdown 格式,不要解释。
3. 性能优先,假设 user_id 和 created_at 有索引。
# Example Output
SELECT user_id, SUM(amount) ...
为什么后者更好?
后者消除了歧义(状态=1,最近30天,Top 10),并约束了输出格式(方便程序直接调用)。
三、Few-Shot Prompting (少样本提示)
如果说 Role 和 Context 是基础,那么 Few-Shot(给例子) 就是提示词工程的进阶表现
原理: 示例让模型直接"模仿"你的思维逻辑和输出格式,而不是去"猜"。
场景:情感分析
Zero-Shot (无样本):
判断这句话的情感:"这手机发热太严重了,但在冬天能当暖手宝。"
AI 回答:这句话包含了负面评价(发热严重)和正面评价(暖手宝),整体情感比较复杂... (废话多)
Few-Shot (少样本):
任务:提取评论的情感极性(Positive/Negative)。
例子 1:
评论:"屏幕清晰,但是电池不耐用。"
情感:Negative
例子 2:
评论:"虽然物流慢,但东西确实好。"
情感:Positive
例子 3:
评论:"这手机发热太严重了,但在冬天能当暖手宝。"
情感:
AI 回答:Negative (直接模仿格式,准确判定"暖手宝"是讽刺)
四、 进阶技巧:思维链 (Chain of Thought, CoT)
对于 DeepSeek-V3 这种通用模型,处理复杂逻辑时,你需要强迫它"慢下来思考"。
魔法咒语: 请一步步思考 (Let's think step by step)。
场景:逻辑推理
普通提问:
约翰有 5 个苹果,吃了 2 个,买了 3 个,送给朋友一半,还剩几个?
AI (可能出错):3 个。
CoT 提问:
约翰有 5 个苹果,吃了 2 个,买了 3 个,送给朋友一半,还剩几个?请一步步思考。
AI:
起始:5 个
吃了 2 个:5 - 2 = 3
买了 3 个:3 + 3 = 6
送给朋友一半:6 / 2 = 3
还剩:3 个。
DeepSeek-R1 特别说明:
DeepSeek-R1 是推理模型,它内置了思维链能力。对 R1,你不需要写"请一步步思考",反而应该通过 Prompt 清晰定义目标和边界条件,让它自己去推导路径。
五、 结构化输出:XML 标签法
在长文本或复杂任务中,如何让 AI 清楚地知道哪里是数据,哪里是指令?
推荐使用 XML 标签将 Prompt 分区。这在大文本处理中能显著降低"遗忘"和"幻觉"。
<system_instruction>
你是一个代码审计专家。
</system_instruction>
<code_to_review>
def func(x):
eval(x) # 危险代码
</code_to_review>
<review_requirements>
1. 指出安全漏洞。
2. 给出修复代码。
</review_requirements>
这种写法让 Prompt 对机器更加友好,解析准确率极高。
六、 调试与迭代:Prompt 也是需要 Debug 的
不要指望写一次 Prompt 就完美。提示词工程是一个迭代的过程。
Prompt Debug 流程:
-
运行: 观察输出。
-
诊断:
-
废话太多? -> 增加约束:"只输出结果"。
-
逻辑错误? -> 增加 CoT:"一步步思考"。
-
格式不对? -> 增加 One-Shot:"参照以下 JSON 格式"。
-
-
修正: 修改 Prompt。
-
复测: 用新数据测试。
结语
prompt不仅仅适用于Deepseek,对于所有的ai模型来说,prompt都尤其的重要