Skip to main content
版权归属于 LangChat Team
官网:https://langchat.cn

04 - 模型参数配置

版本说明

本文档基于 LangChain4j 1.10.0 版本编写。

学习目标

通过本章节学习,你将能够:
  • 理解核心模型参数的含义和作用
  • 掌握 temperature、topP、topK 等参数的配置
  • 学会使用停止序列和输出长度限制
  • 掌握频率惩罚和存在惩罚的使用
  • 了解如何优化参数以获得最佳效果

前置知识

  • 完成《01 - LangChain4j 简介》章节
  • 完成《02 - 你的第一个 Chat 应用》章节
  • 完成《03 - 深入理解 ChatModel》章节
  • 了解基本的概率概念

核心概念

为什么需要参数配置?

大语言模型(LLM)的输出质量和风格可以通过各种参数来控制。合理的参数配置可以让模型:
  1. 更符合预期 - 控制输出的风格和确定性
  2. 更高效 - 避免不必要的 Token 消耗
  3. 更安全 - 限制输出长度和内容
  4. 更有创意 - 或者更确定,根据需求调整
类比理解: 如果把 LLM 比作一个画家,参数就像是画家的画笔和颜料配置:
  • 粗画笔(低 temperature)→ 精确、确定
  • 细画笔(高 temperature)→ 有创意、多样化
  • 限制画布大小(maxTokens)→ 控制作品尺寸
  • 添加特殊颜料(其他参数)→ 改变风格

核心参数详解

1. Temperature(温度)

什么是 Temperature? Temperature 控制模型输出的随机性和创造性。
取值范围:0.0 - 2.0 示例对比:
注意事项:
  • 温度设置为 0 时,模型会贪婪采样,总是选择概率最高的词
  • 温度越高,输出越不可预测
  • 对于需要一致性的任务(如代码生成),使用低温度
  • 对于需要创造性的任务(如创意写作),使用高温度

2. Top P(核采样)

什么是 Top P? Top P(Nucleus Sampling)限制模型只从累积概率达到某个阈值的词汇中选择。
取值范围:0.0 - 1.0 Top P vs Temperature:
  • Temperature:调整整个概率分布的平滑程度
  • Top P:只考虑概率最高的部分词汇
使用建议:
  • 通常 Top P 设置为 0.9 或 1.0
  • 可以与 Temperature 结合使用
  • 对于需要精确输出的场景,可以降低 Top P

3. Top K(Top K 采样)

什么是 Top K? Top K 只从概率最高的 K 个词汇中选择。
使用建议:
  • OpenAI 模型通常使用 Top P 而不是 Top K
  • 其他模型提供商可能支持 Top K
  • 典型值:40、50、100
Top P vs Top K:
  • Top P:基于累积概率,更灵活
  • Top K:固定数量词汇,更简单

4. Max Tokens(最大输出 Token 数)

什么是 Max Tokens? 限制模型输出的最大 Token 数量。
为什么使用 Max Tokens?
  1. 成本控制 - 限制输出 Token 数,控制费用
  2. 响应时间 - 减少生成时间
  3. 输出长度 - 确保输出不会过长
  4. API 限制 - 某些 API 有 Token 限制
不同场景的建议值: 示例:

5. Stop Sequences(停止序列)

什么是 Stop Sequences? 指定某些字符串,当模型输出这些字符串时停止生成。
使用场景:
  1. 结构化输出 - 在特定标记处停止
  2. 问答格式 - 在答案后停止
  3. 防止冗长 - 避免不必要的内容
示例:

6. Frequency Penalty(频率惩罚)

什么是 Frequency Penalty? 频率惩罚降低重复词语出现的概率,鼓励模型使用更多样化的词汇。
取值范围:-2.0 到 2.0 使用场景:
  • 避免模型重复相同内容
  • 鼓励更丰富的词汇表达
  • 创意写作时通常使用较高值
示例:

7. Presence Penalty(存在惩罚)

