版权归属于 LangChat Team
官网:https://langchat.cn
04 - 模型参数配置
版本说明
本文档基于 LangChain4j 1.10.0 版本编写。学习目标
通过本章节学习,你将能够:- 理解核心模型参数的含义和作用
- 掌握 temperature、topP、topK 等参数的配置
- 学会使用停止序列和输出长度限制
- 掌握频率惩罚和存在惩罚的使用
- 了解如何优化参数以获得最佳效果
前置知识
- 完成《01 - LangChain4j 简介》章节
- 完成《02 - 你的第一个 Chat 应用》章节
- 完成《03 - 深入理解 ChatModel》章节
- 了解基本的概率概念
核心概念
为什么需要参数配置?
大语言模型(LLM)的输出质量和风格可以通过各种参数来控制。合理的参数配置可以让模型:- 更符合预期 - 控制输出的风格和确定性
- 更高效 - 避免不必要的 Token 消耗
- 更安全 - 限制输出长度和内容
- 更有创意 - 或者更确定,根据需求调整
- 粗画笔(低 temperature)→ 精确、确定
- 细画笔(高 temperature)→ 有创意、多样化
- 限制画布大小(maxTokens)→ 控制作品尺寸
- 添加特殊颜料(其他参数)→ 改变风格
核心参数详解
1. Temperature(温度)
什么是 Temperature? Temperature 控制模型输出的随机性和创造性。| Temperature 值 | 效果 | 适用场景 |
|---|---|---|
| 0.0 | 完全确定,相同输入总是相同输出 | 数学计算、代码生成、需要精确答案的场景 |
| 0.1 - 0.3 | 高度确定,几乎无随机性 | 技术文档、数据分析、API 调用 |
| 0.4 - 0.6 | 适度确定,轻微变化 | 大多数量应用、问答系统 |
| 0.7 | 平衡(默认) | 平衡创造性和一致性 |
| 0.8 - 1.0 | 适度创造性 | 创意写作、故事生成、头脑风暴 |
| 1.0 - 2.0 | 高创造性 | 诗歌创作、创意写作、实验性应用 |
- 温度设置为 0 时,模型会贪婪采样,总是选择概率最高的词
- 温度越高,输出越不可预测
- 对于需要一致性的任务(如代码生成),使用低温度
- 对于需要创造性的任务(如创意写作),使用高温度
2. Top P(核采样)
什么是 Top P? Top P(Nucleus Sampling)限制模型只从累积概率达到某个阈值的词汇中选择。| Top P 值 | 效果 |
|---|---|
| 0.1 | 只从概率最高的 10% 词汇中选择,非常确定 |
| 0.5 | 从概率最高的 50% 词汇中选择,适度确定 |
| 0.9(推荐) | 从概率最高的 90% 词汇中选择,平衡多样性 |
| 1.0 | 从所有词汇中选择,完全开放 |
- 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:基于累积概率,更灵活
- Top K:固定数量词汇,更简单
4. Max Tokens(最大输出 Token 数)
什么是 Max Tokens? 限制模型输出的最大 Token 数量。- 成本控制 - 限制输出 Token 数,控制费用
- 响应时间 - 减少生成时间
- 输出长度 - 确保输出不会过长
- API 限制 - 某些 API 有 Token 限制
| 场景 | 建议值 | 说明 |
|---|---|---|
| 简短问答 | 100 - 300 | 短答案即可 |
| 代码片段 | 200 - 500 | 代码通常不长 |
| 技术文档 | 300 - 800 | 中等长度 |
| 文章段落 | 500 - 1000 | 需要详细内容 |
| 长篇创作 | 1000 - 4000 | 需要完整内容 |
5. Stop Sequences(停止序列)
什么是 Stop Sequences? 指定某些字符串,当模型输出这些字符串时停止生成。- 结构化输出 - 在特定标记处停止
- 问答格式 - 在答案后停止
- 防止冗长 - 避免不必要的内容
6. Frequency Penalty(频率惩罚)
什么是 Frequency Penalty? 频率惩罚降低重复词语出现的概率,鼓励模型使用更多样化的词汇。| Frequency Penalty 值 | 效果 |
|---|---|
| -2.0 | 鼓励重复,增加词语出现频率 |
| 0.0 | 无惩罚(默认) |
| 0.1 - 0.5 | 轻微惩罚,减少轻微重复 |
| 0.6 - 1.0 | 中等惩罚,适度减少重复 |
| 1.1 - 2.0 | 强惩罚,显著减少重复 |
- 避免模型重复相同内容
- 鼓励更丰富的词汇表达
- 创意写作时通常使用较高值
7. Presence Penalty(存在惩罚)
什么是 Presence Penalty? 存在惩罚降低已经出现过的词再次出现的概率,无论它们出现了多少次。| 特性 | Frequency Penalty | Presence Penalty |
|---|---|---|
| 重复惩罚 | 与出现次数成比例 | 与出现次数无关 |
| 效果 | 减少频繁重复 | 避免重复提及 |
| 适用 | 避免过度使用某些词 | 避免重复相同概念 |
- 通常 Presence Penalty 设置为 0.1 - 0.5
- 对于需要多样性的场景使用
- 可以与 Frequency Penalty 结合使用
8. Logit Bias(Logit 偏置)
什么是 Logit Bias? Logit Bias 允置特定 token 的出现概率。| Logit Bias 值 | 效果 |
|---|---|
| -100 | 完全禁止该 token 出现 |
| -10 到 -1 | 显著降低出现概率 |
| -1 到 1 | 轻微影响 |
| 1 到 10 | 显著提高出现概率 |
| 100 | 强制该 token 出现 |
- 避免某些词汇出现
- 鼓励特定风格或术语
- 内容过滤和合规
参数组合策略
场景一:精确问答
- 事实性问题
- 技术文档
- API 调用
- 数据分析
场景二:创意写作
- 故事创作
- 诗歌写作
- 创意头脑风暴
- 艺术生成
场景三:代码生成
- 代码生成
- 函数编写
- 算法实现
- 代码解释
场景四:聊天机器人
- 客服聊天
- 虚拟助手
- 日常对话
- 咨询问答
场景五:摘要生成
- 文章摘要
- 文档总结
- 会议纪要
- 关键信息提取
完整示例:参数对比工具
测试代码示例
实践练习
练习 1:创建参数配置工具
创建一个工具类,封装常用配置:练习 2:参数优化实验
创建实验工具,测试不同参数组合:练习 3:动态参数调整
创建一个根据任务类型动态调整参数的服务:总结
本章要点
-
核心参数
- Temperature:控制随机性和创造性(0.0-2.0)
- Top P:核采样,限制候选词范围(0.0-1.0)
- Top K:从概率最高的 K 个词中选择
- Max Tokens:限制最大输出长度
- Stop Sequences:指定停止标记
-
惩罚参数
- Frequency Penalty:降低重复词概率(-2.0 到 2.0)
- Presence Penalty:降低已出现词的再出现概率
- Logit Bias:偏置特定 token 的概率
-
参数组合策略
- 精确问答:低温度 + 标准采样
- 创意写作:高温度 + 惩罚
- 代码生成:低温度 + 停止序列
- 聊天:平衡温度 + 轻微惩罚
-
最佳实践
- 根据任务类型选择合适的参数
- 通过实验优化参数组合
- 封装常用配置便于复用
- 动态调整参数适应不同场景
下一步
在下一章节中,我们将学习:- ChatMessage 类型的详细介绍
- UserMessage、SystemMessage、AiMessage 的使用
- 消息组合和对话上下文管理
常见问题
Q1:Temperature 和 Top P 应该同时使用吗? A:通常同时使用可以获得更好的效果。Temperature 控制整体分布,Top P 限制候选范围。但也可以只使用其中一个。 Q2:如何选择合适的 Max Tokens 值? A:考虑:- 任务类型(问答用小值,创作用大值)
- 成本控制(Token 数量与费用成正比)
- 用户体验(太短可能信息不足,太长可能冗余)
- Frequency Penalty:与词的出现次数成比例
- Presence Penalty:无论出现多少次,只要出现过就惩罚
- 通常可以结合使用,建议值:Frequency 0.1-0.5,Presence 0.1-0.3
- 定义评估指标(如相关性、多样性等)
- 测试不同参数组合
- 对比结果
- 选择最佳配置
- 在新数据上验证
参考资料
版权归属于 LangChat Team
官网:https://langchat.cn

