DeepSeek提示词设计实战:从R1推理模型到V3非推理模型与幻觉规避
简介一份由厦门大学软件和人工智能专家程希冀主讲的DeepSeek提示词设计PDF并非泛泛而谈的AI科普而是面向AI研发人员、技术爱好者以及职场白领、教师、创业者、自由职业者等各领域实际使用者解决如何让大模型听懂需求、避免幻觉胡诌等核心痛点。压缩包内为1个PDF文件约2.27MB随取随读目前已有248人学习。内容将模型分为推理型与非推理型两类对比了DeepSeek-R1与V3的性格差异分别给出提问策略运用六何分析法5W1H充分提供背景通过Few-shot示例、角色设定、思维链提示、结构化提示词等手段提升输出质量又深入剖析幻觉成因从限制知识来源、明确时间界限到引入RAG检索增强框架层级化规避错误答案还演示了用提示词制作炫酷图表和动画附Manus智能体介绍适合希望把AI真正用起来的群体。1. DeepSeek 提示词还重要吗先破除“说人话就够了”的幻觉打开DeepSeek-R1认认真真问一句“为什么我的手机屏幕突然变暗了”它会在“思考中”停留半天然后分点列出四个原因自动亮度调节、电池节省模式、软件问题、硬件问题。答案没错但也确实帮不上忙。同一个问题加一句“扮演我的同事用简洁的语气回答”出来的完全是另一个东西。这是2025厦门大学《DeepSeek提示词设计、幻觉避免与应用》整场讲座的开场逻辑——AI越聪明提示词不是没用了而是成了你和模型之间唯一的默契通道。这份笔记适合三类人每天要写文档、做汇报的职场人想用AI备课、出题、辅导作业的老师家长以及需要评估模型能力边界的开发者。它真正解决一件事搞清楚R1和V3性格不同、提问策略也不同以及怎么避免模型一本正经地编答案。2. 推理型与非推理型R1 和 V3 的两种性格与提问策略2.1 两种模型到底差在哪草稿纸与直觉DeepSeek 目前最常用的两个模型性格完全不一样。讲座里的比喻非常精准DeepSeek-R1 是推理型模型像有草稿纸的学生拿到题目先在内部草稿纸上演算一遍再给出最终答案DeepSeek-V3 是非推理型模型像知识丰富的朋友你问什么它直接答响应速度极快。这个差异不是宣传话术是生成机制层面的不同。R1 在解码时会先生成一段思维链CoTChain of Thought这段内容用户不可见但会占据大量计算资源所以响应慢、价格也更高V3 则是标准的自回归生成没有显式的推理过程直接逐 token 采样输出。讲座里还提到了第三类自动路由型代表是 GPT-5 系列和 Claude 3.7 系列。这类模型在系统内部自己判断“这道题需要不需要推理”用户不感知DeepSeek 目前没有完全走这条路R1 和 V3 是分开提供、由用户自己选的。选模型有个很朴素的标准数学题、算法题、正则表达式、代码调试这类任务选 R1逻辑性强且对准确性敏感写口播文案、做知识问答、整理会议纪要这类任务选 V3快而且够用。我自己的经验是同样的提示词在 V3 上表现不错放到 R1 上可能被过度解读反过来也一样所以别指望一套提示词通吃两个模型。对比维度推理型DeepSeek-R1非推理型DeepSeek-V3生成方式先内部思维链再输出直接逐 token 生成响应速度慢带“思考中”状态快几乎即时适用任务数学、编程、逻辑推理闲聊、知识问答、文案写作提示词重点给目标、给边界、少干预给角色、给背景、给样例准确性敏感度高低时间敏感度低高2.2 推理模型的提问策略给目标、别插手推理模型的提示词思路和直觉正好相反。你不需要教它“怎么思考”它自己有一套内部规划能力。讲座里列了一个清单推理型模型最怕的是过多解释、过多干预、手把手教学、重复的“逐步思考”。很多人的本能是写“请一步步思考”这对 V3 有用但对 R1 反而添乱——它本来就会内部推理你再塞一个“逐步思考”指令进去相当于让一个已经在解题的学生把草稿纸上的每一行都念给你听速度和准确率都会下降。我一般会给 R1 一个目标描述和约束条件剩下的推理过程完全交给它。对比下面两个提示词# 不推荐对推理模型过度干预 请一步步思考以下问题 公司上季度营收 870 万本季度 1020 万请计算环比增长率 注意先算差再除以基数最后乘以 100不要弄错顺序。 # 推荐给目标和约束让模型自己规划 请计算公司营收环比增长率给出公式和最终百分比。 数据上季度 870 万本季度 1020 万。 要求结果保留两位小数并说明增长趋势是否显著。同一个计算任务第二个提示词让 R1 自己决定怎么拆解步骤效果稳定得多。调用 API 时还有一个参数值得注意推理模型的 temperature 要调低。R1 的采样温度我一般设置在 0.6 到 0.7 之间温度太高会让思维链的随机性变大可能出现逻辑跳跃V3 可以放宽到 0.8 到 1.0。另外 max_tokens 要给足R1 的输出带推理痕迹截断的坑我踩过不止一次。# DeepSeek API 调用示例R1 推荐参数 curl https://api.deepseek.com/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $DEEPSEEK_API_KEY \ -d { model: deepseek-reasoner, messages: [ {role: user, content: 请计算营收环比增长率给出公式和百分比。上季度870万本季度1020万保留两位小数。} ], temperature: 0.6, max_tokens: 2048 }注意deepseek-reasoner是 R1 的 API 模型名V3 对应的是deepseek-chat。max_tokens 建议至少 2048因为推理模型的输出里包含 reasoning_content 字段这部分内容也占 token 配额设太小会导致最终答案被截断。2.3 非推理模型的提问策略补背景、给样例V3 这类非推理模型问题在于它不会主动补全你省略的上下文。讲座里那个手机屏幕的案例特别典型直接问“为什么我的手机屏幕突然变暗了”V3 给出四个泛泛的原因换成“最近天气很热经常 40℃ 以上我的苹果手机在太阳下晒一会儿屏幕自动变暗调也调不亮”之后模型立刻收敛到温度保护这个具体原因上。这就是背景信息的作用——你多给一句场景描述模型就从“罗列所有可能”变成“定位最可能的那个”。非推理模型的提示词核心是“过程—结果”清晰。讲座反复强调几件事角色设定、样本提示、充分的背景信息、行业知识。角色设定最好用给模型一个身份就等于给它一套默认的措辞和判断标准。写文案时加一句“你是资深小红书运营”比写一百字“请用口语化的方式”管用。# 非推理模型提示词模板角色 背景 输出格式 你是一名有 5 年经验的小红书美妆博主擅长写接地气的口播文案。 背景一款主打控油功效的散粉目标用户是 18-25 岁油皮女生。 请写一段 60 秒口播文案要求 1. 开头 5 秒有冲突感能抓住注意力 2. 中间植入两个使用场景上班通勤、下午补妆 3. 结尾引导点击评论区领试用装 4. 全程口语化不出现“高效、卓越”这类词给 V3 写提示词时我会把“需求背后的需求”也交代清楚。写文案不只是“帮我写一段话”而是说清楚这段话给谁看、在什么平台、达成什么目的。讲座里的六何分析法就是这套逻辑的总结下一章展开讲。3. 提示词设计实战六何分析法与 Few-shot 样本的写法3.1 六何分析法把模糊需求拆成 5W1H讲座里最实用的一个技巧是把提示词按六何分析法5W1H拆开。何故Why、何事What、何时When、何人Who、何处Where、何以How。课件里的推广案例可以直接当模板用“为了提升销量何故我公司决定在自媒体上做 X 产品推广何事时间为中秋节期间何时针对 18-35 岁年轻白领何人主要平台为小红书何处提供 500 字口播文案要求完播率高、不生硬、植入软广、结合节日需求何以。”我把它整理成一个可复用的 Python 模板填充字段后直接拼成完整提示词。这么做的好处是团队协作时每个人提交的信息结构一致不会再出现“帮我写个文案”这种让模型瞎猜的需求。def build_prompt(why, what, when, who, where, how): 六何分析法提示词构造模板 fields [] if why: fields.append(f背景与目标{why}) if what: fields.append(f任务内容{what}) if when: fields.append(f时间要求{when}) if who: fields.append(f目标受众{who}) if where: fields.append(f发布平台/场景{where}) if how: fields.append(f输出要求{how}) return \n.join(fields) prompt build_prompt( why提升 X 产品在年轻白领群体中的销量, what撰写一篇推广软文, when中秋节期间发布, who18-35 岁年轻白领, where小红书平台, how500 字左右完播率高不生硬软广告结合节日氛围 ) print(prompt)这段代码的逻辑很简单把六个字段按固定顺序拼接空字段自动跳过。关键参数是 how也就是输出要求这一项要写得尽量具体包括字数、风格、禁止事项。我的经验是六项不需要每次都填满但 why 和 how 最好别省略——为什么做和做成什么样决定了模型输出的方向和质量上限。3.2 Few-shot用两三个样例锁定输出风格六何分析法解决的是信息完整度问题但有时候即使信息完整模型输出的格式和语气还是跟你心里想的不一样。这时候需要用 Few-shot也就是少量样本提示。讲座把它称为“举些例子”原理是让模型从给定的输入输出对里推断出你期望的格式、风格和逻辑结构。# Few-shot 示例让模型学习提取会议待办事项 参照下面的样例从新对话中提取待办事项 输入王总说下周二之前要看到新版报价单李姐那边催着要会议纪要还有会议室投影仪坏了记得报修。 输出 1. 完成新版报价单截止时间下周二前负责人王总 2. 发送会议纪要跟进人李姐 3. 报修会议室投影仪 输入财务说报销流程改了以后发票要扫描上传到 OA 系统另外市场部需要一份 Q3 投放复盘周五讲。 输出 1. 按新流程提交发票报销上传 OA 系统 2. 撰写 Q3 投放复盘截止时间本周五汇报对象市场部 输入客户对方案提了三条修改意见最晚周三给反馈另外记得把合同盖章版寄回去。 输出Few-shot 的样例数量我一般控制在 2 到 4 个。太少模型学不到稳定的格式规则太多就容易引入噪声模型可能去模仿样例里的个别措辞而不是整体逻辑。样例的选取要贴近真实任务不要拿一些精心润色过的“完美对话”当范例模型会敏锐地模仿那种不自然的语气。如果目标任务本身就很难用文字描述清楚格式Few-shot 几乎是唯一可靠的解法。3.3 结构化提示词用分隔符把指令和上下文分开当提示词变长之后模型容易把不同部分混在一起理解。比如你把背景资料、格式要求、示例都平铺着写模型可能把背景资料的某句话当成指令。这个问题我用分隔符解决。讲座里的做法是“使用分隔符提高清晰度”实际落地时我常用两种格式简单的用###分段标题复杂的用 XML 标签包裹。# 分隔符版本指令、上下文、输出要求各自独立 指令 你是资深数据分析师请根据提供的销售数据输出周报摘要。 /指令 上下文 华东区 Q2 销售额同比下滑 8%但线上渠道增长 12%。 线下门店客流下降客单价持平。新品 B 系列上市两周 贡献总销售额的 5%。 /上下文 输出要求 1. 用三句话概括核心结论 2. 指出一个最需要关注的风险点 3. 给出一个可执行的下一步建议 /输出要求分隔符不改变模型的推理能力它改变的是模型的注意力分配。把“输出要求”放在最末尾是一个值得养成的习惯模型对上下文末尾的内容有更强的记忆权重。另外指令和上下文用不同的格式框架区分开后当你不确定模型有没有理解时可以只替换上下文部分保留指令框架方便做 A/B 测试。很多人忽略了这一点——分隔符其实也是给调试用的不是只给模型看的。4. 幻觉规避用知识边界、时间锚点和 RAG 锁死回答4.1 幻觉从哪里来预训练知识的时效与生成的自信DeepSeek 的幻觉问题根源在于它的知识全部来自预训练。模型在训练阶段看过海量文本把知识压缩进了参数里回答问题时通过概率采样把这些参数“翻译”成文字。这个机制决定了两件事第一训练截止日期之后发生的事情它不知道只能根据旧知识推测甚至编造第二训练语料里覆盖较少的内容它会用“最像”的表述来补全这个补全过程就是幻觉的温床。讲座里特别指出“DeepSeek 并非完美搞清优点和缺陷”明确时间界限和限制知识来源是应对幻觉的基础思路。高发场景我在实践中总结过具体数字尤其是百分比、金额、年份、引用出处某段话是谁说过的、最新政策法规、小众领域的人名和头衔。模型在这些场景下表现出的共同特征是——语气非常肯定但内容是错的。它不会因为不确定就降低音量反而会给出一个听起来合理但经不起核对的答案。识别幻觉不是靠看语气而是要建立“知识边界”意识知道哪些事模型不可能知道或者知道到什么程度。4.2 提示词层面的三条约束知识边界、时间锚点、置信度应对幻觉的第一道防线是在提示词层面给模型套上约束。讲座里强调“限制知识来源和明确时间界限”落地到提示词里我一般加三条约束知识边界声明、时间锚点、置信度标注要求。这三条可以单独用也可以组合成一段固定模板。# 知识边界约束模板 请回答以下问题。注意约束条件 1. 只使用 2024 年 6 月之前的知识之后的进展不要猜测。 2. 如果不确定或无法从已有知识中确认明确回答“我不确定”不要编造。 3. 对回答中的事实性内容标注置信度高可确认/ 中有依据但待核对/ 推测基于类比。 4. 涉及具体数字、人名、机构名时务必说明信息来源类型公开报道/学术论文/常识推断。 问题2025 年国内大模型备案制度的最新要求是什么这个模板的效果是把“不知道”从一个羞耻选项变成一个合规选项。绝大多数情况下模型只要被允许说“我不确定”它就会把本来打算编的内容改为推测语气而不是硬编。参数设计上置信度标注会稍微延长输出长度把 max_tokens 预留 300 到 500 的余量比较稳妥。另外这里的“时间锚点”要按你的实际需求写写得太新模型反而没法回答。4.3 RAG 检索增强给模型一张可查的草稿纸提示词约束是防御RAG检索增强生成是主动进攻。RAG 的核心思路很简单不依赖模型的内部知识回答问题而是把外部文档切块、向量化、检索出最相关的片段拼进上下文让模型基于这些片段作答。讲座里提到的“检索增强框架”日常做 AI 应用时已经是一个标准组件。它的本质是给模型提供一份可查的资料让它不必从预训练参数里“回忆”答案而是从眼前的事实中归纳。# 最小 RAG 流程切块 - 向量化 - 检索 - 构造提示词 from transformers import AutoTokenizer, AutoModel import numpy as np # 1. 文档切块按固定长度 重叠窗口 chunks [] chunk_size 500 # 每块 500 token过长检索不精确 overlap 100 # 重叠 100 token避免切断关键上下文 for i in range(0, len(doc), chunk_size - overlap): chunks.append(doc[i:i chunk_size]) # 2. 向量化用检索模型编码每个块 model_name BAAI/bge-m3 # 常见中英文检索 embedding 模型 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModel.from_pretrained(model_name) embeds model.encode(chunks).cpu().numpy() # 3. 检索向量点积 top_k 3 query_embed model.encode([query]).cpu().numpy() scores np.dot(embeds, query_embed.T).flatten() top_k 3 hits [chunks[i] for i in scores.argsort()[-top_k:][::-1]] # 4. 构造上下文限定模型只能参考检索结果 context \n\n.join(hits) final_prompt f请仅根据以下检索资料回答不要使用外部知识 资料开始 {context} 资料结束 问题{query} 要求如果资料中没有准确答案请回答“资料中未找到”。这段代码里最关键的两个参数是chunk_size和top_k。chunk_size 设 500 左右比较均衡太小容易断句太大检索精度下降overlap 100 能保证切块边界处的重要信息不丢失。top_k 设 3 适合大多数问答场景设太多会把低相关片段带进来反而稀释答案。检索模型我用 bge-m3 这类国产开源 embedding 模型中文效果不错且部署成本低。RAG 不是万能药检索片段质量差的时候模型再有能力也答不对。5. 常见问题排查提示词不生效、思考链跑偏与输出翻车5.1 推理模型遇上“逐步思考”速度变慢还答错现象使用 R1 写代码或解数学题时提示词里写了“请一步步思考”响应时间翻倍输出变得啰嗦甚至出现逻辑混乱。原因推理模型内部已经会生成思维链重复的“逐步思考”指令相当于让模型把内部草稿也输出一遍既浪费 token 又干扰推理规划。解决去掉所有“逐步思考”类指令改用“输出时先写结论再给出验证理由”这种结果格式约束。R1 自己的思考过程不需要你教你需要约束的只是最终答案的呈现方式。5.2 角色设定互相打架模型行为飘忽不定现象提示词里同时写了“你是资深律师”和“尽量用大白话”模型输出在法条语气和口语之间来回横跳一段话里两种风格混杂。原因两个角色约束指向相反的措辞风格模型在采样时无所适从。解决一次只保留一个核心角色次要诉求写成格式要求。比如保留“资深律师”角色把“用大白话”改成“输出结构为结论 → 依据 → 给用户的建议用 15 岁以上能读懂的语言”。角色管身份格式管表达两者分开设定就不冲突了。5.3 Few-shot 样例选错输出风格整体带偏现象想让模型写小红书种草文给的样例是品牌官方宣传稿结果模型产出全是广告腔完全不像用户原生的分享风格。原因模型学习的是样例的整体风格而样例和真实目标场景有偏差。解决样例必须来自真实目标场景最好拿以前人工写的优秀案例当样例。还可以加一个反例约束——在 Few-shot 后面加一句“不要写成官方宣告体不要使用‘卓越、甄选’这类词”。正例定风格反例划边界双向约束比只给正例稳定得多。5.4 RAG 片段互相矛盾模型在两边和稀泥现象使用 RAG 后检索回来的两段资料一条说方案 A一条说方案 B模型回答“关于这个问题存在不同说法”等于没答。原因上下文里存在冲突信息模型选择妥协策略而不是判断优先级。解决在提示词里加一条冲突处理规则例如“当检索资料冲突时优先采纳发布时间更晚的资料并标注两个来源”。检索端也要做过滤把来源可信度低的 chunk 直接丢弃。RAG 出问题先查资料不要急着换模型。5.5 提示词太长关键指令被上下文稀释现象把需求背景、目标受众、样例、格式要求、禁止事项全部写进一个超长提示词结果模型只记得背景忘了最核心的格式约束。原因模型对长上下文的注意力分布不均匀开头和结尾的指令权重最高中间大量背景信息会稀释关键指令。解决最关键的约束放开头或结尾不重要的背景资料放中间。需要多步任务时就拆成多次对话不要试图在一条提示词里完成所有事。讲座里讲“过程—结果清晰”本质也是让每一段对话只承担一个明确目标。6. 进阶让 DeepSeek 按指定框架输出图表与动效6.1 图表生成指定框架、字段与自检要求讲座提到“设计提示词让 DeepSeek 做炫酷图表和动画”。日常我让 DeepSeek 产图表最常用的方式是让它输出 ECharts 的 option 配置对象然后在本地 HTML 里渲染。关键不是描述“要一张漂亮的折线图”而是告诉它用什么框架、数据字段怎么映射、以及一定要声明“不要使用不存在的 API”。请根据以下数据生成一个 ECharts 折线图配置 月份1月-6月 销量[120, 165, 143, 198, 221, 268] 要求 1. 使用 ECharts 5.x 版本的 option 对象格式 2. x 轴为月份y 轴为销量添加数据标签 3. 图表标题为“2025 上半年销量趋势”y 轴格式化加单位 4. 使用常见主题色不要自定义 ECharts 主题注册 5. 输出完整的 script 配置不包含 HTML 结构指令清晰之后Dall-E 生成的配置基本能直接用。我通常在本地用 Python 起一个 HTTP 服务把配置文件嵌进 HTML 模板里预览五分钟内能看到结果。别直接让模型“画一张图”它没有绘图能力它能做的是生成可渲染的配置代码。6.2 动效生成HTML 与动画范式的提示词套路动效生成比图表更依赖技术栈限定。我一般让模型生成一个单文件 HTML包含 CSS 动画和必要的 JavaScript因为单文件便于在浏览器里直接打开验证。提示词的套路是指定技术栈 → 指定动画参数 → 要求自测逻辑。另外提一句讲座最后提到的 Manus 智能体本质上也是把大模型的工具调用能力接到浏览器操作上它的任务拆解逻辑和六何分析法是同一个思路——先把目标拆清楚再让模型一步步执行。理解了这个你写提示词时就会习惯性地多问一句“这个过程模型需不需要看见中间步骤”。从那以后我每次让 DeepSeek 产出图表和动效都强制走一遍“指定框架 → 限定数据字段 → 要求自测逻辑”的流程已经很少翻车了。希望帮到你。本文还有配套的精品资源点击获取