这些LLM参数的含义
这些LLM参数的含义
这些都是大语言模型的生成参数,用来控制AI回答的风格和质量:
java
// 1. temperature (温度) - 控制创造性
aiChatParams.setTemperature(0.7);
/*
- 0.0 = 完全确定性,总是选择最可能的词 (适合事实性回答)
- 1.0 = 高度随机性,回答更有创造性 (适合创作性任务)
- 0.7 = 平衡点,既准确又有一定创造性
*/
// 2. topP (核采样) - 控制词汇选择范围
aiChatParams.setTopP(0.9);
/*
- 0.1 = 只考虑概率最高的10%的词汇 (保守)
- 0.9 = 考虑概率累计到90%的词汇 (多样)
- 与temperature配合使用
*/
// 3. presencePenalty (存在惩罚) - 避免重复话题
aiChatParams.setPresencePenalty(0.1);
/*
- 0.0 = 不惩罚重复
- 2.0 = 强烈惩罚重复,鼓励谈论新话题
- 防止AI一直重复相同的内容
*/
// 4. frequencyPenalty (频率惩罚) - 避免重复用词
aiChatParams.setFrequencyPenalty(0.1);
/*
- 0.0 = 不惩罚重复用词
- 2.0 = 强烈惩罚重复用词,鼓励用词多样性
- 让AI用词更丰富
*/
// 5. maxTokens (最大令牌数) - 控制回答长度
aiChatParams.setMaxTokens(2000);
/*
-
限制AI回答的最大长度
-
1个token ≈ 0.75个英文单词 ≈ 1个中文字符
-
2000 tokens ≈ 2000个中文字符
*/ -
模型温度: 值越大,回复内容越赋有多样性创造性、随机性;设为0根据事实回答,希望得到精准答案应该降低该参数;日常聊天建议0.5-0.8。
-
词汇属性: 值越小,Ai生成的内容越单调也越容易理解;值越大,Ai回复的词汇围越大,越多样化。
-
话题属性: 值越大,越能够让Ai更好地控制新话题的引入,建议微调或不变。
-
重复属性: 值越大,越能够让Ai更好地避免重复之前说过的话,建议微调或不变。
-
最大回复(tokens): 设置Ai最大回复内容大小,会影响返回结果的长度。普通聊天建议500-800;短文生成建议800-2000;代码生成建议2000-3600;长文生成建议4000左右(或选择长回复模型)
问题2:历史消息数量的含义
java
aiChatParams.setMaxMsgNumber(5); // 只保留最近5轮对话
不是展示数量,而是上下文记忆数量!
具体作用:
java
// 用户的完整聊天历史:
// 第1轮:用户:"你好" → AI:"你好!我是AI助手"
// 第2轮:用户:"天气怎么样" → AI:"我无法获取实时天气"
// 第3轮:用户:"推荐个餐厅" → AI:"推荐XX餐厅"
// 第4轮:用户:"它在哪里" → AI:"XX餐厅位于..."
// 第5轮:用户:"营业时间呢" → AI:"营业时间是..."
// 第6轮:用户:"价格贵吗" ← 当前问题
// 如果maxMsgNumber=5,发送给LLM的上下文:
List contextMessages = [
// 只保留最近5轮对话 (第2-6轮)
UserMessage("天气怎么样"),
AiMessage("我无法获取实时天气"),
UserMessage("推荐个餐厅"),
AiMessage("推荐XX餐厅"),
UserMessage("它在哪里"),
AiMessage("XX餐厅位于..."),
UserMessage("营业时间呢"),
AiMessage("营业时间是..."),
UserMessage("价格贵吗") // 当前问题
];
为什么要限制历史消息?
- ✅ 节省Token成本:LLM按输入长度收费
- ✅ 提高响应速度:减少处理的文本量
- ✅ 保持相关性:太久远的对话可能不相关
- ✅ 避免超长限制:LLM有最大输入长度限制

浙公网安备 33010602011771号