Files
t6_mem0/mem0/memory/telemetry.py
Prateek Chhikara c64e0824da [Mem0] Integrate Graph Memory (#1718)
Co-authored-by: Deshraj Yadav <deshrajdry@gmail.com>
2024-08-20 16:37:38 -07:00

72 lines
2.5 KiB
Python

import platform
import sys
from posthog import Posthog
from mem0.memory.setup import get_user_id, setup_config
class AnonymousTelemetry:
def __init__(self, project_api_key, host):
self.posthog = Posthog(project_api_key=project_api_key, host=host)
# Call setup config to ensure that the user_id is generated
setup_config()
self.user_id = get_user_id()
def capture_event(self, event_name, properties=None):
if properties is None:
properties = {}
properties = {
"python_version": sys.version,
"os": sys.platform,
"os_version": platform.version(),
"os_release": platform.release(),
"processor": platform.processor(),
"machine": platform.machine(),
**properties,
}
self.posthog.capture(
distinct_id=self.user_id, event=event_name, properties=properties
)
def identify_user(self, user_id, properties=None):
if properties is None:
properties = {}
self.posthog.identify(distinct_id=user_id, properties=properties)
def close(self):
self.posthog.shutdown()
# Initialize AnonymousTelemetry
telemetry = AnonymousTelemetry(
project_api_key="phc_hgJkUVJFYtmaJqrvf6CYN67TIQ8yhXAkWzUn9AMU4yX",
host="https://us.i.posthog.com",
)
def capture_event(event_name, memory_instance, additional_data=None):
event_data = {
"collection": memory_instance.collection_name,
"vector_size": memory_instance.embedding_model.config.embedding_dims,
"history_store": "sqlite",
"vector_store": f"{memory_instance.vector_store.__class__.__module__}.{memory_instance.vector_store.__class__.__name__}",
"llm": f"{memory_instance.llm.__class__.__module__}.{memory_instance.llm.__class__.__name__}",
"embedding_model": f"{memory_instance.embedding_model.__class__.__module__}.{memory_instance.embedding_model.__class__.__name__}",
"function": f"{memory_instance.__class__.__module__}.{memory_instance.__class__.__name__}.{memory_instance.version}",
}
if additional_data:
event_data.update(additional_data)
telemetry.capture_event(event_name, event_data)
def capture_client_event(event_name, instance, additional_data=None):
event_data = {
"function": f"{instance.__class__.__module__}.{instance.__class__.__name__}",
}
if additional_data:
event_data.update(additional_data)
telemetry.capture_event(event_name, event_data)