什么是 Presence Penalty? 存在惩罚降低已经出现过的词再次出现的概率,无论它们出现了多少次。
取值范围:-2.0 到 2.0 Frequency Penalty vs Presence Penalty: 使用建议:
  • 通常 Presence Penalty 设置为 0.1 - 0.5
  • 对于需要多样性的场景使用
  • 可以与 Frequency Penalty 结合使用

8. Logit Bias(Logit 偏置)

什么是 Logit Bias? Logit Bias 允置特定 token 的出现概率。
取值范围:-100 到 100 使用场景:
  • 避免某些词汇出现
  • 鼓励特定风格或术语
  • 内容过滤和合规
注意: 需要知道 token 的 ID,这通常需要通过 tokenizer 工具获取。

参数组合策略

场景一:精确问答

适用:
  • 事实性问题
  • 技术文档
  • API 调用
  • 数据分析

场景二:创意写作

适用:
  • 故事创作
  • 诗歌写作
  • 创意头脑风暴
  • 艺术生成

场景三:代码生成

适用:
  • 代码生成
  • 函数编写
  • 算法实现
  • 代码解释

场景四:聊天机器人

适用:
  • 客服聊天
  • 虚拟助手
  • 日常对话
  • 咨询问答

场景五:摘要生成

适用:
  • 文章摘要
  • 文档总结
  • 会议纪要
  • 关键信息提取

完整示例:参数对比工具

测试代码示例

实践练习

练习 1:创建参数配置工具

创建一个工具类,封装常用配置:

练习 2:参数优化实验

创建实验工具,测试不同参数组合:

练习 3:动态参数调整

创建一个根据任务类型动态调整参数的服务:

总结

本章要点

  1. 核心参数
    • Temperature:控制随机性和创造性(0.0-2.0)
    • Top P:核采样,限制候选词范围(0.0-1.0)
    • Top K:从概率最高的 K 个词中选择
    • Max Tokens:限制最大输出长度
    • Stop Sequences:指定停止标记
  2. 惩罚参数
    • Frequency Penalty:降低重复词概率(-2.0 到 2.0)
    • Presence Penalty:降低已出现词的再出现概率
    • Logit Bias:偏置特定 token 的概率
  3. 参数组合策略
    • 精确问答:低温度 + 标准采样
    • 创意写作:高温度 + 惩罚
    • 代码生成:低温度 + 停止序列
    • 聊天:平衡温度 + 轻微惩罚
  4. 最佳实践
    • 根据任务类型选择合适的参数
    • 通过实验优化参数组合
    • 封装常用配置便于复用
    • 动态调整参数适应不同场景

下一步

在下一章节中,我们将学习:
  • ChatMessage 类型的详细介绍
  • UserMessage、SystemMessage、AiMessage 的使用
  • 消息组合和对话上下文管理

常见问题

Q1:Temperature 和 Top P 应该同时使用吗? A:通常同时使用可以获得更好的效果。Temperature 控制整体分布,Top P 限制候选范围。但也可以只使用其中一个。 Q2:如何选择合适的 Max Tokens 值? A:考虑:
  • 任务类型(问答用小值,创作用大值)
  • 成本控制(Token 数量与费用成正比)
  • 用户体验(太短可能信息不足,太长可能冗余)
Q3:Frequency Penalty 和 Presence Penalty 有什么区别? A:
  • Frequency Penalty:与词的出现次数成比例
  • Presence Penalty:无论出现多少次,只要出现过就惩罚
  • 通常可以结合使用,建议值:Frequency 0.1-0.5,Presence 0.1-0.3
Q4:Temperature 设置为 0 会完全确定吗? A:理论上是的,但不同模型可能有微小差异。对于完全确定的行为,建议使用 temperature < 0.1。 Q5:如何通过实验找到最佳参数? A:
  1. 定义评估指标(如相关性、多样性等)
  2. 测试不同参数组合
  3. 对比结果
  4. 选择最佳配置
  5. 在新数据上验证

参考资料


版权归属于 LangChat Team
官网:https://langchat.cn