
简介这是一份由清华大学新闻与传播学院团队整理的 DeepSeek 入门与进阶指南面向对自然语言处理、推理模型及开源 AI 工具感兴趣的研发工程师和技术爱好者聚焦如何用 DeepSeek-R1 完成智能对话、文本生成、代码补全、知识推理等任务。文档以 PDF 形式提供压缩包共 1 个文件大小约 4.83MB内容涵盖 DeepSeek 平台功能、应用场景、推理模型与非推理模型的对比以及提示语设计与常见误区。全文不用太多技术门槛从基础概念讲到实战策略适合作为快速上手手册已有 590 人学习下载。资源特别说明了正确处理数学证明、创意写作、代码生成等典型任务的方法强调根据任务类型选择模型而非盲目追热门并提供网站入口与使用技巧可帮助读者提升提示语设计水平、避免常见错误在研究和开发中更高效地发挥 DeepSeek 的能力。1. DeepSeek 是什么一个能免费商用的开源推理模型先搞清它硬在哪多数人第一次打开 DeepSeek 官网会把它当成又一个聊天框随便问两句天气、写段周报就关掉了。但 DeepSeek-R1 这个开源模型真正擅长的是「多步推理」数学推导、逻辑分析、代码生成、复杂问题拆解这些需要一步步想清楚再回答的任务它比普通对话模型可靠得多。这款专注于通用人工智能的开源项目特点很直白国产、免费、开源、可商用既可以直接在网页版对话也支持开发者本地部署和 API 接入。对研发工程师、NLP 方向的从业者以及想把大模型嵌进现有系统的技术爱好者来说这份资料的真正价值不在于「能聊」而在于它把「怎么选模型、怎么写提示语、怎么部署、怎么排错」讲成了可操作的方法。下面按选型、提示语、部署、避坑、工程接入这条链路把整份资源拆开讲。2. 推理模型与通用模型不是「谁更强」按任务类型选型少走一半弯路2.1 核心差异落在「思考方式」不是「知识量」CoT 链式思维出现之后大模型被清晰地分成了两类。一类是概率预测型也就是快速反应模型它基于大量训练数据直接预测下一个词的概率分布响应快、算力成本低跟人对答如流但遇到需要严格逻辑链的任务时容易跳过关键推导步骤直接给结论。ChatGPT 4o、GPT-4 这类通用对话模型都属于这一派。另一类是链式推理型也就是慢速思考模型先把问题拆成若干步骤逐步推导再给出答案DeepSeek-R1 和 OpenAI o1 是代表。这两类模型不是知识量上的差距而是处理问题的路径完全不同。对比维度推理模型DeepSeek-R1 这类通用模型GPT-4 这类思考方式链式推理逐步推导概率预测快速生成响应速度慢思考链路长快首 token 低延迟算力成本高低决策能力自主拆解复杂问题实时决策依赖预设算法与规则创造力结构化创意较强发散性受限发散性强适合开放式创意问题解决擅长结构化、多条件推理任务擅长定义明确、多样性高的生成任务这个差异直接决定选型多步逻辑任务用推理模型发散创意任务用通用模型。我见过不少团队拿通用模型硬做数学证明结果模型一本正经地跳步骤反过来拿推理模型写诗歌又嫌它太「规整」。本质是没分清这两类模型的训练目标。推理模型只在逻辑密度高的领域显著占优并非全面更强通用模型在多样性任务上更灵活但专项逻辑任务得靠提示语去补偿。资料里那句话总结得很到位优先根据任务类型而非模型热度做选择。2.2 先定任务类型再选模型一张映射表解决 80% 选型困惑选型不该是拍脑袋。我一般会把任务先归到下面这张表里再决定用哪类模型、提示语侧重点落在哪这样能避免「拿通用模型硬跑逻辑题、拿推理模型硬写创意文」这类典型翻车。任务类型推荐模型提示语侧重点有效示例需避免的提示策略数学证明推理模型直接提问信任其内化推理「证明勾股定理」分步引导如「先画图再列公式」创意写作通用模型设定角色与风格约束「以海明威风格写一个冒险故事」过度约束逻辑顺序代码生成推理模型简洁需求描述目标「用 Python 实现快速排序」模糊需求如「写个排序代码」多轮对话通用模型自然交互无需结构化「你觉得人工智能的未来会怎样」强制逻辑链如「分三点回答」逻辑分析推理模型直接抛出复杂问题「分析电车难题中的功利主义冲突」添加主观引导如「你认为哪种对」这张表还能进一步压缩成三步判断先看任务是否需要严谨推导需要就选推理模型再看是否发散创意或自由对话是就选通用模型如果任务是混合型的先拆开再分别处理。比如「写一篇介绍量子计算的科普文章」拆出来「量子计算原理」部分需要推理模型保证准确性「写成通俗故事」部分需要通用模型保证可读性那就两段分开生成再拼装。社区里那种 deepseek hermes 之类的微调版本通常更偏指令遵循和对话风格当通用对话模型替代品合适但要处理严格逻辑任务时还是切回 R1 推理版更稳——这正好印证看任务别看名字和热度。3. 提示语策略从「下达指令」到「表达需求」差距在表达方式的四个公式3.1 先理解提示语的本质指令、上下文、期望三件事提示语Prompt本质上是我们和模型之间的沟通桥梁。很多人写提示语只丢一句话过去模型就靠猜。一段合格的提示语至少包含三部分指令Instruction明确告诉模型要执行什么任务上下文Context给模型提供背景信息帮它理解场景期望Expectation说清楚输出形式和约束条件。三者缺一不可缺上下文模型盲猜背景缺期望输出格式完全不可控缺指令整个对话没有方向。我拿翻译需求举个例子。「将以下内容翻译为法语Hello, world」这条提示语只有指令没有上下文和期望模型能翻但你不知道它会不会按正式还是口语语气来。如果改成「将以下内容翻译为法语面向商务邮件场景保持正式语气Hello, world」模型输出的可用性就完全不同。这就是资料里说的「从下达指令到表达需求」——不是把话说得更长而是把任务的目标、背景、约束表达完整。3.2 五类需求表达公式、适配策略与可抄示例资料里把真实工作中的需求分成五类每一类都有对应的表达公式。这部分非常值得直接抄走按公式套用提示语质量会立刻上一个台阶。需求类型特点表达公式推理模型适配策略通用模型适配策略决策需求权衡选项、评估风险、选最优解目标 选项 评估标准要求逻辑推演和量化分析依赖模型经验直接给建议分析需求深挖数据/信息找模式或因果问题 数据/信息 分析方法触发因果链推导与假设验证做表层总结或分类创造性需求生成新文本、设计、方案主题 风格/约束 创新方向结合逻辑框架生成结构化创意自由发散靠示例引导验证需求检查逻辑自洽、数据可靠、方案可行结论/方案 验证方法 风险点自主设计验证路径并排查矛盾简单确认需人为追问执行需求完成代码、计算、流程操作任务 步骤约束 输出格式自主优化步骤兼顾效率严格按指令执行无自主优化这套表用熟之后大部分工作提示语都能套进去。比如「为降低物流成本现有两种方案① 自建区域仓库初期投入高但长期成本低② 与第三方合作按需付费灵活性高。请根据 ROI 计算模型对比 5 年内总成本并推荐最优解」——这就是典型的决策需求「两种方案」是选项「对比 5 年总成本」是评估标准交给推理模型会得到带计算逻辑的答案而不是泛泛而谈。再比如「分析近三年新能源汽车销量数据附 CSV说明增长趋势与政策关联性用 ARIMA 模型预测市占率并解释参数」——这是分析需求指定了分析方法和输出形式模型就知道该走因果链而不是做表格流水账。创造性需求则参考「设计一款智能家居产品解决独居老人安全问题结合传感器网络和 AI 预警给出三种技术路线的原型草图说明」——主题、约束、创新方向三要素齐全发散也有边界。3.3 推理模型反而要「少说话」提示语预算用在该用的地方提示语不是越长越好关键看模型类型。资料里明确点出一个反直觉结论推理模型已内化了推理逻辑提示语要简洁只需明确任务目标和需求如果你强行拆解步骤比如「先画图、再列公式、最后证明」反而限制了它的自主推理能力。我踩过这个坑早期用 R1 时习惯性像指挥新手一样一步步喂结果模型的思考链被切成碎片输出质量反而下降。通用模型则相反它依赖提示语补偿能力短板需要显式引导推理步骤否则容易跳过关键逻辑。比如拿通用模型做逻辑分析直接问「分析电车难题」容易得到一段正确的废话改成「先给出电车难题的定义再对比功利主义与道德主义两种伦理观的差异最后举例说明」才有实质内容。两条经验可以记下来不要对推理模型用「启发式」提示比如角色扮演、风格设定这些会干扰它的逻辑主线不要对通用模型过度信任复杂推理最好分步验证结果别当黑匣子直接用。4. 本地部署 DeepSeekOllama、vLLM 两条路线的命令与参数4.1 路线一Ollama 跑推理模型十分钟能出结果本地部署 DeepSeek 最简单的方式是 Ollama它会自动处理模型下载和显卡调用。DeepSeek-R1 有多个蒸馏版本从 1.5B 到 70B 都有个人电脑调试阶段先拿 7B 验证链路别一上来就拉 70B否则下载慢、显存也不一定扛得住。# 拉取 DeepSeek-R1 7B 蒸馏版 ollama pull deepseek-r1:7b # 启动交互式对话 ollama run deepseek-r1:7b拉取这一步只要网络正常就能完成模型体积大概在 4.7GB 左右普通消费级显卡8GB 显存以上就能跑。ollama run 进入交互界面后可以直接输入「用 Python 写一个快速排序函数」这类需求它默认走的还是自带上下文窗口适合快速验证。如果要控制推理参数比如采样温度、上下文窗口大小用 Modelfile 更合适# Modelfile 示例 FROM deepseek-r1:7b PARAMETER temperature 0.6 PARAMETER num_ctx 8192 PARAMETER num_gpu 1# 构建并运行自定义模型 ollama create my-deepseek -f Modelfile ollama run my-deepseektemperature 控制随机性0.6 左右适合代码生成和逻辑任务太高容易发散太低则可能重复句式。num_ctx 是上下文窗口长度按 token 数算显存不够就把 8192 降到 4096。还要知道 Ollama 同时提供 OpenAI 兼容的 API 端点本地服务默认跑在 11434 端口这是后面工程化接入的关键curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: my-deepseek, messages: [{role: user, content: 用Python写一个快速排序函数}], stream: false }4.2 路线二vLLM 跑 OpenAI 兼容服务接微服务架构更顺手团队协作或要接入微服务架构时我更推荐 vLLM。它把模型包装成一个标准的 OpenAI 兼容 HTTP 服务对上游应用来说本地和云端 API 的请求格式完全一致。vLLM 在高并发场景下的吞吐明显好于 Ollama代价是安装和参数配置门槛更高一些。# 安装 vLLM pip install vllm # 启动 OpenAI 兼容服务 vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --served-model-name deepseek-r1 \ --max-model-len 32768 \ --gpu-memory-utilization 0.9 \ --tensor-parallel-size 1启动命令里几个参数需要解释清楚。--served-model-name deepseek-r1是给上游服务用的逻辑模型名你自己定但定了之后所有调用方必须用它不能再用仓库原始名这是很多团队联调时对不上号的直接原因。--max-model-len 32768是最大上下文长度单位是 token 而不是字符显存紧张时先砍到 16384 甚至 8192。--gpu-memory-utilization 0.9表示允许用到显卡 90% 的显存剩下的留给 CUDA 上下文等开销。--tensor-parallel-size 1是张量并行度单卡设 1多卡机器按卡数设。启动成功后用 Python 的 OpenAI SDK 直接测试from openai import OpenAI client OpenAI( base_urlhttp://localhost:8000/v1, api_keyEMPTY ) resp client.chat.completions.create( modeldeepseek-r1, messages[ {role: user, content: 用Python写一个冒泡排序加上注释} ], temperature0.6 ) print(resp.choices[0].message.content)这段代码里 base_url 指向 vLLM 的默认端口 8000api_key 用占位符即可因为本地服务不校验 key。这个接口和官方 DeepSeek API、OpenAI API 都是同一个格式所以后面不管是接 Codex、还是接内部工作流只需要换 base_url 和 api_key 两个变量。4.3 Jetson Orin 这类边缘设备部署量化位宽是关键边缘设备部署 DeepSeek 是最近被问得很多的方向特别是 Jetson Orin 这类带 GPU 的嵌入式设备。Orin 系列常见的有 8GB、16GB、32GB、64GB 几个档位实际能跑多大模型量化位宽说了算。我的习惯是32GB 机型跑 14B 蒸馏版的 4bit 量化64GB 机型可以尝试 32B 量化7B 量化版在 16GB 机型上比较从容。上下文窗口别贪大4096 到 8192 够用再大容易出现生成中断。具体到 Jetson 上常见做法是直接用官方容器跑 Ollama省去自己编译推理框架的麻烦。要注意的是 swap 预留至少留 8GB因为模型加载瞬间的内存峰值比稳态运行高不少。另外边缘设备的散热直接影响推理稳定性连续跑长文本时注意看温度必要时降低gpu-memory-utilization给显卡留出喘息的余量。这类部署适合数据不出内网的本地知识问答、设备端日志分析等场景把敏感数据留在设备本地只把模型输出送到业务层。5. 常见问题排查提示词翻车与部署报错的五个对照这一部分集中梳理资料里强调的提示语误区和本地部署时的高频报错每条按「现象 → 原因 → 解决」来写方便直接对照排查。5.1 推理模型被角色扮演干扰输出变成空话套话现象让 DeepSeek-R1「扮演一位数学家」去证明勾股定理结果模型先输出一大段关于数学家的职业描述再给一个模板化的证明过程思考链明显被带偏。原因推理模型内部已经内化了推理逻辑它需要的是任务目标本身。角色扮演这类「启发式提示」相当于在它本该专注推理的链路上额外加了一层叙事框架反而干扰了逻辑主线。解决去掉身份设定直接把需求说清楚。「证明勾股定理要求步骤完整写明已知条件和依据。」如果模型输出仍发散补一句「只输出证明过程不要额外说明」控制格式。5.2 通用模型回答复杂逻辑题「看起来对、经不起追问」现象拿通用模型直接问「分析电车难题中的功利主义与道德主义冲突」模型给出一段观点平衡的漂亮话但细看既没有定义两种伦理观也没有落到具体价值判断。原因通用模型没有深度推理能力遇到复杂逻辑链会直接跳到训练数据里出现频率最高的「安全回答」而不是真正拆解问题。解决把问题拆成多轮追问。「先定义功利主义和道德主义伦理观再对比两者在电车难题中的不同结论最后举例说明各自的理论漏洞。」如果模型某一步答得模糊继续追问「刚才那一步的假设是什么」逼它补上缺失的推导链条。5.3 Ollama 生成越来越慢甚至中途中断现象本地模型跑了一会儿之后首 token 延迟明显变大生成长文本时甚至中断报错日志里出现显存相关提示。原因常见原因是上下文窗口num_ctx开得太大或者量化位宽太高导致显存被持续占满。另一个容易被忽略的原因是Ollama 默认会把部分层加载到 CPU 上跑一旦对话累计的 token 数超过某个阈值CPU 推理就成了瓶颈。解决先降num_ctx到 4096 重试确认链路正常再逐步调大。检查ollama ps看模型当前占用确认是否落在 GPU 上。7B 模型用 q4 量化就能保持可用质量没必要长期跑 fp16。如果 CPU offload 无法避免把num_ctx再减半给 CPU 运算留出余量。5.4 vLLM 启动报错或者请求超时max seq length 与显存参数的连锁反应现象vLLM 启动时报模型 max sequence length 相关错误或者启动成功后长文本请求直接超时。原因--max-model-len设得超过模型实际支持的最大长度会启动失败设得过大但显存不足会出现请求排队长、响应超时。vLLM 对显存是「预占式」的一旦预设长度太大连短请求也会被卡住。解决先确认模型自己的max_position_embeddings蒸馏版模型通常在 32k 左右但不同版本有出入别凭经验写。我一般先在配置里设 16384 做基准测试短请求跑通、显存占用率低于 90%再往上加。--gpu-memory-utilization也别一上来就 0.95留 0.1 的余量给 CUDA 上下文会更省心特别是同时要跑其他进程的机器。5.5 接入 Codex 或 harness 类工具时tool calls 链路卡住现象把 DeepSeek 接到 Codex 或 deepseek harness 这类多智能体编排工具后模型输出了一个工具调用tool call但链路一直等不到后续结果日志里出现跟messages tool calls need immediate results类似的提示。原因OpenAI 兼容协议里模型发起 tool call 之后调用方必须把工具执行结果以role: tool的消息回填进 messages 数组再重新交给模型继续推理。多数现成框架会自动做这件事但自己写编排逻辑时经常漏掉这个「回填」步骤导致状态机卡死。解决确认循环中把工具结果正确回填。核心逻辑类似这样messages [ {role: user, content: 查询本周用户登录次数并判断是否存在异常趋势} ] # 第一轮模型可能返回 tool_calls resp client.chat.completions.create( modeldeepseek-r1, messagesmessages, toolstools ) # 处理每个 tool call并回填结果 for call in resp.choices[0].message.tool_calls: tool_result execute_tool(call.function.name, call.function.arguments) messages.append(resp.choices[0].message) messages.append({ role: tool, tool_call_id: call.id, content: tool_result }) # 第二轮带着工具结果继续推理 final_resp client.chat.completions.create( modeldeepseek-r1, messagesmessages, toolstools )这个最小闭环里最容易踩坑的是tool_call_id必须严格对应用户消息中的 tool call id不能重新生成否则协议层校验不过。另外注意把模型第一次返回的完整消息对象包括 tool_call 的 id 和 function 部分原样追加进 messages再追加工具结果。顺序错了模型也会认为上下文不连贯。6. 工程化接入用 OpenAI 兼容 API 把 DeepSeek 接进现有工具链6.1 一个能跑通的 tool calls 最小闭环工具调用Function Calling是把 DeepSeek 接进业务系统的关键能力。上面的排查案例已经给了核心循环这里补一个更完整的场景示例模型先调用搜索工具再基于搜索结果做分析。这个链路跑通了接客服机器人、接代码审查助手、接数据报表问答都只是换工具列表的问题。我在自己的项目里习惯把所有工具执行结果统一转成 JSON 字符串回填避免类型不一致导致解析报错。6.2 接入 Codex、VSCode 与工作流时先对齐三个口径工程化接入时容易在三个地方踩坑顺序是模型名、messages 序列、base_url。Codex 类的工具接入 DeepSeek本质是把它当成一个 OpenAI 兼容的端点来配置关键是把端点指向你部署的 vLLM 服务或官方 API并把内部的模型路由名设为deepseek-r1这类逻辑名。VSCode 场景下Continue 这类插件同样只需要改模型提供方provider和 base_url就能在 IDE 里直接对话或做代码补全。用 CCSwitch 这类模型切换工具也可以快速在多个模型之间切换但配置时同样要保证模型名和本地服务的--served-model-name一致。企业微信或其他 IM 接入同理走的是同一个 OpenAI 兼容格式只是把请求封装进消息回调里。从那以后我每次接入新模型都会强制先跑一遍「对话 → 工具调用 → 工具结果回填 → 再对话」的最小链路确认 messages 序列和模型名没问题再往上叠业务功能。这个习惯帮我排掉了不少接入期莫名其妙的卡顿和超时。工程化接入这件事功夫不在多深的原理而在把最基本的口径对齐。希望帮到你。本文还有配套的精品资源点击获取