Skip to Content
教程采样

采样

大语言模型在生成文本时,会基于概率分布从候选词中选择下一个词。TemperatureTop-PTop-K 是三个核心的采样参数,它们共同决定了模型输出的随机性、创造性和确定性。

理解并合理配置这三个参数,能让你在不同场景下获得理想的生成效果。


核心概念

参数作用取值范围默认值适用场景
Temperature控制整体随机性0.0 - 2.00.7全场景
Top-P按累积概率截断候选词0.0 - 1.00.9需要平衡创造性和连贯性
Top-K按排名截断候选词1 - 10050需要严格限制候选范围

快速选择指南

  • 追求准确性(代码、数学、事实问答):低 Temperature + 低 Top-P
  • 日常对话:Temperature 0.7 + Top-P 0.9(默认)
  • 创意写作:高 Temperature + 高 Top-P

Temperature

原理说明

Temperature 控制模型输出概率分布的”平滑程度”:

  • 低 Temperature(接近 0):概率分布更”尖锐”,模型倾向于选择概率最高的词,输出更确定、保守
  • 高 Temperature(大于 1):概率分布更”平缓”,模型有更多机会选择低概率词,输出更随机、创造性

直观理解

想象一个装满彩色小球(代表候选词)的袋子:

  • Temperature = 0.1:袋子里几乎都是同一种颜色的小球,抽取结果非常确定
  • Temperature = 1.0:各色小球按原始比例分布,抽取有一定随机性
  • Temperature = 1.5:小球的分布被”打乱”,原本稀少颜色的球变多了,抽取结果更不可预测

代码示例

from openai import OpenAI client = OpenAI( base_url="https://api.ant-ling.com/v1/", api_key="YOUR_API_KEY" ) # 低 Temperature:确定性输出 response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "中国的首都是哪里?"}], temperature=0.1 # 几乎确定性的回答 ) # 高 Temperature:创造性输出 response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "写一首关于月亮的诗"}], temperature=1.2 # 更有创意的表达 )

Temperature 推荐值

场景推荐值说明
事实问答、代码生成0.0 - 0.3追求准确性和一致性
文本摘要、翻译0.3 - 0.5保持原文含义,适度流畅
通用对话0.5 - 0.8平衡自然度和准确性
创意写作、头脑风暴0.8 - 1.2鼓励多样性和创造性
探索性生成1.2 - 1.5获得意想不到的输出

Top-P

原理说明

Top-P(Nucleus Sampling)是一种动态截断策略:

  1. 模型按概率从高到低排序所有候选词
  2. 累加这些词的概率,直到累积概率达到设定的 P 值
  3. 只从这个”核心集合”中采样

例如,Top-P = 0.9 表示:只考虑概率累积到 90% 的那部分词,忽略尾部 10% 的低概率词。

直观理解

想象你在书店选书:

  • Top-P = 0.3:只从畅销书排行榜的前 30% 中选,选择范围很小,结果可预测
  • Top-P = 0.9:从畅销书排行榜的前 90% 中选,既有热门书也有小众精品,平衡了质量和多样性
  • Top-P = 1.0:从整个书店随便选,可能选到质量参差不齐的书

与 Temperature 的区别

特性TemperatureTop-P
作用方式改变概率分布形状截断候选词集合
影响范围全局局部(每层采样)
低值效果更确定候选词更少
高值效果更随机候选词更多

代码示例

from openai import OpenAI client = OpenAI( base_url="https://api.ant-ling.com/v1/", api_key="YOUR_API_KEY" ) # 保守的 Top-P:只考虑高概率词 response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "解释量子计算的基本原理"}], top_p=0.5, # 只从最可能的 50% 词中选择 temperature=0.5 ) # 开放的 Top-P:考虑更多候选词 response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "构思一个科幻故事的开头"}], top_p=0.95, # 考虑 95% 的候选词 temperature=0.8 )

Top-P 推荐值

场景推荐值说明
代码生成、数学推理0.1 - 0.5严格限制,保证逻辑正确
技术文档、学术写作0.5 - 0.8专业且连贯
通用对话0.8 - 0.95自然流畅
创意写作0.9 - 1.0保留更多可能性

Top-K

原理说明

Top-K 是一种固定截断策略:

  1. 模型按概率排序所有候选词
  2. 只保留概率最高的前 K 个词
  3. 在这 K 个词中进行采样

例如,Top-K = 50 表示:每次只从概率最高的 50 个词中选择,完全忽略其他词。

直观理解

想象一个抽奖箱:

  • Top-K = 1:箱子里只有 1 个球,结果完全确定
  • Top-K = 10:箱子里有 10 个球,都是热门选择
  • Top-K = 100:箱子里有 100 个球,选择范围更广

与 Top-P 的对比

特性Top-KTop-P
筛选方式固定数量动态概率累积
候选词数量固定为 K动态变化
适用场景需要严格限制需要自适应平衡
组合使用通常与 Top-P 二选一更常用

