MCPcopy Create free account
hub / github.com/astercloud/aster / CompressSystemPrompt

Method CompressSystemPrompt

pkg/compression/service.go:156–213  ·  view source on GitHub ↗

CompressSystemPrompt 压缩 System Prompt

(ctx context.Context, prompt string, opts *CompressOptions)

Source from the content-addressed store, hash-verified

154
155// CompressSystemPrompt 压缩 System Prompt
156func (s *DefaultCompressionService) CompressSystemPrompt(ctx context.Context, prompt string, opts *CompressOptions) (*CompressResult, error) {
157 startTime := time.Now()
158
159 // 设置默认选项
160 if opts == nil {
161 opts = &CompressOptions{
162 Mode: ModeHybrid,
163 Level: LevelModerate,
164 Language: "zh",
165 UseCache: true,
166 }
167 }
168
169 // 检查缓存
170 if opts.UseCache {
171 cacheKey := s.generateCacheKey(prompt, opts)
172 if cached := s.cache.Get(cacheKey); cached != nil {
173 s.updateStats(cached, true)
174 cached.CacheHit = true
175 return cached, nil
176 }
177 }
178
179 // 执行压缩
180 var result *CompressResult
181 var err error
182
183 switch opts.Mode {
184 case ModeSimple:
185 result, err = s.compressSimple(ctx, prompt, opts)
186 case ModeLLM:
187 result, err = s.compressLLM(ctx, prompt, opts)
188 case ModeHybrid:
189 result, err = s.compressHybrid(ctx, prompt, opts)
190 default:
191 return nil, fmt.Errorf("unsupported compression mode: %s", opts.Mode)
192 }
193
194 if err != nil {
195 return nil, err
196 }
197
198 // 设置结果信息
199 result.Duration = time.Since(startTime)
200 result.Mode = string(opts.Mode)
201 result.CacheHit = false
202
203 // 缓存结果
204 if opts.UseCache {
205 cacheKey := s.generateCacheKey(prompt, opts)
206 s.cache.Set(cacheKey, result)
207 }
208
209 // 更新统计
210 s.updateStats(result, false)
211
212 return result, nil
213}

Calls 7

generateCacheKeyMethod · 0.95
updateStatsMethod · 0.95
compressSimpleMethod · 0.95
compressLLMMethod · 0.95
compressHybridMethod · 0.95
GetMethod · 0.65
SetMethod · 0.65