Repository navigation
Expand file tree
/
Copy pathexample_test.go
More file actions
163 lines (131 loc) · 3.34 KB
/
Copy pathexample_test.go
File metadata and controls
163 lines (131 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package mem0_test
import (
"context"
"fmt"
"log"
"github.com/plexusone/mem0-go"
)
func Example_basic() {
// Create a client with API key
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Add a memory
messages := []mem0.Message{
{Role: mem0.RoleUser, Content: "I prefer dark mode in all my applications"},
}
result, err := client.Memory().Add(ctx, messages, mem0.WithUserID("user-123"))
if err != nil {
log.Fatal(err)
}
fmt.Printf("Added memory with event ID: %s\n", result.EventID)
}
func Example_search() {
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Search for memories
results, err := client.Memory().Search(ctx, "dark mode preferences",
mem0.WithFilters(mem0.Filters{UserID: "user-123"}),
mem0.WithTopK(5),
)
if err != nil {
log.Fatal(err)
}
for _, r := range results {
fmt.Printf("Memory: %s (score: %.2f)\n", r.Memory, r.Score)
}
}
func Example_getAll() {
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Get all memories for a user with pagination
result, err := client.Memory().GetAll(ctx,
mem0.WithGetAllFilters(mem0.Filters{UserID: "user-123"}),
mem0.WithPage(1),
mem0.WithPageSize(50),
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Total memories: %d\n", result.Count)
for _, m := range result.Results {
fmt.Printf("- %s\n", m.Memory)
}
}
func Example_update() {
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Update an existing memory
updated, err := client.Memory().Update(ctx, "memory-id-123", "I now prefer light mode")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Updated memory: %s\n", updated.Memory)
}
func Example_history() {
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Get history for a memory
history, err := client.Memory().History(ctx, "memory-id-123")
if err != nil {
log.Fatal(err)
}
for _, h := range history {
fmt.Printf("Event: %s, Old: %s, New: %s\n", h.Event, h.OldMemory, h.NewMemory)
}
}
func Example_withMetadata() {
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Add a memory with metadata
messages := []mem0.Message{
{Role: mem0.RoleUser, Content: "My favorite programming language is Go"},
}
metadata := map[string]interface{}{
"source": "user_profile",
"verified": true,
}
result, err := client.Memory().Add(ctx, messages,
mem0.WithUserID("user-123"),
mem0.WithMetadata(metadata),
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Added memory with metadata: %v\n", result.EventID)
}
func Example_errorHandling() {
client, err := mem0.NewClient(mem0.WithAPIKey("your-api-key"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Try to get a non-existent memory
_, err = client.Memory().Get(ctx, "non-existent-id")
if err != nil {
if mem0.IsNotFoundError(err) {
fmt.Println("Memory not found")
} else if mem0.IsUnauthorizedError(err) {
fmt.Println("Authentication failed")
} else {
log.Fatal(err)
}
}
}