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

Function Phase4IntegrationExample

examples/phase4_integration.go:14–66  ·  view source on GitHub ↗

Phase4IntegrationExample 展示如何集成 SummarizationMiddleware 和 AgentMemoryMiddleware

()

Source from the content-addressed store, hash-verified

12
13// Phase4IntegrationExample 展示如何集成 SummarizationMiddleware 和 AgentMemoryMiddleware
14func Phase4IntegrationExample() error {
15 _ = context.Background()
16
17 // 1. 创建后端存储
18 // 使用 CompositeBackend 支持多路径路由
19 filesystemBackend := createFilesystemBackend()
20 composite := backends.NewCompositeBackend(filesystemBackend, []backends.RouteConfig{
21 {Prefix: "/memories/", Backend: createStoreBackend()},
22 })
23
24 // 2. 创建自定义 Summarizer (使用真实 LLM)
25 customSummarizer := func(ctx context.Context, messages []types.Message) (string, error) {
26 // 这里应该调用真实的 LLM API 生成总结
27 // 示例使用 Provider 接口
28 return generateSummaryWithLLM(ctx, messages)
29 }
30
31 // 3. 创建 SummarizationMiddleware
32 summarizationMW, err := middleware.NewSummarizationMiddleware(&middleware.SummarizationMiddlewareConfig{
33 Summarizer: customSummarizer,
34 MaxTokensBeforeSummary: 170000, // Claude 3.5 Sonnet 的 200k 上下文的 85%
35 MessagesToKeep: 6, // 保留最近 3 轮对话
36 SummaryPrefix: "## Previous conversation summary:",
37 })
38 if err != nil {
39 return fmt.Errorf("failed to create summarization middleware: %w", err)
40 }
41
42 // 4. 创建 AgentMemoryMiddleware
43 memoryMW, err := middleware.NewAgentMemoryMiddleware(&middleware.AgentMemoryMiddlewareConfig{
44 Backend: composite,
45 MemoryPath: "/memories/",
46 // 使用默认模板: <agent_memory>...</agent_memory>
47 })
48 if err != nil {
49 return fmt.Errorf("failed to create agent memory middleware: %w", err)
50 }
51
52 // 5. 构建中间件栈
53 middlewares := []middleware.Middleware{
54 memoryMW, // 优先级 5: 最早执行,注入记忆
55 summarizationMW, // 优先级 40: 在调用模型前检查并总结
56 // ... 其他中间件
57 }
58
59 // 6. 创建 Agent 并使用中间件
60 fmt.Printf("Created agent with %d middlewares\n", len(middlewares))
61 fmt.Printf("- SummarizationMiddleware: max_tokens=%d, keep_messages=%d\n",
62 170000, 6)
63 fmt.Printf("- AgentMemoryMiddleware: memory_path=%s\n", "/memories/")
64
65 return nil
66}
67
68// generateSummaryWithLLM 使用 LLM 生成对话总结
69func generateSummaryWithLLM(_ context.Context, messages []types.Message) (string, error) {

Callers

nothing calls this directly

Calls 7

NewCompositeBackendFunction · 0.92
NewAgentMemoryMiddlewareFunction · 0.92
createFilesystemBackendFunction · 0.85
createStoreBackendFunction · 0.85
generateSummaryWithLLMFunction · 0.85
PrintfMethod · 0.80

Tested by

no test coverage detected