大模型(LLM)的若干科普之问(五):调用LLM涉及哪些参数?

embedded/2025/1/19 4:07:40/

一、一个简单的示例

其实,调LLM并不复杂,看一个例子:
以下是一个使用 OpenAI API 的 Python 程序示例,它可以将一段文本进行修改和完善。程序会调用 GPT 模型对输入文本进行润色,使其更加流畅、清晰或符合特定风格。

代码示例

python">import openai# 设置 OpenAI API Key
openai.api_key = "your-api-key"  # 替换为你的 OpenAI API Keydef improve_text(input_text, style="formal"):"""使用 OpenAI API 修改和完善文本:param input_text: 输入的原始文本:param style: 文本风格(如 "formal" 正式, "casual" 随意, "creative" 创意):return: 修改后的文本"""try:# 定义系统提示词,指导模型如何修改文本system_prompt = f"You are a helpful assistant that improves text to make it more {style} and polished."# 调用 OpenAI APIresponse = openai.ChatCompletion.create(model="gpt-3.5-turbo",  # 使用 GPT-3.5 模型messages=[{"role": "system", "content": system_prompt},{"role": "user", "content": input_text}],max_tokens=500,  # 限制生成的最大 token 数temperature=0.7  # 控制生成文本的随机性)# 提取修改后的文本improved_text = response['choices'][0]['message']['content']return improved_textexcept Exception as e:return f"An error occurred: {e}"# 示例输入文本
input_text = """
The quick brown fox jumps over the lazy dog. This is a test sentence to see how the text can be improved.
"""# 调用函数修改文本
improved_text = improve_text(input_text, style="formal")
print("Improved Text:\n", improved_text)

代码说明

  1. API Key:

    • 需要替换 your-api-key 为你的 OpenAI API Key。
  2. improve_text 函数:

    • 接受两个参数:input_text(原始文本)和 style(文本风格,如 “formal” 正式、“casual” 随意等)。
    • 使用 system_prompt 指导模型如何修改文本。
    • 调用 OpenAI 的 ChatCompletion API 生成修改后的文本。
  3. 输出:

    • 返回修改后的文本,并打印到控制台。

示例输入与输出

输入文本:
The quick brown fox jumps over the lazy dog. This is a test sentence to see how the text can be improved.
输出文本(风格:正式):
The swift brown fox leaps over the lethargic dog. This is a test sentence designed to demonstrate how the text can be enhanced and refined.
输出文本(风格:创意):
In a flash of motion, the quick brown fox soars gracefully over the lazy dog, a timeless scene brought to life. This sentence serves as a canvas to explore the art of textual improvement.

注意事项

  1. API 费用:

    • 使用 OpenAI API 会产生费用,具体费用取决于 token 使用量。
  2. 模型选择:

    • 可以根据需要选择不同的模型(如 gpt-3.5-turbogpt-4)。
  3. 错误处理:

    • 代码中包含了简单的错误处理,如果 API 调用失败会返回错误信息。

二、调用LLM涉及哪些参数

上述程序中用到了 max_tokens 参数,除了 max_tokens 参数外,还有一些与 token 相关的参数可以调整,以控制生成文本的行为和效果。以下是常见的与 token 相关的参数及其作用:


1. max_tokens

  • 作用: 限制生成文本的最大 token 数(包括输入和输出)。
  • 示例:
    python">max_tokens=100  # 生成最多 100 个 token
    

2. temperature

  • 作用: 控制生成文本的随机性。
    • 值越低,生成文本越确定性和保守(倾向于选择高概率的 token)。
    • 值越高,生成文本越随机和多样化。
  • 范围: 0.02.0
  • 示例:
    python">temperature=0.7  # 中等随机性
    

3. top_p(Nucleus Sampling)

  • 作用: 控制生成文本的多样性。
    • 模型会从概率质量最高的 token 中采样,直到累积概率超过 top_p
    • temperature 结合使用,可以更好地控制生成文本的质量。
  • 范围: 0.01.0
  • 示例:
    python">top_p=0.9  # 从概率质量最高的 90% 的 token 中采样
    

4. top_k

  • 作用: 限制模型从概率最高的 k 个 token 中采样。
    • top_p 类似,但直接指定 token 的数量。
  • 范围: 正整数。
  • 示例:
    python">top_k=50  # 从概率最高的 50 个 token 中采样
    

5. stop

  • 作用: 指定一个或多个停止符,当生成文本中出现这些符号时,停止生成。
  • 示例:
    python">stop=["\n", "。"]  # 遇到换行符或句号时停止生成
    

6. presence_penalty

  • 作用: 控制生成文本中是否避免重复已经出现过的 token。
    • 正值会惩罚已经出现过的 token,减少重复。
    • 负值会鼓励重复已经出现过的 token。
  • 范围: -2.02.0
  • 示例:
    python">presence_penalty=0.5  # 轻微惩罚重复 token
    

