compressHybrid 混合压缩(先规则后 LLM)
(ctx context.Context, prompt string, opts *CompressOptions)
| 532 | |
| 533 | // compressHybrid 混合压缩(先规则后 LLM) |
| 534 | func (s *DefaultCompressionService) compressHybrid(ctx context.Context, prompt string, opts *CompressOptions) (*CompressResult, error) { |
| 535 | // 第一阶段:简单压缩 |
| 536 | simpleResult, err := s.compressSimple(ctx, prompt, opts) |
| 537 | if err != nil { |
| 538 | return nil, err |
| 539 | } |
| 540 | |
| 541 | // 检查是否达到目标长度 |
| 542 | if opts.TargetLength > 0 && simpleResult.CompressedLength <= opts.TargetLength { |
| 543 | return simpleResult, nil |
| 544 | } |
| 545 | |
| 546 | // 第二阶段:LLM 精压缩 |
| 547 | llmResult, err := s.compressLLM(ctx, simpleResult.Compressed, opts) |
| 548 | if err != nil { |
| 549 | // LLM 压缩失败,降级到简单压缩结果 |
| 550 | return simpleResult, nil |
| 551 | } |
| 552 | |
| 553 | return llmResult, nil |
| 554 | } |
| 555 | |
| 556 | // generateCacheKey 生成缓存键 |
| 557 | func (s *DefaultCompressionService) generateCacheKey(prompt string, opts *CompressOptions) string { |
no test coverage detected