Skip to content

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, 截断边界)(最新对话) 的消息。

在会话消息流中可以看到一条 总结边界 代表当前总结的位置

总结边界
总结边界