microcore.message_types

Message classes for OpenAI Chat API

 1""" Message classes for OpenAI Chat API """
 2
 3from dataclasses import dataclass, field
 4
 5
 6class Role:
 7    SYSTEM = "system"
 8    USER = "user"
 9    ASSISTANT = "assistant"
10
11
12DEFAULT_MESSAGE_ROLE = Role.USER
13
14
15@dataclass
16class Msg:
17    dict_factory = dict
18    role: str = field(default=DEFAULT_MESSAGE_ROLE)
19    content: str = field(default="")
20
21    def __str__(self):
22        return str(self.content)
23
24    def strip(self):
25        self.content = self.content.strip()
26        return self
27
28
29@dataclass
30class SysMsg(Msg):
31    role: str = field(default=Role.SYSTEM, init=False)
32
33
34@dataclass
35class UserMsg(Msg):
36    role: str = field(default=Role.USER, init=False)
37
38
39@dataclass
40class AssistantMsg(Msg):
41    role: str = field(default=Role.ASSISTANT, init=False)
42
43
44class PartialMsg(AssistantMsg):
45    """A message that is not fully formed yet."""
46
47    class _PartialMsgDict(dict):
48        is_partial = True
49        """Custom dictionary class to handle additional properties"""
50
51    dict_factory = _PartialMsgDict
52    placeholder = "<|placeholder|>"
53    variants_splitter = "<|or|>"
54
55    @staticmethod
56    def split_prefix_and_suffixes(content: str):
57        parts = content.split(PartialMsg.placeholder)
58        prefix = parts[0]
59        suffix = parts[1] if len(parts) > 1 else ""
60        suffixes = suffix.split(PartialMsg.variants_splitter) if suffix else []
61        return prefix, suffixes
62
63    def prefix_and_suffixes(self):
64        return self.split_prefix_and_suffixes(self.content)
65
66    def prefix(self):
67        prefix, _ = self.prefix_and_suffixes()
68        return prefix
69
70    def suffixes(self):
71        _, suffixes = self.prefix_and_suffixes()
72        return suffixes
class Role:
 7class Role:
 8    SYSTEM = "system"
 9    USER = "user"
10    ASSISTANT = "assistant"
SYSTEM = 'system'
USER = 'user'
ASSISTANT = 'assistant'
DEFAULT_MESSAGE_ROLE = 'user'
@dataclass
class Msg:
16@dataclass
17class Msg:
18    dict_factory = dict
19    role: str = field(default=DEFAULT_MESSAGE_ROLE)
20    content: str = field(default="")
21
22    def __str__(self):
23        return str(self.content)
24
25    def strip(self):
26        self.content = self.content.strip()
27        return self
Msg(role: str = 'user', content: str = '')
dict_factory = <class 'dict'>
role: str = 'user'
content: str = ''
def strip(self):
25    def strip(self):
26        self.content = self.content.strip()
27        return self
@dataclass
class SysMsg(Msg):
30@dataclass
31class SysMsg(Msg):
32    role: str = field(default=Role.SYSTEM, init=False)
SysMsg(content: str = '')
role: str = 'system'
Inherited Members
Msg
dict_factory
content
strip
@dataclass
class UserMsg(Msg):
35@dataclass
36class UserMsg(Msg):
37    role: str = field(default=Role.USER, init=False)
UserMsg(content: str = '')
role: str = 'user'
Inherited Members
Msg
dict_factory
content
strip
@dataclass
class AssistantMsg(Msg):
40@dataclass
41class AssistantMsg(Msg):
42    role: str = field(default=Role.ASSISTANT, init=False)
AssistantMsg(content: str = '')
role: str = 'assistant'
Inherited Members
Msg
dict_factory
content
strip
class PartialMsg(AssistantMsg):
45class PartialMsg(AssistantMsg):
46    """A message that is not fully formed yet."""
47
48    class _PartialMsgDict(dict):
49        is_partial = True
50        """Custom dictionary class to handle additional properties"""
51
52    dict_factory = _PartialMsgDict
53    placeholder = "<|placeholder|>"
54    variants_splitter = "<|or|>"
55
56    @staticmethod
57    def split_prefix_and_suffixes(content: str):
58        parts = content.split(PartialMsg.placeholder)
59        prefix = parts[0]
60        suffix = parts[1] if len(parts) > 1 else ""
61        suffixes = suffix.split(PartialMsg.variants_splitter) if suffix else []
62        return prefix, suffixes
63
64    def prefix_and_suffixes(self):
65        return self.split_prefix_and_suffixes(self.content)
66
67    def prefix(self):
68        prefix, _ = self.prefix_and_suffixes()
69        return prefix
70
71    def suffixes(self):
72        _, suffixes = self.prefix_and_suffixes()
73        return suffixes

A message that is not fully formed yet.

dict_factory = <class 'microcore.message_types.PartialMsg._PartialMsgDict'>
placeholder = '<|placeholder|>'
variants_splitter = '<|or|>'
@staticmethod
def split_prefix_and_suffixes(content: str):
56    @staticmethod
57    def split_prefix_and_suffixes(content: str):
58        parts = content.split(PartialMsg.placeholder)
59        prefix = parts[0]
60        suffix = parts[1] if len(parts) > 1 else ""
61        suffixes = suffix.split(PartialMsg.variants_splitter) if suffix else []
62        return prefix, suffixes
def prefix_and_suffixes(self):
64    def prefix_and_suffixes(self):
65        return self.split_prefix_and_suffixes(self.content)
def prefix(self):
67    def prefix(self):
68        prefix, _ = self.prefix_and_suffixes()
69        return prefix
def suffixes(self):
71    def suffixes(self):
72        _, suffixes = self.prefix_and_suffixes()
73        return suffixes