一、DeepSeek 使用
1. 创新与模型演进
- V3:开源顶尖,推理更快;训练成本相对低。
- R1(对标 o1):在 V3 上用 GRPO 等强化学习强化推理;MIT 许可;API 可用思维链(
deepseek-reasoner)。 - 三大架构点:
- MLA:压缩 KV Cache,降显存、提效率
- MoE:总参大、激活少(医院分诊类比)
- 混合精度(FP8):降训练算力
- R1 系列:Zero(纯 RL)→ R1(冷启动 SFT→RL→再 SFT→全场景 RL)→ 蒸馏小模型(1.5B~70B)
2. 尺寸与选型
| 尺寸 | 大致用途 |
|---|---|
| 1.5B | 轻量问答,可 CPU |
| 7B/8B | 文案、一般代码 |
| 14B~32B | 推理/专业任务 |
| 70B~671B | 高算力、旗舰 |
编程选型:日常写代码用 V3;复杂算法/深度推理用 R1。
3. 蒸馏与量化(部署必备)
- 蒸馏:教师→学生,适合端侧、高并发、低算力。
- 量化:FP32→INT8/4-bit,更小更快,数值/细节任务易掉点;常见 GPTQ、动态量化、QLoRA、PTQ。
4. 实战路径
- Cursor + DeepSeek:小球碰撞 HTML,多轮纠错(边界、重力、自适应等)
- 私有化:魔搭下载蒸馏版;显存约 1.5B→1--2G ... 671B→约 496GB
- 部署三件套:vLLM(高吞吐)/ Ollama(简单)/ Python+GPU(直接加载)
- API:阿里 DashScope 调
deepseek-r1(情感分析示例) - 封装:Ollama
11434→ FastAPI8000对外提供服务
打卡要求:任选一种方式部署任意一款开源模型并调通。
二、提示词工程
1. 原理与模型差异
- Prompt → 词向量 → 自回归逐词生成。
- 通用模型:要结构化、补短板(CoT、few-shot)。
- 推理模型:指令宜短、直说目标;硬拆步骤可能反而伤效果。
2. 编写原则
明确目标 → 具体约束 → 简洁 → 示例/边界引导 → 迭代优化。
可重复强调;允许答「不知道」;专业场景少留歧义。
3. 编写框架(重要性从高到低)
任务 > 上下文 > 示例 > 角色 > 格式 > 语气
4. 五大技巧
- 限制输出格式(如 JSON)
- 分隔符区分多段输入
- Few-shot 样例
- CoT 分步推理
- 按受众角色讲解(如「像对五岁小孩解释」)
5. Prompt 实战(DashScope)
围绕「手机流量套餐客服」递进:
- 识别需求(名称/月费/流量)
- 强制 JSON
- CoT 审核客服话术是否合规
- 用 Prompt 优化 Prompt
打卡:结合自己业务完成以上之一即可。
python
#!/usr/bin/env python
# coding: utf-8
# In[ ]:
### 使用提示词完成任务
# In[2]:
# 导入依赖库
import dashscope
import os
# 从环境变量中获取 API Key
dashscope.api_key = os.getenv('DASHSCOPE_API_KEY')
# 基于 prompt 生成文本
# 使用 deepseek-v3 模型
def get_completion(prompt, model="deepseek-v3"):
messages = [{"role": "user", "content": prompt}] # 将 prompt 作为用户输入
response = dashscope.Generation.call(
model=model,
messages=messages,
result_format='message', # 将输出设置为message形式
temperature=0, # 模型输出的随机性,0 表示随机性最小
)
return response.output.choices[0].message.content # 返回模型生成的文本
# 任务描述
instruction = """
你的任务是识别用户对手机流量套餐产品的选择条件。
每种流量套餐产品包含三个属性:名称,月费价格,月流量。
根据用户输入,识别用户在上述三种属性上的需求是什么。
"""
# 用户输入
input_text = """
办个100G的套餐。
"""
# prompt 模版。instruction 和 input_text 会被替换为上面的内容
prompt = f"""
# 目标
{instruction}
# 用户输入
{input_text}
"""
print("==== Prompt ====")
print(prompt)
print("================")
# 调用大模型
response = get_completion(prompt)
print(response)
# ### JSON格式
# In[3]:
# 输出格式
output_format = """
以 JSON 格式输出
"""
# 稍微调整下咒语,加入输出格式
prompt = f"""
# 目标
{instruction}
# 输出格式
{output_format}
# 用户输入
{input_text}
"""
# 调用大模型,指定用 JSON mode 输出
response = get_completion(prompt)
print(response)
# ### CoT示例
# In[12]:
instruction = """
给定一段用户与手机流量套餐客服的对话,。
你的任务是判断客服的回答是否符合下面的规范:
- 必须有礼貌
- 必须用官方口吻,不能使用网络用语
- 介绍套餐时,必须准确提及产品名称、月费价格和月流量总量。上述信息缺失一项或多项,或信息与事实不符,都算信息不准确
- 不可以是话题终结者
已知产品包括:
经济套餐:月费50元,月流量10G
畅游套餐:月费180元,月流量100G
无限套餐:月费300元,月流量1000G
校园套餐:月费150元,月流量200G,限在校学生办理
"""
# 输出描述
output_format = """
如果符合规范,输出:Y
如果不符合规范,输出:N
"""
context = """
用户:你们有什么流量大的套餐
客服:亲,我们现在正在推广无限套餐,每月300元就可以享受1000G流量,您感兴趣吗?
"""
cot = ""
#cot = "请一步一步分析对话"
prompt = f"""
# 目标
{instruction}
{cot}
# 输出格式
{output_format}
# 对话上下文
{context}
"""
response = get_completion(prompt)
print(response)
# ### 使用Prompt调优Prompt
# In[13]:
user_prompt = """
做一个手机流量套餐的客服代表,叫小瓜。可以帮助用户选择最合适的流量套餐产品。可以选择的套餐包括:
经济套餐,月费50元,10G流量;
畅游套餐,月费180元,100G流量;
无限套餐,月费300元,1000G流量;
校园套餐,月费150元,200G流量,仅限在校生。"""
instruction = """
你是一名专业的提示词创作者。你的目标是帮助我根据需求打造更好的提示词。
你将生成以下部分:
提示词:{根据我的需求提供更好的提示词}
优化建议:{用简练段落分析如何改进提示词,需给出严格批判性建议}
问题示例:{提出最多3个问题,以用于和用户更好的交流}
"""
prompt = f"""
# 目标
{instruction}
# 用户提示词
{user_prompt}
"""
response = get_completion(prompt)
print(response)