From 5fca21971d984a2eff8ebe82f29d0964c9def009 Mon Sep 17 00:00:00 2001 From: nyanxyz Date: Tue, 12 Mar 2024 23:37:38 +0900 Subject: [PATCH 1/4] add customProperties to OpenSession, CreateMessage event --- alignai/client.py | 35 +++- alignai/ingestion/v1alpha/event_pb2.py | 168 +++++++++++--------- alignai/ingestion/v1alpha/event_pb2.pyi | 35 ++-- alignai/ingestion/v1alpha/ingestion_pb2.py | 16 +- alignai/ingestion/v1alpha/ingestion_pb2.pyi | 4 +- alignai/utils.py | 17 ++ 6 files changed, 168 insertions(+), 107 deletions(-) diff --git a/alignai/client.py b/alignai/client.py index 2067ac6..abe49d3 100644 --- a/alignai/client.py +++ b/alignai/client.py @@ -18,7 +18,7 @@ ) from alignai.ingestion.v1alpha.event_pb2 import Event, EventProperties from alignai.logger import get_logger -from alignai.utils import datetime_to_timestamp +from alignai.utils import CustomProperties, datetime_to_timestamp, serialize_custom_properties from alignai.worker import Worker @@ -61,7 +61,13 @@ def __init__( self.worker.setup(self.buffer_storage) self.worker.start() - def open_session(self, session_id: str, user_id: str, assistant_id: str = DEFAULT_ASSISTANT_ID) -> None: + def open_session( + self, + session_id: str, + user_id: str, + assistant_id: str = DEFAULT_ASSISTANT_ID, + custom_properties: CustomProperties | None = None, + ) -> None: """Record the initiation of a session. Args: @@ -74,7 +80,10 @@ def open_session(self, session_id: str, user_id: str, assistant_id: str = DEFAUL id=uuid.uuid4().hex, type=EventTypes.SESSION_OPEN, create_time=datetime_to_timestamp(pendulum.now()), - properties=EventProperties(session_properties=EventProperties.SessionProperties(**session_properties_args)), + properties=EventProperties( + session_properties=EventProperties.SessionProperties(**session_properties_args), + custom_properties=serialize_custom_properties(custom_properties) if custom_properties else None, + ), project_id=self.project_id, ) self._collect(open_session_event) @@ -134,7 +143,14 @@ def identify_user( ) self._collect(identify_user_event) - def create_message(self, session_id: str, message_index: int, role: str, content: str) -> None: + def create_message( + self, + session_id: str, + message_index: int, + role: str, + content: str, + custom_properties: CustomProperties | None = None, + ) -> None: """Record an individual message within a session. Args: @@ -158,11 +174,14 @@ def create_message(self, session_id: str, message_index: int, role: str, content message_properties=EventProperties.MessageProperties( session_id=session_id, message_index_hint=message_index, - message_role=EventProperties.MessageProperties.Role.ROLE_ASSISTANT - if role == ROLE_ASSISTANT - else EventProperties.MessageProperties.Role.ROLE_USER, + message_role=( + EventProperties.MessageProperties.Role.ROLE_ASSISTANT + if role == ROLE_ASSISTANT + else EventProperties.MessageProperties.Role.ROLE_USER + ), message_content=content, - ) + ), + custom_properties=serialize_custom_properties(custom_properties) if custom_properties else None, ), project_id=self.project_id, ) diff --git a/alignai/ingestion/v1alpha/event_pb2.py b/alignai/ingestion/v1alpha/event_pb2.py index b474b44..f9cb97e 100644 --- a/alignai/ingestion/v1alpha/event_pb2.py +++ b/alignai/ingestion/v1alpha/event_pb2.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: ingestion/v1alpha/event.proto +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -15,91 +16,100 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dingestion/v1alpha/event.proto\x12\x11ingestion.v1alpha\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe9\x01\n\x05\x45vent\x12\x14\n\x02id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x02id\x12\x18\n\x04type\x18\x02 \x01(\tB\x04\xe2\x41\x01\x02R\x04type\x12\x41\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\ncreateTime\x12H\n\nproperties\x18\x04 \x01(\x0b\x32\".ingestion.v1alpha.EventPropertiesB\x04\xe2\x41\x01\x02R\nproperties\x12#\n\nproject_id\x18\x05 \x01(\tB\x04\xe2\x41\x01\x02R\tprojectId\"\xc7\x0f\n\x0f\x45ventProperties\x12\x65\n\x12session_properties\x18\x01 \x01(\x0b\x32\x34.ingestion.v1alpha.EventProperties.SessionPropertiesH\x00R\x11sessionProperties\x12\x65\n\x12message_properties\x18\x02 \x01(\x0b\x32\x34.ingestion.v1alpha.EventProperties.MessagePropertiesH\x00R\x11messageProperties\x12\\\n\x0fuser_properties\x18\x03 \x01(\x0b\x32\x31.ingestion.v1alpha.EventProperties.UserPropertiesH\x00R\x0euserProperties\x12h\n\x13\x66\x65\x65\x64\x62\x61\x63k_properties\x18\x04 \x01(\x0b\x32\x35.ingestion.v1alpha.EventProperties.FeedbackPropertiesH\x00R\x12\x66\x65\x65\x64\x62\x61\x63kProperties\x1a\xfb\x01\n\x11SessionProperties\x12#\n\nsession_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\tsessionId\x12)\n\rsession_title\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\x0csessionTitle\x12N\n\x12session_start_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\x10sessionStartTime\x12\x1d\n\x07user_id\x18\x04 \x01(\tB\x04\xe2\x41\x01\x02R\x06userId\x12\'\n\x0c\x61ssistant_id\x18\x05 \x01(\tB\x04\xe2\x41\x01\x01R\x0b\x61ssistantId\x1a\xc0\x03\n\x11MessageProperties\x12#\n\nsession_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\tsessionId\x12,\n\x0fmessage_id_hint\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\rmessageIdHint\x12\x32\n\x12message_index_hint\x18\x03 \x01(\x05\x42\x04\xe2\x41\x01\x01R\x10messageIndexHint\x12\x62\n\x0cmessage_role\x18\x04 \x01(\x0e\x32\x39.ingestion.v1alpha.EventProperties.MessageProperties.RoleB\x04\xe2\x41\x01\x02R\x0bmessageRole\x12-\n\x0fmessage_content\x18\x05 \x01(\tB\x04\xe2\x41\x01\x02R\x0emessageContent\x12P\n\x13message_create_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\x11messageCreateTime\"?\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\r\n\tROLE_USER\x10\x01\x12\x12\n\x0eROLE_ASSISTANT\x10\x02\x1a\xc3\x03\n\x0eUserProperties\x12\x1d\n\x07user_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x06userId\x12#\n\nuser_email\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\tuserEmail\x12\x1d\n\x07user_ip\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01R\x06userIp\x12\x65\n\ruser_location\x18\x04 \x01(\x0b\x32:.ingestion.v1alpha.EventProperties.UserProperties.LocationB\x04\xe2\x41\x01\x01R\x0cuserLocation\x12J\n\x10user_create_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\x0euserCreateTime\x12\x30\n\x11user_display_name\x18\x06 \x01(\tB\x04\xe2\x41\x01\x01R\x0fuserDisplayName\x1ai\n\x08Location\x12\'\n\x0c\x63ountry_code\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x0b\x63ountryCode\x12\x1a\n\x05state\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\x05state\x12\x18\n\x04\x63ity\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01R\x04\x63ity\x1a\xff\x02\n\x12\x46\x65\x65\x64\x62\x61\x63kProperties\x12#\n\nsession_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\tsessionId\x12k\n\x0f\x66\x65\x65\x64\x62\x61\x63k_target\x18\x02 \x01(\x0e\x32<.ingestion.v1alpha.EventProperties.FeedbackProperties.TargetB\x04\xe2\x41\x01\x02R\x0e\x66\x65\x65\x64\x62\x61\x63kTarget\x12+\n\x0e\x66\x65\x65\x64\x62\x61\x63k_score\x18\x03 \x01(\x05\x42\x04\xe2\x41\x01\x02R\rfeedbackScore\x12,\n\x0fmessage_id_hint\x18\x04 \x01(\tB\x04\xe2\x41\x01\x01R\rmessageIdHint\x12\x32\n\x12message_index_hint\x18\x05 \x01(\x05\x42\x04\xe2\x41\x01\x01R\x10messageIndexHint\"H\n\x06Target\x12\x16\n\x12TARGET_UNSPECIFIED\x10\x00\x12\x12\n\x0eTARGET_SESSION\x10\x01\x12\x12\n\x0eTARGET_MESSAGE\x10\x02\x42\x15\n\x13reserved_propertiesB\xd7\x01\n\x15\x63om.ingestion.v1alphaB\nEventProtoP\x01ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\xa2\x02\x03IXX\xaa\x02\x11Ingestion.V1alpha\xca\x02\x11Ingestion\\V1alpha\xe2\x02\x1dIngestion\\V1alpha\\GPBMetadata\xea\x02\x12Ingestion::V1alphab\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dingestion/v1alpha/event.proto\x12\x11ingestion.v1alpha\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe9\x01\n\x05\x45vent\x12\x14\n\x02id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x02id\x12\x18\n\x04type\x18\x02 \x01(\tB\x04\xe2\x41\x01\x02R\x04type\x12\x41\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\ncreateTime\x12H\n\nproperties\x18\x04 \x01(\x0b\x32\".ingestion.v1alpha.EventPropertiesB\x04\xe2\x41\x01\x02R\nproperties\x12#\n\nproject_id\x18\x05 \x01(\tB\x04\xe2\x41\x01\x02R\tprojectId\"\xf7\x11\n\x0f\x45ventProperties\x12\x65\n\x12session_properties\x18\x01 \x01(\x0b\x32\x34.ingestion.v1alpha.EventProperties.SessionPropertiesH\x00R\x11sessionProperties\x12\x65\n\x12message_properties\x18\x02 \x01(\x0b\x32\x34.ingestion.v1alpha.EventProperties.MessagePropertiesH\x00R\x11messageProperties\x12\\\n\x0fuser_properties\x18\x03 \x01(\x0b\x32\x31.ingestion.v1alpha.EventProperties.UserPropertiesH\x00R\x0euserProperties\x12h\n\x13\x66\x65\x65\x64\x62\x61\x63k_properties\x18\x04 \x01(\x0b\x32\x35.ingestion.v1alpha.EventProperties.FeedbackPropertiesH\x00R\x12\x66\x65\x65\x64\x62\x61\x63kProperties\x12k\n\x11\x63ustom_properties\x18\n \x03(\x0b\x32\x38.ingestion.v1alpha.EventProperties.CustomPropertiesEntryB\x04\xe2\x41\x01\x01R\x10\x63ustomProperties\x1a\xfb\x01\n\x11SessionProperties\x12#\n\nsession_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\tsessionId\x12)\n\rsession_title\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\x0csessionTitle\x12N\n\x12session_start_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\x10sessionStartTime\x12\x1d\n\x07user_id\x18\x04 \x01(\tB\x04\xe2\x41\x01\x02R\x06userId\x12\'\n\x0c\x61ssistant_id\x18\x05 \x01(\tB\x04\xe2\x41\x01\x01R\x0b\x61ssistantId\x1a\xc0\x03\n\x11MessageProperties\x12#\n\nsession_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\tsessionId\x12,\n\x0fmessage_id_hint\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\rmessageIdHint\x12\x32\n\x12message_index_hint\x18\x03 \x01(\x05\x42\x04\xe2\x41\x01\x01R\x10messageIndexHint\x12\x62\n\x0cmessage_role\x18\x04 \x01(\x0e\x32\x39.ingestion.v1alpha.EventProperties.MessageProperties.RoleB\x04\xe2\x41\x01\x02R\x0bmessageRole\x12-\n\x0fmessage_content\x18\x05 \x01(\tB\x04\xe2\x41\x01\x02R\x0emessageContent\x12P\n\x13message_create_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\x11messageCreateTime\"?\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\r\n\tROLE_USER\x10\x01\x12\x12\n\x0eROLE_ASSISTANT\x10\x02\x1a\xc3\x03\n\x0eUserProperties\x12\x1d\n\x07user_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x06userId\x12#\n\nuser_email\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\tuserEmail\x12\x1d\n\x07user_ip\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01R\x06userIp\x12\x65\n\ruser_location\x18\x04 \x01(\x0b\x32:.ingestion.v1alpha.EventProperties.UserProperties.LocationB\x04\xe2\x41\x01\x01R\x0cuserLocation\x12J\n\x10user_create_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x04\xe2\x41\x01\x01R\x0euserCreateTime\x12\x30\n\x11user_display_name\x18\x06 \x01(\tB\x04\xe2\x41\x01\x01R\x0fuserDisplayName\x1ai\n\x08Location\x12\'\n\x0c\x63ountry_code\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x0b\x63ountryCode\x12\x1a\n\x05state\x18\x02 \x01(\tB\x04\xe2\x41\x01\x01R\x05state\x12\x18\n\x04\x63ity\x18\x03 \x01(\tB\x04\xe2\x41\x01\x01R\x04\x63ity\x1a\xff\x02\n\x12\x46\x65\x65\x64\x62\x61\x63kProperties\x12#\n\nsession_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\tsessionId\x12k\n\x0f\x66\x65\x65\x64\x62\x61\x63k_target\x18\x02 \x01(\x0e\x32<.ingestion.v1alpha.EventProperties.FeedbackProperties.TargetB\x04\xe2\x41\x01\x02R\x0e\x66\x65\x65\x64\x62\x61\x63kTarget\x12+\n\x0e\x66\x65\x65\x64\x62\x61\x63k_score\x18\x03 \x01(\x05\x42\x04\xe2\x41\x01\x02R\rfeedbackScore\x12,\n\x0fmessage_id_hint\x18\x04 \x01(\tB\x04\xe2\x41\x01\x01R\rmessageIdHint\x12\x32\n\x12message_index_hint\x18\x05 \x01(\x05\x42\x04\xe2\x41\x01\x01R\x10messageIndexHint\"H\n\x06Target\x12\x16\n\x12TARGET_UNSPECIFIED\x10\x00\x12\x12\n\x0eTARGET_SESSION\x10\x01\x12\x12\n\x0eTARGET_MESSAGE\x10\x02\x1a>\n\x13\x43ustomPropertyValue\x12\'\n\x0cstring_value\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\x0bstringValue\x1a{\n\x15\x43ustomPropertiesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12L\n\x05value\x18\x02 \x01(\x0b\x32\x36.ingestion.v1alpha.EventProperties.CustomPropertyValueR\x05value:\x02\x38\x01\x42\x15\n\x13reserved_propertiesJ\x04\x08\x05\x10\nB\xd7\x01\n\x15\x63om.ingestion.v1alphaB\nEventProtoP\x01ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\xa2\x02\x03IXX\xaa\x02\x11Ingestion.V1alpha\xca\x02\x11Ingestion\\V1alpha\xe2\x02\x1dIngestion\\V1alpha\\GPBMetadata\xea\x02\x12Ingestion::V1alphab\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ingestion.v1alpha.event_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\025com.ingestion.v1alphaB\nEventProtoP\001ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\242\002\003IXX\252\002\021Ingestion.V1alpha\312\002\021Ingestion\\V1alpha\342\002\035Ingestion\\V1alpha\\GPBMetadata\352\002\022Ingestion::V1alpha' - _EVENT.fields_by_name['id']._options = None - _EVENT.fields_by_name['id']._serialized_options = b'\342A\001\002' - _EVENT.fields_by_name['type']._options = None - _EVENT.fields_by_name['type']._serialized_options = b'\342A\001\002' - _EVENT.fields_by_name['create_time']._options = None - _EVENT.fields_by_name['create_time']._serialized_options = b'\342A\001\001' - _EVENT.fields_by_name['properties']._options = None - _EVENT.fields_by_name['properties']._serialized_options = b'\342A\001\002' - _EVENT.fields_by_name['project_id']._options = None - _EVENT.fields_by_name['project_id']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['session_id']._options = None - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['session_id']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['session_title']._options = None - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['session_title']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['session_start_time']._options = None - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['session_start_time']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['user_id']._options = None - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['user_id']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['assistant_id']._options = None - _EVENTPROPERTIES_SESSIONPROPERTIES.fields_by_name['assistant_id']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['session_id']._options = None - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['session_id']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_id_hint']._options = None - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_id_hint']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_index_hint']._options = None - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_index_hint']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_role']._options = None - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_role']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_content']._options = None - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_content']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_create_time']._options = None - _EVENTPROPERTIES_MESSAGEPROPERTIES.fields_by_name['message_create_time']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES_LOCATION.fields_by_name['country_code']._options = None - _EVENTPROPERTIES_USERPROPERTIES_LOCATION.fields_by_name['country_code']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_USERPROPERTIES_LOCATION.fields_by_name['state']._options = None - _EVENTPROPERTIES_USERPROPERTIES_LOCATION.fields_by_name['state']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES_LOCATION.fields_by_name['city']._options = None - _EVENTPROPERTIES_USERPROPERTIES_LOCATION.fields_by_name['city']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_id']._options = None - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_id']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_email']._options = None - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_email']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_ip']._options = None - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_ip']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_location']._options = None - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_location']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_create_time']._options = None - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_create_time']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_display_name']._options = None - _EVENTPROPERTIES_USERPROPERTIES.fields_by_name['user_display_name']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['session_id']._options = None - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['session_id']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['feedback_target']._options = None - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['feedback_target']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['feedback_score']._options = None - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['feedback_score']._serialized_options = b'\342A\001\002' - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['message_id_hint']._options = None - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['message_id_hint']._serialized_options = b'\342A\001\001' - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['message_index_hint']._options = None - _EVENTPROPERTIES_FEEDBACKPROPERTIES.fields_by_name['message_index_hint']._serialized_options = b'\342A\001\001' + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\025com.ingestion.v1alphaB\nEventProtoP\001ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\242\002\003IXX\252\002\021Ingestion.V1alpha\312\002\021Ingestion\\V1alpha\342\002\035Ingestion\\V1alpha\\GPBMetadata\352\002\022Ingestion::V1alpha' + _globals['_EVENT'].fields_by_name['id']._options = None + _globals['_EVENT'].fields_by_name['id']._serialized_options = b'\342A\001\002' + _globals['_EVENT'].fields_by_name['type']._options = None + _globals['_EVENT'].fields_by_name['type']._serialized_options = b'\342A\001\002' + _globals['_EVENT'].fields_by_name['create_time']._options = None + _globals['_EVENT'].fields_by_name['create_time']._serialized_options = b'\342A\001\001' + _globals['_EVENT'].fields_by_name['properties']._options = None + _globals['_EVENT'].fields_by_name['properties']._serialized_options = b'\342A\001\002' + _globals['_EVENT'].fields_by_name['project_id']._options = None + _globals['_EVENT'].fields_by_name['project_id']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['session_id']._options = None + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['session_id']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['session_title']._options = None + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['session_title']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['session_start_time']._options = None + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['session_start_time']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['user_id']._options = None + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['user_id']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['assistant_id']._options = None + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES'].fields_by_name['assistant_id']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['session_id']._options = None + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['session_id']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_id_hint']._options = None + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_id_hint']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_index_hint']._options = None + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_index_hint']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_role']._options = None + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_role']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_content']._options = None + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_content']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_create_time']._options = None + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES'].fields_by_name['message_create_time']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION'].fields_by_name['country_code']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION'].fields_by_name['country_code']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION'].fields_by_name['state']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION'].fields_by_name['state']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION'].fields_by_name['city']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION'].fields_by_name['city']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_id']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_id']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_email']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_email']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_ip']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_ip']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_location']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_location']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_create_time']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_create_time']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_display_name']._options = None + _globals['_EVENTPROPERTIES_USERPROPERTIES'].fields_by_name['user_display_name']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['session_id']._options = None + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['session_id']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['feedback_target']._options = None + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['feedback_target']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['feedback_score']._options = None + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['feedback_score']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['message_id_hint']._options = None + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['message_id_hint']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['message_index_hint']._options = None + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES'].fields_by_name['message_index_hint']._serialized_options = b'\342A\001\001' + _globals['_EVENTPROPERTIES_CUSTOMPROPERTYVALUE'].fields_by_name['string_value']._options = None + _globals['_EVENTPROPERTIES_CUSTOMPROPERTYVALUE'].fields_by_name['string_value']._serialized_options = b'\342A\001\002' + _globals['_EVENTPROPERTIES_CUSTOMPROPERTIESENTRY']._options = None + _globals['_EVENTPROPERTIES_CUSTOMPROPERTIESENTRY']._serialized_options = b'8\001' + _globals['_EVENTPROPERTIES'].fields_by_name['custom_properties']._options = None + _globals['_EVENTPROPERTIES'].fields_by_name['custom_properties']._serialized_options = b'\342A\001\001' _globals['_EVENT']._serialized_start=119 _globals['_EVENT']._serialized_end=352 _globals['_EVENTPROPERTIES']._serialized_start=355 - _globals['_EVENTPROPERTIES']._serialized_end=2346 - _globals['_EVENTPROPERTIES_SESSIONPROPERTIES']._serialized_start=781 - _globals['_EVENTPROPERTIES_SESSIONPROPERTIES']._serialized_end=1032 - _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES']._serialized_start=1035 - _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES']._serialized_end=1483 - _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES_ROLE']._serialized_start=1420 - _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES_ROLE']._serialized_end=1483 - _globals['_EVENTPROPERTIES_USERPROPERTIES']._serialized_start=1486 - _globals['_EVENTPROPERTIES_USERPROPERTIES']._serialized_end=1937 - _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION']._serialized_start=1832 - _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION']._serialized_end=1937 - _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES']._serialized_start=1940 - _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES']._serialized_end=2323 - _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES_TARGET']._serialized_start=2251 - _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES_TARGET']._serialized_end=2323 + _globals['_EVENTPROPERTIES']._serialized_end=2650 + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES']._serialized_start=890 + _globals['_EVENTPROPERTIES_SESSIONPROPERTIES']._serialized_end=1141 + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES']._serialized_start=1144 + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES']._serialized_end=1592 + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES_ROLE']._serialized_start=1529 + _globals['_EVENTPROPERTIES_MESSAGEPROPERTIES_ROLE']._serialized_end=1592 + _globals['_EVENTPROPERTIES_USERPROPERTIES']._serialized_start=1595 + _globals['_EVENTPROPERTIES_USERPROPERTIES']._serialized_end=2046 + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION']._serialized_start=1941 + _globals['_EVENTPROPERTIES_USERPROPERTIES_LOCATION']._serialized_end=2046 + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES']._serialized_start=2049 + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES']._serialized_end=2432 + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES_TARGET']._serialized_start=2360 + _globals['_EVENTPROPERTIES_FEEDBACKPROPERTIES_TARGET']._serialized_end=2432 + _globals['_EVENTPROPERTIES_CUSTOMPROPERTYVALUE']._serialized_start=2434 + _globals['_EVENTPROPERTIES_CUSTOMPROPERTYVALUE']._serialized_end=2496 + _globals['_EVENTPROPERTIES_CUSTOMPROPERTIESENTRY']._serialized_start=2498 + _globals['_EVENTPROPERTIES_CUSTOMPROPERTIESENTRY']._serialized_end=2621 # @@protoc_insertion_point(module_scope) diff --git a/alignai/ingestion/v1alpha/event_pb2.pyi b/alignai/ingestion/v1alpha/event_pb2.pyi index 602a08e..708b8f9 100644 --- a/alignai/ingestion/v1alpha/event_pb2.pyi +++ b/alignai/ingestion/v1alpha/event_pb2.pyi @@ -1,5 +1,6 @@ from google.api import field_behavior_pb2 as _field_behavior_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message @@ -8,7 +9,7 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti DESCRIPTOR: _descriptor.FileDescriptor class Event(_message.Message): - __slots__ = ["id", "type", "create_time", "properties", "project_id"] + __slots__ = ("id", "type", "create_time", "properties", "project_id") ID_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] CREATE_TIME_FIELD_NUMBER: _ClassVar[int] @@ -22,9 +23,9 @@ class Event(_message.Message): def __init__(self, id: _Optional[str] = ..., type: _Optional[str] = ..., create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., properties: _Optional[_Union[EventProperties, _Mapping]] = ..., project_id: _Optional[str] = ...) -> None: ... class EventProperties(_message.Message): - __slots__ = ["session_properties", "message_properties", "user_properties", "feedback_properties"] + __slots__ = ("session_properties", "message_properties", "user_properties", "feedback_properties", "custom_properties") class SessionProperties(_message.Message): - __slots__ = ["session_id", "session_title", "session_start_time", "user_id", "assistant_id"] + __slots__ = ("session_id", "session_title", "session_start_time", "user_id", "assistant_id") SESSION_ID_FIELD_NUMBER: _ClassVar[int] SESSION_TITLE_FIELD_NUMBER: _ClassVar[int] SESSION_START_TIME_FIELD_NUMBER: _ClassVar[int] @@ -37,9 +38,9 @@ class EventProperties(_message.Message): assistant_id: str def __init__(self, session_id: _Optional[str] = ..., session_title: _Optional[str] = ..., session_start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., user_id: _Optional[str] = ..., assistant_id: _Optional[str] = ...) -> None: ... class MessageProperties(_message.Message): - __slots__ = ["session_id", "message_id_hint", "message_index_hint", "message_role", "message_content", "message_create_time"] + __slots__ = ("session_id", "message_id_hint", "message_index_hint", "message_role", "message_content", "message_create_time") class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] + __slots__ = () ROLE_UNSPECIFIED: _ClassVar[EventProperties.MessageProperties.Role] ROLE_USER: _ClassVar[EventProperties.MessageProperties.Role] ROLE_ASSISTANT: _ClassVar[EventProperties.MessageProperties.Role] @@ -60,9 +61,9 @@ class EventProperties(_message.Message): message_create_time: _timestamp_pb2.Timestamp def __init__(self, session_id: _Optional[str] = ..., message_id_hint: _Optional[str] = ..., message_index_hint: _Optional[int] = ..., message_role: _Optional[_Union[EventProperties.MessageProperties.Role, str]] = ..., message_content: _Optional[str] = ..., message_create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class UserProperties(_message.Message): - __slots__ = ["user_id", "user_email", "user_ip", "user_location", "user_create_time", "user_display_name"] + __slots__ = ("user_id", "user_email", "user_ip", "user_location", "user_create_time", "user_display_name") class Location(_message.Message): - __slots__ = ["country_code", "state", "city"] + __slots__ = ("country_code", "state", "city") COUNTRY_CODE_FIELD_NUMBER: _ClassVar[int] STATE_FIELD_NUMBER: _ClassVar[int] CITY_FIELD_NUMBER: _ClassVar[int] @@ -84,9 +85,9 @@ class EventProperties(_message.Message): user_display_name: str def __init__(self, user_id: _Optional[str] = ..., user_email: _Optional[str] = ..., user_ip: _Optional[str] = ..., user_location: _Optional[_Union[EventProperties.UserProperties.Location, _Mapping]] = ..., user_create_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., user_display_name: _Optional[str] = ...) -> None: ... class FeedbackProperties(_message.Message): - __slots__ = ["session_id", "feedback_target", "feedback_score", "message_id_hint", "message_index_hint"] + __slots__ = ("session_id", "feedback_target", "feedback_score", "message_id_hint", "message_index_hint") class Target(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] + __slots__ = () TARGET_UNSPECIFIED: _ClassVar[EventProperties.FeedbackProperties.Target] TARGET_SESSION: _ClassVar[EventProperties.FeedbackProperties.Target] TARGET_MESSAGE: _ClassVar[EventProperties.FeedbackProperties.Target] @@ -104,12 +105,26 @@ class EventProperties(_message.Message): message_id_hint: str message_index_hint: int def __init__(self, session_id: _Optional[str] = ..., feedback_target: _Optional[_Union[EventProperties.FeedbackProperties.Target, str]] = ..., feedback_score: _Optional[int] = ..., message_id_hint: _Optional[str] = ..., message_index_hint: _Optional[int] = ...) -> None: ... + class CustomPropertyValue(_message.Message): + __slots__ = ("string_value",) + STRING_VALUE_FIELD_NUMBER: _ClassVar[int] + string_value: str + def __init__(self, string_value: _Optional[str] = ...) -> None: ... + class CustomPropertiesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: EventProperties.CustomPropertyValue + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[EventProperties.CustomPropertyValue, _Mapping]] = ...) -> None: ... SESSION_PROPERTIES_FIELD_NUMBER: _ClassVar[int] MESSAGE_PROPERTIES_FIELD_NUMBER: _ClassVar[int] USER_PROPERTIES_FIELD_NUMBER: _ClassVar[int] FEEDBACK_PROPERTIES_FIELD_NUMBER: _ClassVar[int] + CUSTOM_PROPERTIES_FIELD_NUMBER: _ClassVar[int] session_properties: EventProperties.SessionProperties message_properties: EventProperties.MessageProperties user_properties: EventProperties.UserProperties feedback_properties: EventProperties.FeedbackProperties - def __init__(self, session_properties: _Optional[_Union[EventProperties.SessionProperties, _Mapping]] = ..., message_properties: _Optional[_Union[EventProperties.MessageProperties, _Mapping]] = ..., user_properties: _Optional[_Union[EventProperties.UserProperties, _Mapping]] = ..., feedback_properties: _Optional[_Union[EventProperties.FeedbackProperties, _Mapping]] = ...) -> None: ... + custom_properties: _containers.MessageMap[str, EventProperties.CustomPropertyValue] + def __init__(self, session_properties: _Optional[_Union[EventProperties.SessionProperties, _Mapping]] = ..., message_properties: _Optional[_Union[EventProperties.MessageProperties, _Mapping]] = ..., user_properties: _Optional[_Union[EventProperties.UserProperties, _Mapping]] = ..., feedback_properties: _Optional[_Union[EventProperties.FeedbackProperties, _Mapping]] = ..., custom_properties: _Optional[_Mapping[str, EventProperties.CustomPropertyValue]] = ...) -> None: ... diff --git a/alignai/ingestion/v1alpha/ingestion_pb2.py b/alignai/ingestion/v1alpha/ingestion_pb2.py index 15cd51d..bbccdd8 100644 --- a/alignai/ingestion/v1alpha/ingestion_pb2.py +++ b/alignai/ingestion/v1alpha/ingestion_pb2.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: ingestion/v1alpha/ingestion.proto +# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -13,7 +14,7 @@ from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from alignai.ingestion.v1alpha import event_pb2 as ingestion_dot_v1alpha_dot_event__pb2 +from ingestion.v1alpha import event_pb2 as ingestion_dot_v1alpha_dot_event__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!ingestion/v1alpha/ingestion.proto\x12\x11ingestion.v1alpha\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1dingestion/v1alpha/event.proto\"s\n\x14\x43ollectEventsRequest\x12#\n\nrequest_id\x18\x01 \x01(\tB\x04\xe2\x41\x01\x02R\trequestId\x12\x36\n\x06\x65vents\x18\x02 \x03(\x0b\x32\x18.ingestion.v1alpha.EventB\x04\xe2\x41\x01\x02R\x06\x65vents2f\n\x10IngestionService\x12R\n\rCollectEvents\x12\'.ingestion.v1alpha.CollectEventsRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\xdb\x01\n\x15\x63om.ingestion.v1alphaB\x0eIngestionProtoP\x01ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\xa2\x02\x03IXX\xaa\x02\x11Ingestion.V1alpha\xca\x02\x11Ingestion\\V1alpha\xe2\x02\x1dIngestion\\V1alpha\\GPBMetadata\xea\x02\x12Ingestion::V1alphab\x06proto3') @@ -22,13 +23,12 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ingestion.v1alpha.ingestion_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\025com.ingestion.v1alphaB\016IngestionProtoP\001ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\242\002\003IXX\252\002\021Ingestion.V1alpha\312\002\021Ingestion\\V1alpha\342\002\035Ingestion\\V1alpha\\GPBMetadata\352\002\022Ingestion::V1alpha' - _COLLECTEVENTSREQUEST.fields_by_name['request_id']._options = None - _COLLECTEVENTSREQUEST.fields_by_name['request_id']._serialized_options = b'\342A\001\002' - _COLLECTEVENTSREQUEST.fields_by_name['events']._options = None - _COLLECTEVENTSREQUEST.fields_by_name['events']._serialized_options = b'\342A\001\002' + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\025com.ingestion.v1alphaB\016IngestionProtoP\001ZMgithub.com/coxwave/impaction-ai-api/gen/go/ingestion/v1alpha;ingestionv1alpha\242\002\003IXX\252\002\021Ingestion.V1alpha\312\002\021Ingestion\\V1alpha\342\002\035Ingestion\\V1alpha\\GPBMetadata\352\002\022Ingestion::V1alpha' + _globals['_COLLECTEVENTSREQUEST'].fields_by_name['request_id']._options = None + _globals['_COLLECTEVENTSREQUEST'].fields_by_name['request_id']._serialized_options = b'\342A\001\002' + _globals['_COLLECTEVENTSREQUEST'].fields_by_name['events']._options = None + _globals['_COLLECTEVENTSREQUEST'].fields_by_name['events']._serialized_options = b'\342A\001\002' _globals['_COLLECTEVENTSREQUEST']._serialized_start=149 _globals['_COLLECTEVENTSREQUEST']._serialized_end=264 _globals['_INGESTIONSERVICE']._serialized_start=266 diff --git a/alignai/ingestion/v1alpha/ingestion_pb2.pyi b/alignai/ingestion/v1alpha/ingestion_pb2.pyi index cf4f675..176175f 100644 --- a/alignai/ingestion/v1alpha/ingestion_pb2.pyi +++ b/alignai/ingestion/v1alpha/ingestion_pb2.pyi @@ -1,6 +1,6 @@ from google.api import field_behavior_pb2 as _field_behavior_pb2 from google.protobuf import empty_pb2 as _empty_pb2 -from alignai.ingestion.v1alpha import event_pb2 as _event_pb2 +from ingestion.v1alpha import event_pb2 as _event_pb2 from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message @@ -9,7 +9,7 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class CollectEventsRequest(_message.Message): - __slots__ = ["request_id", "events"] + __slots__ = ("request_id", "events") REQUEST_ID_FIELD_NUMBER: _ClassVar[int] EVENTS_FIELD_NUMBER: _ClassVar[int] request_id: str diff --git a/alignai/utils.py b/alignai/utils.py index aa6d3e1..27676e5 100644 --- a/alignai/utils.py +++ b/alignai/utils.py @@ -1,9 +1,26 @@ from datetime import datetime +from typing import Mapping from google.protobuf.timestamp_pb2 import Timestamp +from alignai.ingestion.v1alpha.event_pb2 import EventProperties def datetime_to_timestamp(dt: datetime) -> Timestamp: timestamp = Timestamp() timestamp.FromDatetime(dt) return timestamp + + +CustomProperties = dict[str, str] + + +def serialize_custom_properties( + custom_properties: CustomProperties, +) -> Mapping[str, EventProperties.CustomPropertyValue]: + serialized_properties = {} + + for key, value in custom_properties.items(): + if isinstance(value, str): + serialized_properties[key] = EventProperties.CustomPropertyValue(string_value=value) + + return serialized_properties From 8f434eb7a58c6cec519a7fa52dd014cd0ad81b89 Mon Sep 17 00:00:00 2001 From: nyanxyz Date: Tue, 12 Mar 2024 23:38:13 +0900 Subject: [PATCH 2/4] chore: bump version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c163b99..afebc0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "alignai" -version = "0.1.2" +version = "0.2.0" description = "Python SDK for Align AI" authors = ["Coxwave "] readme = "README.md" From 671d65994d34e2985880fe4c68a373d50aba9fef Mon Sep 17 00:00:00 2001 From: nyanxyz Date: Wed, 13 Mar 2024 11:49:47 +0900 Subject: [PATCH 3/4] add customProperties to IdentifyUser event --- alignai/client.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/alignai/client.py b/alignai/client.py index abe49d3..43d93cf 100644 --- a/alignai/client.py +++ b/alignai/client.py @@ -74,6 +74,7 @@ def open_session( session_id (str): Session ID. user_id (str): User ID associated with the session. assistant_id (str, optional): Assistant ID. Defaults to "DEFAULT". + custom_properties (dict[str, str] | None, optional): Custom properties associated with the session. Defaults to None. """ session_properties_args = {"session_id": session_id, "user_id": user_id, "assistant_id": assistant_id} open_session_event = Event( @@ -111,6 +112,7 @@ def identify_user( ip: str | None = None, country_code: str | None = None, create_time: datetime | None = None, + custom_properties: CustomProperties | None = None, ) -> None: """Record a user. @@ -121,6 +123,7 @@ def identify_user( ip (str | None, optional): User IPv4 address. Provide either ip or country code for user location. If both are given, country code overrides ip. Defaults to None. country_code (str | None, optional): User country code in ISO Alpha-2. Provide either ip or country code for user location. If both are given, country code overrides ip. Defaults to None. create_time (datetime | None, optional): User creation time. Defaults to None. + custom_properties (dict[str, str] | None, optional): Custom properties associated with the user. Defaults to None. """ # noqa: E501 user_properties_args = {"user_id": user_id} if display_name is not None: @@ -138,7 +141,10 @@ def identify_user( id=uuid.uuid4().hex, type=EventTypes.USER_RECOGNIZE, create_time=datetime_to_timestamp(pendulum.now()), - properties=EventProperties(user_properties=EventProperties.UserProperties(**user_properties_args)), + properties=EventProperties( + user_properties=EventProperties.UserProperties(**user_properties_args), + custom_properties=serialize_custom_properties(custom_properties) if custom_properties else None, + ), project_id=self.project_id, ) self._collect(identify_user_event) @@ -158,6 +164,7 @@ def create_message( message_index (int): Message index used to sort messages in a chronological order within a session. Must be a positive integer. role (str): alignai.constants.ROLE_USER or alignai.constants.ROLE_ASSISTANT. content (str): Content of the message. + custom_properties (dict[str, str] | None, optional): Custom properties associated with the message. Defaults to None. """ # noqa: E501 if message_index <= 0: self.logger.error(f"Invalid message index '{message_index}': Message index must be a positive integer") From e7e818cdf6184a68612070d4ca9b06a9e3b6a69a Mon Sep 17 00:00:00 2001 From: nyanxyz Date: Wed, 13 Mar 2024 12:04:05 +0900 Subject: [PATCH 4/4] add customProperties to langchain, llama_index --- alignai/integration/langchain.py | 6 ++++++ alignai/integration/llama_index.py | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/alignai/integration/langchain.py b/alignai/integration/langchain.py index e0000d0..bcb0089 100644 --- a/alignai/integration/langchain.py +++ b/alignai/integration/langchain.py @@ -9,6 +9,7 @@ from alignai import AlignAI from alignai.constants import DEFAULT_ASSISTANT_ID, ROLE_ASSISTANT, ROLE_USER +from alignai.utils import CustomProperties try: langchain = importlib.import_module("langchain") @@ -33,6 +34,7 @@ class UserInfo(TypedDict): ip: str | None country_code: str | None create_time: datetime | None + custom_properties: CustomProperties | None class ChatMessageHistory(BaseChatMessageHistory): @@ -67,6 +69,7 @@ def __init__( country_code=user_info.get("country_code", None), create_time=user_info.get("create_time", None), display_name=user_info.get("display_name", None), + custom_properties=user_info.get("custom_properties", None), ) def add_message(self, message: BaseMessage) -> None: @@ -95,6 +98,7 @@ def identify_user( ip: str | None = None, country_code: str | None = None, create_time: datetime | None = None, + custom_properties: CustomProperties | None = None, ) -> None: """Send identify_user event. The user_id provided upon initialization will be used. @@ -104,6 +108,7 @@ def identify_user( country_code (str | None, optional): User country code in ISO Alpha-2. Provide either ip or country code for user location. If both are given, country code overrides ip. Defaults to None. create_time (datetime | None, optional): User creation time. Defaults to None. display_name (str | None, optional): User display name. Defaults to None. + custom_properties (dict[str, str] | None, optional): Custom properties associated with the user. Defaults to None. """ # noqa: E501 self.sdk.identify_user( user_id=self.user_id, @@ -112,6 +117,7 @@ def identify_user( country_code=country_code, create_time=create_time, display_name=display_name, + custom_properties=custom_properties, ) def close(self) -> None: diff --git a/alignai/integration/llama_index.py b/alignai/integration/llama_index.py index 97de653..cbf9c67 100644 --- a/alignai/integration/llama_index.py +++ b/alignai/integration/llama_index.py @@ -9,6 +9,7 @@ from alignai import AlignAI from alignai.constants import DEFAULT_ASSISTANT_ID, ROLE_ASSISTANT, ROLE_USER +from alignai.utils import CustomProperties try: llama_index = importlib.import_module("llama_index") @@ -31,6 +32,7 @@ class UserInfo(TypedDict, total=False): country_code: str | None create_time: datetime | None display_name: str | None + custom_properties: CustomProperties | None class ChatMemory(BaseMemory): @@ -87,6 +89,7 @@ def __init__( country_code=self.user_info.get("country_code", None), create_time=self.user_info.get("create_time", None), display_name=self.user_info.get("display_name", None), + custom_properties=self.user_info.get("custom_properties", None), ) def __getattr__(self, name): @@ -151,6 +154,7 @@ def identify_user( country_code: str | None = None, create_time: datetime | None = None, display_name: str | None = None, + custom_properties: CustomProperties | None = None, ) -> None: """Send identify_user event to Align AI. The user_id provided upon initialization will be used. @@ -160,6 +164,7 @@ def identify_user( country_code (str | None, optional): User country code in ISO Alpha-2. Provide either ip or country code for user location. If both are given, country code overrides ip. Defaults to None. create_time (datetime | None, optional): User creation time. Defaults to None. display_name (str | None, optional): User display name. Defaults to None. + custom_properties (dict[str, str] | None, optional): Custom properties associated with the user. Defaults to None. """ # noqa: E501 self.align_client.identify_user( user_id=self.user_id, @@ -168,6 +173,7 @@ def identify_user( country_code=country_code, create_time=create_time, display_name=display_name, + custom_properties=custom_properties, ) def close(self) -> None: