agi-med-common 4.2.9__py3-none-any.whl → 4.2.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agi_med_common/__init__.py +1 -1
- agi_med_common/models/chat_item.py +115 -0
- {agi_med_common-4.2.9.dist-info → agi_med_common-4.2.10.dist-info}/METADATA +1 -1
- {agi_med_common-4.2.9.dist-info → agi_med_common-4.2.10.dist-info}/RECORD +6 -10
- agi_med_common/models/chat_item/__init__.py +0 -4
- agi_med_common/models/chat_item/chat_item.py +0 -34
- agi_med_common/models/chat_item/inner_context_item.py +0 -12
- agi_med_common/models/chat_item/outer_context_item.py +0 -27
- agi_med_common/models/chat_item/replica_item.py +0 -53
- {agi_med_common-4.2.9.dist-info → agi_med_common-4.2.10.dist-info}/WHEEL +0 -0
- {agi_med_common-4.2.9.dist-info → agi_med_common-4.2.10.dist-info}/top_level.txt +0 -0
agi_med_common/__init__.py
CHANGED
@@ -0,0 +1,115 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
from pydantic import Field, ConfigDict
|
5
|
+
from agi_med_common.models.widget import Widget
|
6
|
+
|
7
|
+
from .enums import ModerationLabelEnum, StateEnum, ActionEnum
|
8
|
+
from ._base import _Base
|
9
|
+
|
10
|
+
|
11
|
+
_DATETIME_FORMAT: str = "%Y-%m-%d-%H-%M-%S"
|
12
|
+
_EXAMPLE_DATETIME_0 = datetime(1970, 1, 1, 0, 0, 0)
|
13
|
+
_EXAMPLE_DATETIME: str = _EXAMPLE_DATETIME_0.strftime(_DATETIME_FORMAT)
|
14
|
+
|
15
|
+
|
16
|
+
class OuterContextItem(_Base):
|
17
|
+
# remove annoying warning for protected `model_` namespace
|
18
|
+
model_config = ConfigDict(protected_namespaces=())
|
19
|
+
|
20
|
+
sex: bool = Field(
|
21
|
+
False,
|
22
|
+
alias="Sex",
|
23
|
+
description="True = male, False = female",
|
24
|
+
examples=[True]
|
25
|
+
)
|
26
|
+
age: int = Field(0, alias="Age", examples=[20])
|
27
|
+
user_id: str = Field("", alias="UserId", examples=["123456789"])
|
28
|
+
parent_session_id: str | None = Field(
|
29
|
+
None,
|
30
|
+
alias="ParentSessionId",
|
31
|
+
examples=["987654320"]
|
32
|
+
)
|
33
|
+
session_id: str = Field("", alias="SessionId", examples=["987654321"])
|
34
|
+
client_id: str = Field("", alias="ClientId", examples=["543216789"])
|
35
|
+
track_id: str = Field(default="Consultation", alias="TrackId")
|
36
|
+
entrypoint_key: str = Field("", alias="EntrypointKey", examples=["giga"])
|
37
|
+
|
38
|
+
def create_id(self, short: bool = False, clean: bool = False) -> str:
|
39
|
+
uid, sid, cid = self.user_id, self.session_id, self.client_id
|
40
|
+
if short:
|
41
|
+
return f"{uid}_{sid}_{cid}"
|
42
|
+
if not clean:
|
43
|
+
return f"user_{uid}_session_{sid}_client_{cid}"
|
44
|
+
return f"user_{uid}_session_{sid}_client_{cid}_clean"
|
45
|
+
|
46
|
+
def to_dict(self) -> dict[str, Any]:
|
47
|
+
return self.model_dump(by_alias=True)
|
48
|
+
|
49
|
+
|
50
|
+
class ReplicaItem(_Base):
|
51
|
+
body: str = Field("", alias="Body", examples=["Привет"])
|
52
|
+
resource_id: str | None = Field(None, alias="ResourceId", examples=["<link-id>"])
|
53
|
+
widget: Widget | None = Field(None, alias="Widget", examples=[None])
|
54
|
+
command: dict | None = Field(None, alias="Command", examples=[None])
|
55
|
+
role: bool = Field(False, alias="Role", description="True = ai, False = client", examples=[False])
|
56
|
+
date_time: str = Field(
|
57
|
+
_EXAMPLE_DATETIME,
|
58
|
+
alias="DateTime",
|
59
|
+
examples=[_EXAMPLE_DATETIME],
|
60
|
+
description=f"Format: {_DATETIME_FORMAT}",
|
61
|
+
)
|
62
|
+
state: StateEnum = Field("EMPTY", alias="State", description="chat manager fsm state", examples=["COLLECTION"])
|
63
|
+
action: ActionEnum = Field("START", alias="Action", description="chat manager fsm action", examples=["DIAGNOSIS"])
|
64
|
+
moderation: ModerationLabelEnum = Field(
|
65
|
+
ModerationLabelEnum.OK,
|
66
|
+
alias="Moderation",
|
67
|
+
description="chat manager moderated outcome type",
|
68
|
+
examples=[ModerationLabelEnum.NON_MED],
|
69
|
+
)
|
70
|
+
extra: dict | None = Field(None, alias="Extra", examples=[None])
|
71
|
+
|
72
|
+
def to_dict(self) -> dict[str, Any]:
|
73
|
+
return self.model_dump(by_alias=True)
|
74
|
+
|
75
|
+
@staticmethod
|
76
|
+
def DATETIME_FORMAT() -> str:
|
77
|
+
return _DATETIME_FORMAT
|
78
|
+
|
79
|
+
def with_now_datetime(self):
|
80
|
+
dt = datetime.now().strftime(ReplicaItem.DATETIME_FORMAT())
|
81
|
+
return self.model_copy(update=dict(date_time=dt))
|
82
|
+
|
83
|
+
|
84
|
+
class InnerContextItem(_Base):
|
85
|
+
replicas: list[ReplicaItem] = Field(alias="Replicas")
|
86
|
+
attrs: dict[str, str | int] | None = Field(default={}, alias="Attrs")
|
87
|
+
|
88
|
+
def to_dict(self) -> dict[str, list]:
|
89
|
+
return self.model_dump(by_alias=True)
|
90
|
+
|
91
|
+
|
92
|
+
class ReplicaItemPair(_Base):
|
93
|
+
# remove annoying warning for protected `model_` namespace
|
94
|
+
model_config = ConfigDict(protected_namespaces=())
|
95
|
+
|
96
|
+
user_replica: ReplicaItem = Field(alias="UserReplica")
|
97
|
+
bot_replica: ReplicaItem = Field(alias="BotReplica")
|
98
|
+
|
99
|
+
|
100
|
+
class ChatItem(_Base):
|
101
|
+
outer_context: OuterContextItem = Field(alias="OuterContext")
|
102
|
+
inner_context: InnerContextItem = Field(alias="InnerContext")
|
103
|
+
|
104
|
+
def create_id(self, short: bool = False, clean: bool = False) -> str:
|
105
|
+
return self.outer_context.create_id(short, clean)
|
106
|
+
|
107
|
+
def to_dict(self) -> dict[str, Any]:
|
108
|
+
return self.model_dump(by_alias=True)
|
109
|
+
|
110
|
+
def update(self, replica_pair: ReplicaItemPair) -> None:
|
111
|
+
self.inner_context.replicas.append(replica_pair.user_replica)
|
112
|
+
self.inner_context.replicas.append(replica_pair.bot_replica)
|
113
|
+
|
114
|
+
def zip_history(self, field: str) -> list[Any]:
|
115
|
+
return [replica.to_dict().get(field, None) for replica in self.inner_context.replicas]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
agi_med_common/__init__.py,sha256=
|
1
|
+
agi_med_common/__init__.py,sha256=Rz1-B1Z0jGrhZEhm4URzpvm3VCylC9JoARCHoP8FiM4,709
|
2
2
|
agi_med_common/file_storage.py,sha256=4GW0CU0YtVzWmxV6vGjZg0DfyEgjlrgLRsZ7cEP-6Qk,1659
|
3
3
|
agi_med_common/parallel_map.py,sha256=Qx6xe7DqlEUDpSucp5Hm8r9y9Iquwh9JvX7lOqHhnOw,921
|
4
4
|
agi_med_common/utils.py,sha256=42okDsaCIkxcBlBojyTOqPH1QUGkginjvgyPhSnRq9w,725
|
@@ -9,16 +9,12 @@ agi_med_common/logger/log_level_enum.py,sha256=lWuSMho9I0v_xf1RuwpERx5o8NJXaavjw
|
|
9
9
|
agi_med_common/logger/logger.py,sha256=-VU69ULbw2-pNpOcxKiMpOeRAPe6H-EsGV9WRTv1SUo,839
|
10
10
|
agi_med_common/models/__init__.py,sha256=KXnXxD2c5v2TVXrc-n7gJipTAyvtMasbocxThINIojs,330
|
11
11
|
agi_med_common/models/_base.py,sha256=qNdH8x3x3mYbo5XgWtR9VpEarxsEvXvzynadUlDvHmU,149
|
12
|
+
agi_med_common/models/chat_item.py,sha256=0-CWepFcFKEyJS-Vbq21xpwLO0wbdFYHiWGqA6UKFFI,4376
|
12
13
|
agi_med_common/models/enums.py,sha256=RxPPbkW1NcHAGO-gHuzwIvOjv0_ZBsr9b1aq_wk4WFM,1313
|
13
14
|
agi_med_common/models/widget.py,sha256=g7Bobyk_gANghGEhjDjvi4i-YRoHo5Bm1Pr4eF-zf0U,661
|
14
15
|
agi_med_common/models/base_config_models/__init__.py,sha256=KjS_bSCka8BOMsigwcIML-e6eNB2ouMU6gxlhRmzeuY,44
|
15
16
|
agi_med_common/models/base_config_models/gigachat_config.py,sha256=WNSCTO8Fjpxc1v2LRUHfKqo9aeMDpXltTHYBFgTD2N0,422
|
16
|
-
agi_med_common/
|
17
|
-
agi_med_common/
|
18
|
-
agi_med_common/
|
19
|
-
agi_med_common
|
20
|
-
agi_med_common/models/chat_item/replica_item.py,sha256=cGnAyUxNM50004EWKc8q4nYvy9cqZ8fxPdTilja6fBU,2013
|
21
|
-
agi_med_common-4.2.9.dist-info/METADATA,sha256=axCVcE7uged5BEl3_h_GSzNTlplY1Ed20rPr_vfC1fs,546
|
22
|
-
agi_med_common-4.2.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
23
|
-
agi_med_common-4.2.9.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
|
24
|
-
agi_med_common-4.2.9.dist-info/RECORD,,
|
17
|
+
agi_med_common-4.2.10.dist-info/METADATA,sha256=k5P5_4Qe37Xhn6Erz8IpzEQA-TRrjN1_OVaL4ohVRG4,547
|
18
|
+
agi_med_common-4.2.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
19
|
+
agi_med_common-4.2.10.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
|
20
|
+
agi_med_common-4.2.10.dist-info/RECORD,,
|
@@ -1,34 +0,0 @@
|
|
1
|
-
from pydantic import Field
|
2
|
-
from typing import Any
|
3
|
-
|
4
|
-
from . import OuterContextItem, InnerContextItem, ReplicaItemPair
|
5
|
-
from ..enums import ActionEnum
|
6
|
-
from .. import _Base
|
7
|
-
|
8
|
-
|
9
|
-
class ChatItem(_Base):
|
10
|
-
outer_context: OuterContextItem = Field(alias="OuterContext")
|
11
|
-
inner_context: InnerContextItem = Field(alias="InnerContext")
|
12
|
-
|
13
|
-
def create_id(self, short: bool = False, clean: bool = False) -> str:
|
14
|
-
return self.outer_context.create_id(short, clean)
|
15
|
-
|
16
|
-
def to_dict(self) -> dict[str, Any]:
|
17
|
-
return self.model_dump(by_alias=True)
|
18
|
-
|
19
|
-
def update(self, replica_pair: ReplicaItemPair) -> None:
|
20
|
-
self.inner_context.replicas.append(replica_pair.user_replica)
|
21
|
-
self.inner_context.replicas.append(replica_pair.bot_replica)
|
22
|
-
|
23
|
-
def count_questions(self) -> int:
|
24
|
-
return len(
|
25
|
-
list(
|
26
|
-
filter(
|
27
|
-
lambda replica: replica.role and replica.action == ActionEnum.QUESTION,
|
28
|
-
self.inner_context.replicas,
|
29
|
-
)
|
30
|
-
)
|
31
|
-
)
|
32
|
-
|
33
|
-
def zip_history(self, field: str) -> list[Any]:
|
34
|
-
return [replica.to_dict().get(field, None) for replica in self.inner_context.replicas]
|
@@ -1,12 +0,0 @@
|
|
1
|
-
from pydantic import Field
|
2
|
-
|
3
|
-
from . import ReplicaItem
|
4
|
-
from .. import _Base
|
5
|
-
|
6
|
-
|
7
|
-
class InnerContextItem(_Base):
|
8
|
-
replicas: list[ReplicaItem] = Field(alias="Replicas")
|
9
|
-
attrs: dict[str, str | int] | None = Field(default={}, alias="Attrs")
|
10
|
-
|
11
|
-
def to_dict(self) -> dict[str, list]:
|
12
|
-
return self.model_dump(by_alias=True)
|
@@ -1,27 +0,0 @@
|
|
1
|
-
from pydantic import Field, ConfigDict
|
2
|
-
from typing import Any
|
3
|
-
|
4
|
-
from .. import _Base
|
5
|
-
|
6
|
-
|
7
|
-
class OuterContextItem(_Base):
|
8
|
-
# remove annoying warning for protected `model_` namespace
|
9
|
-
model_config = ConfigDict(protected_namespaces=())
|
10
|
-
|
11
|
-
sex: bool = Field(False, alias="Sex", description="True = male, False = female", examples=[True])
|
12
|
-
age: int = Field(0, alias="Age", examples=[20])
|
13
|
-
user_id: str = Field("", alias="UserId", examples=["123456789"])
|
14
|
-
session_id: str = Field("", alias="SessionId", examples=["987654321"])
|
15
|
-
client_id: str = Field("", alias="ClientId", examples=["543216789"])
|
16
|
-
track_id: str = Field(default="Consultation", alias="TrackId")
|
17
|
-
entrypoint_key: str = Field("", alias="EntrypointKey", examples=["giga"])
|
18
|
-
|
19
|
-
def create_id(self, short: bool = False, clean: bool = False) -> str:
|
20
|
-
if short:
|
21
|
-
return f"{self.user_id}_{self.session_id}_{self.client_id}"
|
22
|
-
if not clean:
|
23
|
-
return f"user_{self.user_id}_session_{self.session_id}_client_{self.client_id}"
|
24
|
-
return f"user_{self.user_id}_session_{self.session_id}_client_{self.client_id}_clean"
|
25
|
-
|
26
|
-
def to_dict(self) -> dict[str, Any]:
|
27
|
-
return self.model_dump(by_alias=True)
|
@@ -1,53 +0,0 @@
|
|
1
|
-
from datetime import datetime
|
2
|
-
from typing import Any
|
3
|
-
|
4
|
-
from pydantic import Field, ConfigDict
|
5
|
-
|
6
|
-
from .. import _Base
|
7
|
-
from ..enums import StateEnum, ActionEnum, ModerationLabelEnum
|
8
|
-
from agi_med_common.models.widget import Widget
|
9
|
-
|
10
|
-
|
11
|
-
_DATETIME_FORMAT: str = "%Y-%m-%d-%H-%M-%S"
|
12
|
-
_EXAMPLE_DATETIME: str = datetime(1970, 1, 1, 0, 0, 0).strftime(_DATETIME_FORMAT)
|
13
|
-
|
14
|
-
|
15
|
-
class ReplicaItem(_Base):
|
16
|
-
body: str = Field("", alias="Body", examples=["Привет"])
|
17
|
-
resource_id: str | None = Field(None, alias="ResourceId", examples=["<link-id>"])
|
18
|
-
widget: Widget | None = Field(None, alias="Widget", examples=[None])
|
19
|
-
command: dict | None = Field(None, alias="Command", examples=[None])
|
20
|
-
role: bool = Field(False, alias="Role", description="True = ai, False = client", examples=[False])
|
21
|
-
date_time: str = Field(
|
22
|
-
_EXAMPLE_DATETIME,
|
23
|
-
alias="DateTime",
|
24
|
-
examples=[_EXAMPLE_DATETIME],
|
25
|
-
description=f"Format: {_DATETIME_FORMAT}",
|
26
|
-
)
|
27
|
-
state: StateEnum = Field("EMPTY", alias="State", description="chat manager fsm state", examples=["COLLECTION"])
|
28
|
-
action: ActionEnum = Field("START", alias="Action", description="chat manager fsm action", examples=["DIAGNOSIS"])
|
29
|
-
moderation: ModerationLabelEnum = Field(
|
30
|
-
ModerationLabelEnum.OK,
|
31
|
-
alias="Moderation",
|
32
|
-
description="chat manager moderated outcome type",
|
33
|
-
examples=[ModerationLabelEnum.NON_MED],
|
34
|
-
)
|
35
|
-
|
36
|
-
def to_dict(self) -> dict[str, Any]:
|
37
|
-
return self.model_dump(by_alias=True)
|
38
|
-
|
39
|
-
@staticmethod
|
40
|
-
def DATETIME_FORMAT() -> str:
|
41
|
-
return _DATETIME_FORMAT
|
42
|
-
|
43
|
-
def with_now_datetime(self):
|
44
|
-
dt = datetime.now().strftime(ReplicaItem.DATETIME_FORMAT())
|
45
|
-
return self.model_copy(update=dict(date_time=dt))
|
46
|
-
|
47
|
-
|
48
|
-
class ReplicaItemPair(_Base):
|
49
|
-
# remove annoying warning for protected `model_` namespace
|
50
|
-
model_config = ConfigDict(protected_namespaces=())
|
51
|
-
|
52
|
-
user_replica: ReplicaItem = Field(alias="UserReplica")
|
53
|
-
bot_replica: ReplicaItem = Field(alias="BotReplica")
|
File without changes
|
File without changes
|