agi-med-common 3.2.1__py3-none-any.whl → 3.3.1__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 +3 -4
- agi_med_common/logger/logger.py +1 -1
- agi_med_common/models/__init__.py +1 -1
- agi_med_common/models/chat_item/__init__.py +1 -1
- agi_med_common/models/chat_item/chat_item.py +26 -1
- agi_med_common/models/chat_item/inner_context_item.py +3 -0
- agi_med_common/models/chat_item/outer_context_item.py +9 -3
- agi_med_common/models/chat_item/replica_item.py +20 -16
- agi_med_common/xml_parser.py +17 -0
- {agi_med_common-3.2.1.dist-info → agi_med_common-3.3.1.dist-info}/METADATA +1 -1
- agi_med_common-3.3.1.dist-info/RECORD +26 -0
- agi_med_common/models/chat_item_with_state/__init__.py +0 -3
- agi_med_common/models/chat_item_with_state/chat_with_state.py +0 -8
- agi_med_common/models/chat_item_with_state/inner_context_with_state.py +0 -8
- agi_med_common/models/chat_item_with_state/replica_with_state.py +0 -8
- agi_med_common-3.2.1.dist-info/RECORD +0 -29
- {agi_med_common-3.2.1.dist-info → agi_med_common-3.3.1.dist-info}/WHEEL +0 -0
- {agi_med_common-3.2.1.dist-info → agi_med_common-3.3.1.dist-info}/top_level.txt +0 -0
agi_med_common/__init__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
__version__ = "3.
|
1
|
+
__version__ = "3.3.1"
|
2
2
|
|
3
3
|
from .logger import LogLevelEnum, logger_init
|
4
4
|
from .models import (
|
@@ -11,9 +11,8 @@ from .models import (
|
|
11
11
|
InnerContextItem,
|
12
12
|
OuterContextItem,
|
13
13
|
ReplicaItem,
|
14
|
-
|
15
|
-
InnerContextWithState,
|
16
|
-
ReplicaWithState,
|
14
|
+
ReplicaItemPair,
|
17
15
|
)
|
18
16
|
from .utils import make_session_id, read_json, replace_n
|
19
17
|
from .validators import is_file_exist, validate_prompt
|
18
|
+
from .xml_parser import XMLParser
|
agi_med_common/logger/logger.py
CHANGED
@@ -7,7 +7,7 @@ from . import LogLevelEnum
|
|
7
7
|
|
8
8
|
def logger_init(log_level: LogLevelEnum) -> None:
|
9
9
|
logger.remove()
|
10
|
-
extra = {"request_id": "
|
10
|
+
extra = {"request_id": "SYSTEM_REQUEST"}
|
11
11
|
format_ = "{time:DD-MM-YYYY HH:mm:ss} | <level>{level: <8}</level> | {extra[request_id]}"
|
12
12
|
format_ = f"{format_} | <level>{{message}}</level>"
|
13
13
|
logger.add(sys.stdout, colorize=True, format=format_, level=log_level)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from ._base import _Base
|
2
2
|
from .enums import TrackIdEnum, StateEnum, MTRSLabelEnum, ActionEnum, ModerationLabelEnum
|
3
|
-
from .chat_item import ChatItem, OuterContextItem, InnerContextItem, ReplicaItem
|
3
|
+
from .chat_item import ChatItem, OuterContextItem, InnerContextItem, ReplicaItem, ReplicaItemPair
|
4
4
|
from .chat_item_with_state import ChatItemWithState, InnerContextWithState, ReplicaWithState
|
5
5
|
from .base_config_models import GigaChatConfig
|
@@ -1,9 +1,34 @@
|
|
1
1
|
from pydantic import Field
|
2
|
+
from typing import Any
|
2
3
|
|
3
|
-
from . import OuterContextItem, InnerContextItem
|
4
|
+
from . import OuterContextItem, InnerContextItem, ReplicaItemPair
|
5
|
+
from ..enums import ActionEnum
|
4
6
|
from .. import _Base
|
5
7
|
|
6
8
|
|
7
9
|
class ChatItem(_Base):
|
8
10
|
outer_context: OuterContextItem = Field(alias="OuterContext")
|
9
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.model_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,4 +1,5 @@
|
|
1
1
|
from pydantic import Field
|
2
|
+
from typing import Any
|
2
3
|
|
3
4
|
from .. import _Base
|
4
5
|
from ..enums import TrackIdEnum
|
@@ -10,9 +11,14 @@ class OuterContextItem(_Base):
|
|
10
11
|
user_id: str = Field("", alias="UserId", examples=["123456789"])
|
11
12
|
session_id: str = Field("", alias="SessionId", examples=["987654321"])
|
12
13
|
client_id: str = Field("", alias="ClientId", examples=["543216789"])
|
13
|
-
track_id: TrackIdEnum = Field(TrackIdEnum.
|
14
|
+
track_id: TrackIdEnum = Field(TrackIdEnum.CONSULTATION, alias="TrackId")
|
14
15
|
|
15
|
-
def create_id(self, short: bool = False) -> str:
|
16
|
+
def create_id(self, short: bool = False, clean: bool = False) -> str:
|
16
17
|
if short:
|
17
18
|
return f"{self.user_id}_{self.session_id}_{self.client_id}"
|
18
|
-
|
19
|
+
if not clean:
|
20
|
+
return f"user_{self.user_id}_session_{self.session_id}_client_{self.client_id}"
|
21
|
+
return f"user_{self.user_id}_session_{self.session_id}_client_{self.client_id}_clean"
|
22
|
+
|
23
|
+
def to_dict(self) -> dict[str, Any]:
|
24
|
+
return self.model_dump(by_alias=True)
|
@@ -1,31 +1,35 @@
|
|
1
1
|
from datetime import datetime
|
2
|
+
from typing import Any
|
2
3
|
|
3
|
-
from pydantic import Field
|
4
|
+
from pydantic import Field
|
4
5
|
|
5
6
|
from .. import _Base
|
7
|
+
from ..enums import StateEnum, ActionEnum
|
6
8
|
|
7
9
|
_TIME_FORMAT: str = "%Y-%m-%d-%H-%M-%S"
|
8
|
-
_EXAMPLE_DATETIME:
|
10
|
+
_EXAMPLE_DATETIME: str = datetime(1970, 1, 1, 0, 0, 0).strftime(_TIME_FORMAT)
|
9
11
|
|
10
12
|
|
11
13
|
class ReplicaItem(_Base):
|
12
14
|
body: str = Field("", alias="Body", examples=["Привет"])
|
13
15
|
role: bool = Field(False, alias="Role", description="True = ai, False = client", examples=[False])
|
14
|
-
date_time:
|
16
|
+
date_time: str = Field(
|
15
17
|
_EXAMPLE_DATETIME,
|
16
18
|
alias="DateTime",
|
17
|
-
examples=[_EXAMPLE_DATETIME
|
19
|
+
examples=[_EXAMPLE_DATETIME],
|
18
20
|
description=f"Format: {_TIME_FORMAT}",
|
19
21
|
)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
22
|
+
state: StateEnum = Field(
|
23
|
+
StateEnum.EMPTY, alias="State", description="chat manager fsm state", examples=[StateEnum.COLLECTION]
|
24
|
+
)
|
25
|
+
action: ActionEnum = Field(
|
26
|
+
ActionEnum.START, alias="Action", description="chat manager fsm action", examples=[ActionEnum.DIAGNOSIS]
|
27
|
+
)
|
28
|
+
|
29
|
+
def to_dict(self) -> dict[str, Any]:
|
30
|
+
return self.model_dump(by_alias=True)
|
31
|
+
|
32
|
+
|
33
|
+
class ReplicaItemPair(_Base):
|
34
|
+
user_replica: ReplicaItem = Field(alias="UserReplica")
|
35
|
+
model_replica: ReplicaItem = Field(alias="ModelReplica")
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import re
|
2
|
+
|
3
|
+
|
4
|
+
class XMLParser:
|
5
|
+
@staticmethod
|
6
|
+
def make_xml(body: str, tag: str) -> str:
|
7
|
+
return f"<{tag}>{body}</{tag}>"
|
8
|
+
|
9
|
+
@staticmethod
|
10
|
+
def remove_xml(text: str) -> str:
|
11
|
+
re_xml = re.compile(r"<(.*?)>")
|
12
|
+
return re.sub(re_xml, "", text).replace(" ", " ").strip()
|
13
|
+
|
14
|
+
@staticmethod
|
15
|
+
def get_tag_list(response: str, tag: str) -> list[str]:
|
16
|
+
tag_content = re.findall(f"<{tag}>(.*?)</{tag}>", response, re.DOTALL)
|
17
|
+
return [content.lower().strip() for content in tag_content]
|
@@ -0,0 +1,26 @@
|
|
1
|
+
agi_med_common/__init__.py,sha256=x2GH-mmgggvXfhat4sDBZqwYjHqvjzspwSHoLZLsQlk,427
|
2
|
+
agi_med_common/utils.py,sha256=4GV1yNZiRG3KYOh859dvOZI899z7_s_YN3aXzthMgwU,399
|
3
|
+
agi_med_common/validators.py,sha256=R678gjPp-5XbnocRuEtdOQgJyCCOurxwaOe2nT04kSg,705
|
4
|
+
agi_med_common/xml_parser.py,sha256=1MYE9yajX1Enrn0A6DD1cXagZuYdjCvp3vN4D8fIge4,523
|
5
|
+
agi_med_common/logger/__init__.py,sha256=RW_0VZtbeJ4RsLqUXZUQWl5CtV9g840rU7qRlf5u49E,96
|
6
|
+
agi_med_common/logger/log_level_enum.py,sha256=lWuSMho9I0v_xf1RuwpERx5o8NJXaavjwxSdh8fxMqE,477
|
7
|
+
agi_med_common/logger/logger.py,sha256=u1qjQXsE1a1-YZ7iWuypzPnJ0e2rB6HVVrtiUGnoERo,843
|
8
|
+
agi_med_common/models/__init__.py,sha256=ODfLq-mVK4-94TAjufH00YjFB1HKlMy0x0Jhw4_VfDg,353
|
9
|
+
agi_med_common/models/_base.py,sha256=qNdH8x3x3mYbo5XgWtR9VpEarxsEvXvzynadUlDvHmU,149
|
10
|
+
agi_med_common/models/base_config_models/__init__.py,sha256=KjS_bSCka8BOMsigwcIML-e6eNB2ouMU6gxlhRmzeuY,44
|
11
|
+
agi_med_common/models/base_config_models/gigachat_config.py,sha256=WNSCTO8Fjpxc1v2LRUHfKqo9aeMDpXltTHYBFgTD2N0,422
|
12
|
+
agi_med_common/models/chat_item/__init__.py,sha256=NG1optUYwjnxfpTXntUfTDOA0eKTgdV43TZOcfHasHg,185
|
13
|
+
agi_med_common/models/chat_item/chat_item.py,sha256=Ym-afB9-7NI6QquhMPqd2ZBkbcx-Txr-ZiXwn0PTO-0,1182
|
14
|
+
agi_med_common/models/chat_item/inner_context_item.py,sha256=YXmlNLabKN3O84UWJENsjfdtPq2XRH1VqKiyIxS-p64,255
|
15
|
+
agi_med_common/models/chat_item/outer_context_item.py,sha256=IzrwhqbLKR8ZF8-Sd2CyNSa0eqb21NQH7LUqkg9se2Y,1046
|
16
|
+
agi_med_common/models/chat_item/replica_item.py,sha256=1BIKdqVfpWoWQP6xhtfr2c__Z-LJVDOkGcy5gbGQ_DA,1171
|
17
|
+
agi_med_common/models/enums/__init__.py,sha256=7TyOshcmklii1Cvx76Kxw4Ly9Wei2hsX1aHk6kzkVrY,207
|
18
|
+
agi_med_common/models/enums/action_enum.py,sha256=ZZtSBlOsQWvJ1UYqmsMsVLrzO1kJdImqJMqI0_KSV9M,287
|
19
|
+
agi_med_common/models/enums/moderation_label_enum.py,sha256=Ixz-7_6RneNwGzDzO9pV38V6ZutUQa2pUS2torMDY8s,271
|
20
|
+
agi_med_common/models/enums/mtrs_label_enum.py,sha256=6emBndt3SCsQVZZFKQYCV2_iyjjmZEhwejJKJu39ZAw,257
|
21
|
+
agi_med_common/models/enums/state_enum.py,sha256=p7XhDxBxPeeSgbLWitq6JpJLKntS3XMHon_EevbnhEs,163
|
22
|
+
agi_med_common/models/enums/track_id_enum.py,sha256=YoP15BTGjaFDxCOtjsqfwuMTW-BhcaQyEdxLfK7RQUA,454
|
23
|
+
agi_med_common-3.3.1.dist-info/METADATA,sha256=s9JQvs_Sy6XqY6-3zamsq9_tEQuhJnAl8dxUnqSYVJs,520
|
24
|
+
agi_med_common-3.3.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
25
|
+
agi_med_common-3.3.1.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
|
26
|
+
agi_med_common-3.3.1.dist-info/RECORD,,
|
@@ -1,29 +0,0 @@
|
|
1
|
-
agi_med_common/__init__.py,sha256=uY4L-vBlFDl44XcDzT9bA281p_JW7129mwccpsY-npQ,444
|
2
|
-
agi_med_common/utils.py,sha256=4GV1yNZiRG3KYOh859dvOZI899z7_s_YN3aXzthMgwU,399
|
3
|
-
agi_med_common/validators.py,sha256=R678gjPp-5XbnocRuEtdOQgJyCCOurxwaOe2nT04kSg,705
|
4
|
-
agi_med_common/logger/__init__.py,sha256=RW_0VZtbeJ4RsLqUXZUQWl5CtV9g840rU7qRlf5u49E,96
|
5
|
-
agi_med_common/logger/log_level_enum.py,sha256=lWuSMho9I0v_xf1RuwpERx5o8NJXaavjwxSdh8fxMqE,477
|
6
|
-
agi_med_common/logger/logger.py,sha256=_tmBPpZr1UaIycYzuvwrnPrVeu5kcwJBXSbTb7InGjI,842
|
7
|
-
agi_med_common/models/__init__.py,sha256=ebG_iVj_cQ8Em6pdsLarl8zSfotEF3KBV1XMpDyS5YY,336
|
8
|
-
agi_med_common/models/_base.py,sha256=qNdH8x3x3mYbo5XgWtR9VpEarxsEvXvzynadUlDvHmU,149
|
9
|
-
agi_med_common/models/base_config_models/__init__.py,sha256=KjS_bSCka8BOMsigwcIML-e6eNB2ouMU6gxlhRmzeuY,44
|
10
|
-
agi_med_common/models/base_config_models/gigachat_config.py,sha256=WNSCTO8Fjpxc1v2LRUHfKqo9aeMDpXltTHYBFgTD2N0,422
|
11
|
-
agi_med_common/models/chat_item/__init__.py,sha256=MoZFnZQV-tWJTHmH1OhRBRkrc5cGWAfdJ6QfHDg6TDk,168
|
12
|
-
agi_med_common/models/chat_item/chat_item.py,sha256=aCRR4OwL-YS6hvVSNkIg7FNpfvEGo8BESCY8BhiAlNk,255
|
13
|
-
agi_med_common/models/chat_item/inner_context_item.py,sha256=s17frAcwyi8WcHnBt-5LF8nUJeO-hnu7YMobYQO5a-c,166
|
14
|
-
agi_med_common/models/chat_item/outer_context_item.py,sha256=IprCIh8ki3PUueFwdmPw-MYn0-prx_G523Y-IXN62ZY,792
|
15
|
-
agi_med_common/models/chat_item/replica_item.py,sha256=_OvnGmbP-wzxi16c6FGz-_Y-QtudV1Pi6I-zCJ7aQfA,1131
|
16
|
-
agi_med_common/models/chat_item_with_state/__init__.py,sha256=KrXgsvJnLzS1kSi9_Y1z6_egxIqKL7epY1r-PIyrnno,156
|
17
|
-
agi_med_common/models/chat_item_with_state/chat_with_state.py,sha256=IgZh0CRoar56eM8QOblPx8tsIm9NPO5tOj0mVC8yj40,205
|
18
|
-
agi_med_common/models/chat_item_with_state/inner_context_with_state.py,sha256=qIwqCHn-JuQemcVQqLDzkpuaPRNCjIL_-h1wm1Jv5WU,212
|
19
|
-
agi_med_common/models/chat_item_with_state/replica_with_state.py,sha256=YvUcCo1HTfxYUEwZ5T7UqLW2WkZ8SFvVNQZf-5mK5Dg,192
|
20
|
-
agi_med_common/models/enums/__init__.py,sha256=7TyOshcmklii1Cvx76Kxw4Ly9Wei2hsX1aHk6kzkVrY,207
|
21
|
-
agi_med_common/models/enums/action_enum.py,sha256=ZZtSBlOsQWvJ1UYqmsMsVLrzO1kJdImqJMqI0_KSV9M,287
|
22
|
-
agi_med_common/models/enums/moderation_label_enum.py,sha256=Ixz-7_6RneNwGzDzO9pV38V6ZutUQa2pUS2torMDY8s,271
|
23
|
-
agi_med_common/models/enums/mtrs_label_enum.py,sha256=6emBndt3SCsQVZZFKQYCV2_iyjjmZEhwejJKJu39ZAw,257
|
24
|
-
agi_med_common/models/enums/state_enum.py,sha256=p7XhDxBxPeeSgbLWitq6JpJLKntS3XMHon_EevbnhEs,163
|
25
|
-
agi_med_common/models/enums/track_id_enum.py,sha256=YoP15BTGjaFDxCOtjsqfwuMTW-BhcaQyEdxLfK7RQUA,454
|
26
|
-
agi_med_common-3.2.1.dist-info/METADATA,sha256=NH-OaoLWdsngpKmpcehrQAq3gqxPbFqzd4h67ZJ7Eck,520
|
27
|
-
agi_med_common-3.2.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
28
|
-
agi_med_common-3.2.1.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
|
29
|
-
agi_med_common-3.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|