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

Function directCompressionExample

examples/prompt-builder/compression_example.go:24–63  ·  view source on GitHub ↗

directCompressionExample 直接使用 EnhancedPromptCompressor

()

Source from the content-addressed store, hash-verified

22
23// directCompressionExample 直接使用 EnhancedPromptCompressor
24func directCompressionExample() {
25 fmt.Println("=== 直接压缩示例 ===")
26
27 // 创建 Provider (这里用 nil 因为我们只测试简单压缩)
28 var prov provider.Provider // 实际使用时需要创建真实的 Provider
29
30 // 创建压缩器
31 compressor := agent.NewEnhancedPromptCompressor(prov, "zh")
32
33 // 生成一个长 prompt
34 longPrompt := generateLongPrompt()
35 fmt.Printf("原始长度: %d 字符\n", len(longPrompt))
36
37 // 测试不同压缩级别
38 levels := []struct {
39 name string
40 level agent.CompressionLevel
41 }{
42 {"轻度压缩", agent.CompressionLevelLight},
43 {"中度压缩", agent.CompressionLevelModerate},
44 {"激进压缩", agent.CompressionLevelAggressive},
45 }
46
47 for _, l := range levels {
48 result, err := compressor.Compress(context.Background(), longPrompt, &agent.CompressOptions{
49 Mode: agent.CompressionModeSimple, // 使用简单模式(不需要 LLM)
50 Level: l.level,
51 PreserveSections: []string{"Tools Manual", "Security"},
52 })
53 if err != nil {
54 log.Printf("压缩失败: %v", err)
55 continue
56 }
57
58 fmt.Printf("\n%s:\n", l.name)
59 fmt.Printf(" 压缩后长度: %d 字符\n", result.CompressedLength)
60 fmt.Printf(" 压缩率: %.2f%%\n", result.CompressionRatio*100)
61 fmt.Printf(" 节省 Token: %d\n", result.TokensSaved)
62 }
63}
64
65// templateCompressionExample 通过模板配置使用压缩
66func templateCompressionExample() {

Callers 1

RunCompressionExamplesFunction · 0.85

Calls 4

CompressMethod · 0.95
generateLongPromptFunction · 0.85
PrintfMethod · 0.80

Tested by

no test coverage detected