Appearance
4. 模型参数和上下文机制
流式输出
开启后将根据模型实时输出的结果动态输出消息;
关闭后将等待模型输出结束,将所有消息按1s间隔逐条发送。
据说流式输出可能影响 Gemini 截断?
温度
不要调太大,容易乱码
越大模型越发癫乱码错误概率越大,越低模型输出越稳定。
温度设置为 0 后,在同一输入下同一模型的输出大概率是相同的。
重复惩罚
当模型容易出现重复问题时可适当调大。
Gemini 不适用该参数
上下文设置(较为复杂)
| 名称 | 字母记号 |
|---|---|
| 对话上下文大小 | N |
| 当截断分段丢弃数量 | M |
| 压缩触发比例 | R |
| 缓冲消息数量 | K |
截断
指当消息数量达到设定的对话上下文大小时,直接丢弃最旧的对话部分
截断分段丢弃数量
当消息数量超出对话上下文大小后,丢弃最早的会话将使得LLM无法利用缓存必须重新计算所有注意力的值,使得这部分输入价格翻几倍。
因此为了优化缓存利用率,我们可以在超出对话上下文大小后,直接丢弃一批最早的上下文,使后续几次请求继续利用这次重新创建的缓存而无需每次请求都重新创建缓存。
例如:
1. 当截断分段丢弃数量 M=10 时
假设对话上下文为N = 128
当消息数量为129 >= N时,归一化使得消息数量变为N-M = 118
这次请求需要重新创建缓存
后续请求(假设每次请求后AI只返回1条消息,即每次请求只增加用户和AI一共2条消息):120 -> 122 -> 124 -> 126
这4次请求都可以重复利用前面重新创建的请求
综合缓存率为4/5 = 0.8
2. 当截断分段丢弃数量 M=1 时(相当于旧版)
假设对话上下文为N = 128
那么每次请求都会丢弃最早的上下文,必须重新创建缓存
综合缓存率为0
我们以 DeepSeek 为例,假设缓存输入价格是无缓存的 2%
则方式一价格为0.8\*0.02+0.2\*1 = 0.216, 方式二价格为1*1 = 1
理论成本下降78.4%
另外,在会话消息流中可以看到一条 截断边界 代表当前截断的位置
长期记忆(实验性)
长期记忆可理解为当会话消息超出某个阈值时,在后台发起LLM请求对会话消息进行总结并更新长期记忆(可在每个会话右上角会话设置->长期记忆处中进行查看和编辑),以减少上下文的长度。
具体机制
当上下文长度超过 N * R 时,在后台对会话进行总结。
总结范围为:从 max(总结边界, 截断边界) 到 (最新对话位置-K),并将总结边界更新到总结范围末尾。
在后续会话中,将携带长期记忆内容,以及从 max(总结边界-K, 截断边界) 到 (最新对话) 的消息。
在会话消息流中可以看到一条 总结边界 代表当前总结的位置