代码示例

from openai import OpenAI client = OpenAI( base_url="https://api.ant-ling.com/v1/", api_key="YOUR_API_KEY" ) # 使用 Top-K 限制候选范围 response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "列出三种可再生能源"}], top_k=40, # 只从概率最高的 40 个词中选择 temperature=0.6 )

Top-K 推荐值

场景推荐值说明
确定性任务1 - 10近乎贪婪解码
代码生成20 - 40保证语法正确性
通用任务40 - 60平衡质量和多样性
创意任务60 - 100保留更多选择

参数组合策略

不同的参数组合适用于不同场景。以下是四种常用模式:

1. 精确模式

适用场景:代码生成、数学推理、事实问答

特点:输出高度确定,多次调用结果基本一致

response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "用 Python 写一个快速排序"}], temperature=0.1, top_p=0.1 # 或 top_k=5 )

2. 平衡模式

适用场景:通用对话、智能客服

特点:自然流畅的对话体验,百灵大模型默认配置

response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[ {"role": "system", "content": "你是专业的客服助手"}, {"role": "user", "content": "如何重置密码?"} ], temperature=0.7, top_p=0.9 )

3. 创意模式

适用场景:写作、头脑风暴、营销文案

特点:丰富的表达方式,意想不到的联想

response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "为新款智能手表写一句广告语"}], temperature=1.0, top_p=0.95 )

4. 冒险模式

适用场景:艺术生成、风格迁移、概念探索

特点:高度随机性,可能出现意外结果

response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "描述一个未来的城市"}], temperature=1.3, top_p=1.0 )

参数关系图解

Temperature 控制整体随机性 ┌─────────────────────────────────────┐ │ 低 ←────────────────────────→ 高 │ │ 确定 平衡 随机 │ │ 0.0 0.7 1.5+ │ └─────────────────────────────────────┘ Top-P 控制候选词范围 ┌─────────────────────────────────────┐ │ 窄 ←────────────────────────→ 宽 │ │ 严格 适中 开放 │ │ 0.1 0.9 1.0 │ └─────────────────────────────────────┘ 组合效果示例: ┌─────────────┬───────────┬────────────────────────┐ │ Temperature │ Top-P │ 效果 │ ├─────────────┼───────────┼────────────────────────┤ │ 0.1 │ 0.1 │ 极度确定,适合代码 │ │ 0.5 │ 0.7 │ 保守但自然 │ │ 0.7 │ 0.9 │ 平衡,默认推荐 │ │ 1.0 │ 0.95 │ 创意写作 │ │ 1.3 │ 1.0 │ 实验性,高风险高回报 │ └─────────────┴───────────┴────────────────────────┘

常见问题

Q1: Temperature 设为 0 会怎样?

Temperature = 0 时,模型几乎总是选择概率最高的词(贪婪解码)。这会产生最确定性的输出,适合需要一致结果的场景。但注意,由于浮点精度,Temperature = 0 也不能保证 100% 确定性。

Q2: Top-P 和 Top-K 可以同时使用吗?

可以,但通常不建议。同时使用会叠加限制,可能导致候选词过少。百灵大模型推荐使用 Top-P(更灵活),仅在需要严格控制时使用 Top-K。

Q3: 为什么有时参数调了没效果?

  • 短文本:短提示的生成空间有限,参数影响不明显
  • 确定性任务:如数学计算,模型本身倾向确定性输出
  • 上下文约束:强系统提示或示例会覆盖参数影响

Q4: 如何调试参数效果?

建议用相同提示多次调用,观察输出变化:

# 测试不同 Temperature 的效果 for temp in [0.1, 0.5, 1.0, 1.5]: response = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": "描述春天"}], temperature=temp, n=3 # 生成 3 个结果 ) print(f"\nTemperature={temp}:") for choice in response.choices: print(f" - {choice.message.content[:50]}...")

Q5: 参数设置有最佳实践吗?

  • 从默认值开始(temperature=0.7, top_p=0.9)
  • 需要准确性 → 降低 temperature
  • 需要创造性 → 提高 temperature
  • 需要多样性 → 提高 top_p
  • 需要稳定性 → 降低 top_p

参数速查表

场景类型典型应用TemperatureTop-PTop-K
精确模式代码生成、数学计算0.0 - 0.30.1 - 0.51 - 10
内容生成文章摘要、翻译0.3 - 0.60.7 - 0.920 - 40
对话交互聊天机器人、客服0.6 - 0.9 ⭐0.85 - 0.95 ⭐40 - 60
创意创作故事写作、广告文案0.9 - 1.30.9 - 1.060 - 100
探索实验风格迁移、艺术生成1.2 - 1.50.95 - 1.080 - 100

⭐ 表示百灵大模型默认值


相关资源

Was this page helpful?
Last updated on