compress 执行压缩
(ctx context.Context, prompt string, pCtx *PromptContext)
| 189 | |
| 190 | // compress 执行压缩 |
| 191 | func (pb *PromptBuilder) compress(ctx context.Context, prompt string, pCtx *PromptContext) (string, error) { |
| 192 | if pb.compressor == nil { |
| 193 | return prompt, nil |
| 194 | } |
| 195 | |
| 196 | config := pCtx.Template.Runtime.PromptCompression |
| 197 | |
| 198 | // 构建压缩选项 |
| 199 | opts := &CompressOptions{ |
| 200 | TargetLength: config.TargetLength, |
| 201 | PreserveSections: config.PreserveSections, |
| 202 | } |
| 203 | |
| 204 | // 设置默认值 |
| 205 | if opts.TargetLength == 0 { |
| 206 | opts.TargetLength = 3000 |
| 207 | } |
| 208 | if len(opts.PreserveSections) == 0 { |
| 209 | opts.PreserveSections = []string{"Tools Manual", "Security Guidelines"} |
| 210 | } |
| 211 | |
| 212 | // 设置压缩模式 |
| 213 | switch config.Mode { |
| 214 | case "simple": |
| 215 | opts.Mode = CompressionModeSimple |
| 216 | case "llm": |
| 217 | opts.Mode = CompressionModeLLM |
| 218 | case "hybrid": |
| 219 | opts.Mode = CompressionModeHybrid |
| 220 | default: |
| 221 | opts.Mode = CompressionModeHybrid |
| 222 | } |
| 223 | |
| 224 | // 设置压缩级别 |
| 225 | switch config.Level { |
| 226 | case 1: |
| 227 | opts.Level = CompressionLevelLight |
| 228 | case 2: |
| 229 | opts.Level = CompressionLevelModerate |
| 230 | case 3: |
| 231 | opts.Level = CompressionLevelAggressive |
| 232 | default: |
| 233 | opts.Level = CompressionLevelModerate |
| 234 | } |
| 235 | |
| 236 | result, err := pb.compressor.Compress(ctx, prompt, opts) |
| 237 | if err != nil { |
| 238 | return prompt, err |
| 239 | } |
| 240 | |
| 241 | return result.Compressed, nil |
| 242 | } |
| 243 | |
| 244 | // collectEnvironmentInfo 收集环境信息 |
| 245 | // sessionTime 参数用于 KV-Cache 优化:在同一会话中保持时间戳稳定,避免缓存失效 |