-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsave_load_state.py
More file actions
52 lines (34 loc) · 1.35 KB
/
save_load_state.py
File metadata and controls
52 lines (34 loc) · 1.35 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
from agentflowpy import Context, SimpleAgent, StepLead, AGENT_END, AGENT_START
from dataclasses import dataclass, field
# from pydantic import BaseModel, Field
# #### MESSAGE AS RAW CLASS #####
# class Message:
# def __init__(self, content:str, role:str="user"):
# self.content = content
# self.role = role
# def __str__(self):
# return f"Message(content={self.content}, role={self.role})"
#### MESSAGE AS DATACLASS #####
@dataclass
class Message:
content:str
role:str = field(default="user")
# ##### MESSAGE AS Pydantic BaseModel #####
# class Message(BaseModel):
# content:str
# role:str = Field(default="user")
agent1 = SimpleAgent[Message]()
# add contexes
agent1.add_context("cx1", Context[Message]())
agent1.add_context("cx2", Context[Message]())
# add messages
agent1.contexts["cx1"].messages.append(Message(content="Message to first context"))
agent1.contexts["cx2"].messages.append(Message(content="Message to second context"))
state_dict = agent1.contexts_to_dicts() # Serialize as dictionary
# Create another agent
contexts = SimpleAgent[Message].contexts_from_dicts(state_dict, msg_type=Message)
agent2 = SimpleAgent[Message]()
agent2.add_contexts(contexts)
for id, cx in agent2.contexts.items():
print(f"# MESSAGES OF '{id}'")
print(f"{"\n".join([f"> {m}" for m in cx.messages])}\n")