OpenAI 常用参数

  • max_tokens:控制生成内容的长度。
  • temperature:控制生成内容的随机性和创造性。
  • n:生成多个回答供选择。
  • top_p:通过概率控制生成内容的多样性。
  • presence_penalty:鼓励生成新内容,避免重复。
  • frequency_penalty:减少词语重复,提高多样性。
  • stream:控制生成的文本是否以流式方式逐步发送。

1. temperature(温度参数)

  • 作用:控制输出概率分布的平滑程度,即生成文本的随机性。值范围[0,1],值越大,生成的文本越随机。

例子

输入:你要写一首关于秋天的诗。

  • temperature = 0.2(低温度,收敛回答):
    • 回应:“秋天的树叶飘舞在风中,金黄色的田野映入眼帘。”
  • temperature = 0.8(高温度,更随机):
    • 回应:“秋天的旋律在微风中回荡,金黄的梦幻洒满田野。”

2. top_p(控制采样)

  • 定义:确定生成文本时考虑的 token 累计概率。值为0到1之间,常用来替代temperature设置。top_p为0.9时,模型仅在最有可能的 token 集合(累计概率达到0.9)中进行选择。
  • 作用:动态限制候选词的选择范围,避免模型选择过低概率的词汇,同时保留一定的多样性。控制生成内容的多样性,top_p越小,生成内容越确定。

例子:

  • 输入:描述一个梦想中的度假胜地。
  • top_p = 0.9(较有创意):
    • 回应:“岛屿被蓝色的海水环绕,白色沙滩上点缀着茅草屋,椰子树随风摇曳。”
  • top_p = 0.5(较确定):
    • 回应:“度假胜地是一座热带岛屿,有着美丽的海滩和清澈的海水,适合享受安静的时光。”

主要区别

参数 作用 影响 适用场景
temperature 调整生成的随机性 高温度生成更多样但可能不准确,低温度生成更稳定但可能重复 需要控制文本创造性或稳定性时
top_p 控制采样范围 仅从概率较高的词中采样,动态调整候选池 需要平衡多样性和连贯性时

3. n(生成数量)

  • 作用:指定每次请求生成多少个独立的文本候选。
  • 机制
    • n = 1(默认):返回一个生成结果。
    • n > 1:返回多个不同的生成结果(每个结果都是独立生成的)。
  • 应用场景
    • 通常用于需要多样性选择的场景,比如生成多个候选答案来挑选最佳的回答。

4. max_tokens(最大生成长度)

  • 作用:限制生成文本的最大长度,以 tokens 为单位。
  • 机制
    • max_tokens 设置一个上限,超过这个值时,模型会停止输出。
    • 如果 max_tokens 过小,可能导致句子被截断,影响可读性。
    • max_tokens 过大可能会导致不必要的冗长输出,并增加计算成本。
  • 应用场景
    • 限制输出长度,适用于对话系统、摘要生成等需要短文本的任务。
    • 避免无限制的文本生成,提高效率。
    • 应用的时候设置10个 token , 可能左右会使用10个左右的 token, 要根据具体分词策略来计算。比如:秋风起秋风可以作为一个 token , 也可能是风起作为一个 token。

5. presence_penalty(出现惩罚/阻止调整)

  • 作用:影响模型生成新主题内容(新词)的倾向,减少重复内容,提高生成的多样性。值范围通常在-2.0到2.0之间。较高的值鼓励模型生成前面未出现过的新内容。
  • 应用场景
    • 适用于对话、创意写作,避免模型不断重复相同的短语。
    • 适用于故事生成,让模型更愿意引入新概念。
  • 例子:
    • 输入:重新生成描述夏天的句子。
    • presence_penalty = 1.0(较高惩罚):
      • 回应:“夏天阳光充足,清凉的冰淇淋是人们的最爱。”
    • presence_penalty = 0.0(无惩罚):
      • 回应:“夏天阳光灿烂,人们喜欢躺在沙滩上享受日光浴。”

6. frequency_penalty(重复词惩罚因子)

  • 作用:减少重复词的出现,使文本更加多样化。值范围通常[-2.0,2.0]。高值会减少模型重复使用某些词或短语的频率。

  • 用法:用来减少重复词语,提高输出的流畅度和多样性。

例子:

  • 输入:描述你的一天。
  • frequency_penalty = 1.5(较高惩罚):
    • 回应:“我的一天开始于晨跑,然后享用早餐并开始工作。午餐后,进行一些锻炼和阅读。”
  • frequency_penalty = 0.0(无惩罚):
    • 回应:“我的一天从晨跑开始,之后吃早餐准备工作。午饭后,我会去健身房锻炼,结束后读书放松。”

5. stream(流式输出)

  • 作用:控制模型是否逐步返回生成的文本,而不是等待完整生成后再返回。
  • 机制
    • stream = False(默认):模型等待完整生成后再一次性返回所有结果。
    • stream = True:模型逐步返回 token,使用户可以实时看到输出。
  • 应用场景
    • 适用于对话机器人、实时应用(如 AI 助手、代码补全)。
    • 增强用户体验,使生成过程更加流畅(类似于 ChatGPT 的流式响应)。
    1
    2
    3
    4
    5
    6
    7
     response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "解释一下量子力学"}],
    stream=True
    )
    for chunk in response:
    print(chunk['choices'][0]['delta']['content'], end='')

参数总结对比

参数 作用 典型取值 影响
n 生成多少个不同的输出 1-10(通常 1) 控制输出数量,提高选择性
max_tokens 限制最大输出长度 50-4000 避免超长生成或截断句子
presence_penalty 促使生成新词,减少重复 -2.0 到 2.0 促进创造性,减少重复内容
frequency_penalty 降低重复词出现的频率 -2.0 到 2.0 减少冗余,提高文本质量
stream 控制是否逐步返回生成文本 True/False 适用于实时交互,提高用户体验

“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

OpenAI 常用参数
http://neurowave.tech/2025/02/21/2-OpenAI常用参数/
作者
Artin Tan
发布于
2025年2月21日
更新于
2025年2月24日