compressLLM LLM 驱动的压缩
(ctx context.Context, prompt string, opts *CompressOptions)
| 202 | |
| 203 | // compressLLM LLM 驱动的压缩 |
| 204 | func (c *EnhancedPromptCompressor) compressLLM(ctx context.Context, prompt string, opts *CompressOptions) (string, error) { |
| 205 | if c.llmCompressor == nil { |
| 206 | return prompt, errors.New("LLM compressor not available") |
| 207 | } |
| 208 | |
| 209 | targetLen := opts.TargetLength |
| 210 | if targetLen == 0 { |
| 211 | switch opts.Level { |
| 212 | case CompressionLevelLight: |
| 213 | targetLen = int(float64(len(prompt)) * 0.65) |
| 214 | case CompressionLevelModerate: |
| 215 | targetLen = int(float64(len(prompt)) * 0.45) |
| 216 | case CompressionLevelAggressive: |
| 217 | targetLen = int(float64(len(prompt)) * 0.25) |
| 218 | default: |
| 219 | targetLen = int(float64(len(prompt)) * 0.50) |
| 220 | } |
| 221 | } |
| 222 | |
| 223 | return c.llmCompressor.Compress(ctx, prompt, targetLen, opts.PreserveSections, int(opts.Level)) |
| 224 | } |
| 225 | |
| 226 | // compressHybrid 混合压缩(先规则后 LLM) |
| 227 | func (c *EnhancedPromptCompressor) compressHybrid(ctx context.Context, prompt string, opts *CompressOptions) (string, error) { |
no test coverage detected