basicUsageExample demonstrates basic Logic Memory operations
(ctx context.Context)
| 49 | |
| 50 | // basicUsageExample demonstrates basic Logic Memory operations |
| 51 | func basicUsageExample(ctx context.Context) { |
| 52 | fmt.Println("--- Example 1: Basic Usage ---") |
| 53 | |
| 54 | // 1. Create a store (InMemory for this example) |
| 55 | store := logic.NewInMemoryStore() |
| 56 | |
| 57 | // 2. Create the manager |
| 58 | manager, err := logic.NewManager(&logic.ManagerConfig{ |
| 59 | Store: store, |
| 60 | ConfidenceBoost: 0.1, // Boost confidence by 10% on repeated patterns |
| 61 | }) |
| 62 | if err != nil { |
| 63 | log.Fatalf("Failed to create manager: %v", err) |
| 64 | } |
| 65 | defer func() { _ = manager.Close() }() |
| 66 | |
| 67 | // 3. Record a memory manually |
| 68 | mem := &logic.LogicMemory{ |
| 69 | Namespace: "user:alice", |
| 70 | Scope: logic.ScopeUser, |
| 71 | Type: "preference", |
| 72 | Key: "writing_tone", |
| 73 | Value: "casual", |
| 74 | Description: "Alice prefers a casual, friendly writing tone", |
| 75 | Provenance: &memory.MemoryProvenance{ |
| 76 | SourceType: memory.SourceUserInput, |
| 77 | Confidence: 0.8, |
| 78 | Sources: []string{"user_feedback:2024-01-15"}, |
| 79 | }, |
| 80 | } |
| 81 | |
| 82 | err = manager.RecordMemory(ctx, mem) |
| 83 | if err != nil { |
| 84 | log.Fatalf("Failed to record memory: %v", err) |
| 85 | } |
| 86 | fmt.Printf("Recorded memory: %s = %v (confidence: %.0f%%)\n", |
| 87 | mem.Key, mem.Value, mem.Provenance.Confidence*100) |
| 88 | |
| 89 | // 4. Retrieve memories |
| 90 | memories, err := manager.RetrieveMemories(ctx, "user:alice", |
| 91 | logic.WithTopK(5), |
| 92 | logic.WithMinConfidence(0.5), |
| 93 | ) |
| 94 | if err != nil { |
| 95 | log.Fatalf("Failed to retrieve memories: %v", err) |
| 96 | } |
| 97 | |
| 98 | fmt.Printf("Retrieved %d memories for user:alice\n", len(memories)) |
| 99 | for _, m := range memories { |
| 100 | fmt.Printf(" - %s: %s (%.0f%% confidence)\n", |
| 101 | m.Key, m.Description, m.Provenance.Confidence*100) |
| 102 | } |
| 103 | |
| 104 | // 5. Record the same memory again to boost confidence |
| 105 | mem2 := &logic.LogicMemory{ |
| 106 | Namespace: "user:alice", |
| 107 | Scope: logic.ScopeUser, |
| 108 | Type: "preference", |
no test coverage detected