7. frequency_penalty

  • 作用: 控制生成文本中是否避免频繁出现相同的 token。
    • 正值会惩罚频繁出现的 token,减少重复。
    • 负值会鼓励频繁出现相同的 token。
  • 范围: -2.02.0
  • 示例:
    python">frequency_penalty=0.5  # 轻微惩罚频繁出现的 token
    

8. logprobs

  • 作用: 返回生成文本中每个 token 的对数概率。
    • 用于分析生成文本的置信度。
  • 范围: TrueFalse
  • 示例:
    python">logprobs=True  # 返回每个 token 的对数概率
    

9. n

  • 作用: 指定生成多个独立的回复。
    • 可以同时生成多个候选文本。
  • 范围: 正整数。
  • 示例:
    python">n=3  # 生成 3 个独立的回复
    

10. best_of

  • 作用: 生成多个候选文本,并返回其中最好的一个。
    • n 类似,但只返回一个最优结果。
  • 范围: 正整数。
  • 示例:
    python">best_of=5  # 生成 5 个候选文本,返回最好的一个
    

11. echo

  • 作用: 是否在生成文本中包含输入提示。
    • 如果设置为 True,返回结果会包含输入提示和生成文本。
  • 范围: TrueFalse
  • 示例:
    python">echo=True  # 返回结果包含输入提示
    

12. logit_bias

  • 作用: 调整特定 token 的生成概率。
    • 可以增加或减少某些 token 的出现概率。
  • 格式: 字典,键为 token ID,值为偏差值(-100 到 100)。
  • 示例:
    python">logit_bias={12345: -100}  # 禁止生成 token ID 为 12345 的 token
    

13. seed

  • 作用: 设置随机种子,确保生成结果可复现。
    • 相同的种子和输入会生成相同的输出。
  • 范围: 整数。
  • 示例:
    python">seed=42  # 设置随机种子为 42
    

14. stream

  • 作用: 是否以流式传输方式返回生成结果。
    • 适合生成较长文本时逐步返回结果。
  • 范围: TrueFalse
  • 示例:
    python">stream=True  # 启用流式传输
    

15. suffix

  • 作用: 在生成文本后附加一个后缀。
    • 适合需要固定格式的生成任务。
  • 示例:
    python">suffix="\n\nGenerated by AI"  # 在生成文本后附加后缀
    

16. user

  • 作用: 标识用户 ID,用于跟踪和审计。
    • 适合多用户场景。
  • 示例:
    python">user="user123"  # 标识当前用户
    

这些参数可以帮助你更精细地控制生成文本的行为和质量。根据你的需求,可以灵活组合这些参数。例如:

  • 使用 temperaturetop_p 控制生成文本的随机性和多样性。
  • 使用 presence_penaltyfrequency_penalty 减少重复内容。
  • 使用 stopmax_tokens 控制生成文本的长度。

http://www.ppmy.cn/embedded/155134.html

相关文章

ASP.NET Core - 依赖注入(三)

ASP.NET Core - 依赖注入(三) 4. 容器中的服务创建与释放 4. 容器中的服务创建与释放 我们使用了 IoC 容器之后,服务实例的创建和销毁的工作就交给了容器去处理,前面也讲到了服务的生命周期,那三种生命周期中对象的创…

C++实现设计模式--- 观察者模式 (Observer)

观察者模式 (Observer) 观察者模式 是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生改变时,其依赖者(观察者)会收到通知并自动更新。 意图 定义对象之间的一对多依赖关系。当一个对象状…

PyTorch DAY2: 搭建神经网络

如今,我们已经了解了 PyTorch 中张量及其运算,但这远远不够。本次实验将学会如何使用 PyTorch 方便地构建神经网络模型,以及 PyTorch 训练神经网络的步骤及方法。 知识点 PyTorch 构建神经网络Sequential 容器结构使用 GPU 加速训练模型保存…

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…

Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

CV与NLP经典大模型解读

一。llm与lora微调策略解读 (1)文本大模型 llama:meta开源语言模型(咱们能负担得起下游任务了)。 lora:绘你模型你也得能训练的动才行(咱们也能微调下游任务)。loradiffusion。 self-instruct:下游任务得规矩些,输入与输出都得有一个标准格式。 peft:将上面三个…

Python----Python高级(面向对象:封装、继承、多态,方法,属性,拷贝,组合,单例)

一、封装 隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只对外暴露“相关调用方法”。 Python追求简洁的语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现。 class BankAccoun…

yolo训练数据集样本的标签形状一致是什么意思

“标签形状一致”指的是每个样本的标签数据在维度和大小上必须是相同的。例如,在目标检测任务中,标签通常包含目标的位置信息(例如,[class, x_center, y_center, width, height]),每个目标在图像中的标签应…