|
17 | 17 | from .base_logger import LLMConfig
|
18 | 18 |
|
19 | 19 | if TYPE_CHECKING:
|
20 |
| - from autogen import ConversableAgent, OpenAIWrapper |
| 20 | + from autogen import Agent, ConversableAgent, OpenAIWrapper |
21 | 21 |
|
22 | 22 | logger = logging.getLogger(__name__)
|
23 | 23 | lock = threading.Lock()
|
@@ -103,6 +103,20 @@ class TEXT, -- type or class name of cli
|
103 | 103 | """
|
104 | 104 | self._run_query(query=query)
|
105 | 105 |
|
| 106 | + query = """ |
| 107 | + CREATE TABLE IF NOT EXISTS events ( |
| 108 | + event_name TEXT, |
| 109 | + source_id INTEGER, |
| 110 | + source_name TEXT, |
| 111 | + agent_module TEXT DEFAULT NULL, |
| 112 | + agent_class_name TEXT DEFAULT NULL, |
| 113 | + id INTEGER PRIMARY KEY, |
| 114 | + json_state TEXT, |
| 115 | + timestamp DATETIME DEFAULT CURRENT_TIMESTAMP |
| 116 | + ); |
| 117 | + """ |
| 118 | + self._run_query(query=query) |
| 119 | + |
106 | 120 | current_verion = self._get_current_db_version()
|
107 | 121 | if current_verion is None:
|
108 | 122 | self._run_query(
|
@@ -246,6 +260,41 @@ class = excluded.class,
|
246 | 260 | )
|
247 | 261 | self._run_query(query=query, args=args)
|
248 | 262 |
|
| 263 | + def log_event(self, source: Union[str, Agent], name: str, **kwargs: Dict[str, Any]) -> None: |
| 264 | + from autogen import Agent |
| 265 | + |
| 266 | + if self.con is None: |
| 267 | + return |
| 268 | + |
| 269 | + json_args = json.dumps(kwargs, default=lambda o: f"<<non-serializable: {type(o).__qualname__}>>") |
| 270 | + |
| 271 | + if isinstance(source, Agent): |
| 272 | + query = """ |
| 273 | + INSERT INTO events (source_id, source_name, event_name, agent_module, agent_class_name, json_state, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?) |
| 274 | + """ |
| 275 | + args = ( |
| 276 | + id(source), |
| 277 | + source.name if hasattr(source, "name") else source, |
| 278 | + name, |
| 279 | + source.__module__, |
| 280 | + source.__class__.__name__, |
| 281 | + json_args, |
| 282 | + get_current_ts(), |
| 283 | + ) |
| 284 | + self._run_query(query=query, args=args) |
| 285 | + else: |
| 286 | + query = """ |
| 287 | + INSERT INTO events (source_id, source_name, event_name, json_state, timestamp) VALUES (?, ?, ?, ?, ?) |
| 288 | + """ |
| 289 | + args_str_based = ( |
| 290 | + id(source), |
| 291 | + source.name if hasattr(source, "name") else source, |
| 292 | + name, |
| 293 | + json_args, |
| 294 | + get_current_ts(), |
| 295 | + ) |
| 296 | + self._run_query(query=query, args=args_str_based) |
| 297 | + |
249 | 298 | def log_new_wrapper(self, wrapper: OpenAIWrapper, init_args: Dict[str, Union[LLMConfig, List[LLMConfig]]]) -> None:
|
250 | 299 | if self.con is None:
|
251 | 300 | return
|
|
0 commit comments