agi-med-common 1.4.0__py3-none-any.whl → 2.0.0__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 +16 -1
- agi_med_common/models/__init__.py +3 -1
- agi_med_common/models/base_config_models/__init__.py +1 -0
- agi_med_common/models/base_config_models/gigachat_config.py +15 -0
- agi_med_common/models/chat_item/replica_item.py +24 -3
- agi_med_common/models/chat_item_with_state/__init__.py +3 -0
- agi_med_common/models/chat_item_with_state/chat_with_state.py +8 -0
- agi_med_common/models/chat_item_with_state/inner_context_with_state.py +8 -0
- agi_med_common/models/chat_item_with_state/replica_with_state.py +8 -0
- agi_med_common/models/enums/__init__.py +1 -0
- agi_med_common/models/enums/states_enum.py +29 -0
- agi_med_common/utils.py +18 -0
- agi_med_common/validators.py +18 -0
- {agi_med_common-1.4.0.dist-info → agi_med_common-2.0.0.dist-info}/METADATA +2 -2
- agi_med_common-2.0.0.dist-info/RECORD +26 -0
- {agi_med_common-1.4.0.dist-info → agi_med_common-2.0.0.dist-info}/WHEEL +1 -1
- agi_med_common-1.4.0.dist-info/RECORD +0 -17
- {agi_med_common-1.4.0.dist-info → agi_med_common-2.0.0.dist-info}/top_level.txt +0 -0
agi_med_common/__init__.py
CHANGED
@@ -1 +1,16 @@
|
|
1
|
-
__version__ = "
|
1
|
+
__version__ = "2.0.0"
|
2
|
+
|
3
|
+
from .logger import LogLevelEnum, logger_init
|
4
|
+
from .models import (
|
5
|
+
TrackIdEnum,
|
6
|
+
StatesEnum,
|
7
|
+
ChatItem,
|
8
|
+
InnerContextItem,
|
9
|
+
OuterContextItem,
|
10
|
+
ReplicaItem,
|
11
|
+
ChatItemWithState,
|
12
|
+
InnerContextWithState,
|
13
|
+
ReplicaWithState,
|
14
|
+
)
|
15
|
+
from .utils import make_session_id, read_json, replace_n
|
16
|
+
from .validators import is_file_exist, validate_prompt
|
@@ -1,3 +1,5 @@
|
|
1
1
|
from ._base import _Base
|
2
|
-
from .enums import TrackIdEnum
|
2
|
+
from .enums import TrackIdEnum, StatesEnum
|
3
3
|
from .chat_item import ChatItem, OuterContextItem, InnerContextItem, ReplicaItem
|
4
|
+
from .chat_item_with_state import ChatItemWithState, InnerContextWithState, ReplicaWithState
|
5
|
+
from .base_config_models import GigaChatConfig
|
@@ -0,0 +1 @@
|
|
1
|
+
from .gigachat_config import GigaChatConfig
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from typing import Self
|
2
|
+
|
3
|
+
from pydantic import BaseModel, model_validator, SecretStr
|
4
|
+
|
5
|
+
|
6
|
+
class GigaChatConfig(BaseModel):
|
7
|
+
|
8
|
+
client_id: SecretStr = SecretStr("")
|
9
|
+
client_secret: SecretStr = SecretStr("")
|
10
|
+
|
11
|
+
@model_validator(mode="after")
|
12
|
+
def empty_validator(self) -> Self:
|
13
|
+
if not (self.client_id and self.client_secret):
|
14
|
+
raise ValueError("creds for gigachat is not filled")
|
15
|
+
return self
|
@@ -1,10 +1,31 @@
|
|
1
|
-
from
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
from pydantic import Field, field_validator, field_serializer
|
2
4
|
|
3
5
|
from .. import _Base
|
4
6
|
|
7
|
+
_TIME_FORMAT: str = "%Y-%m-%d-%H-%M-%S"
|
8
|
+
_EXAMPLE_DATETIME: datetime = datetime(1970, 1, 1, 0, 0, 0)
|
9
|
+
|
5
10
|
|
6
11
|
class ReplicaItem(_Base):
|
7
12
|
body: str = Field("", alias="Body", examples=["Привет"])
|
8
13
|
role: bool = Field(False, alias="Role", description="True = ai, False = client", examples=[False])
|
9
|
-
date_time:
|
10
|
-
|
14
|
+
date_time: datetime = Field(
|
15
|
+
_EXAMPLE_DATETIME,
|
16
|
+
alias="DateTime",
|
17
|
+
examples=[_EXAMPLE_DATETIME.strftime(_TIME_FORMAT)],
|
18
|
+
description=f"Format: {_TIME_FORMAT}",
|
19
|
+
)
|
20
|
+
previous_score: float | None = Field(None, alias="PreviousScore", exclude=True, deprecated=True)
|
21
|
+
|
22
|
+
@field_validator("date_time", mode="before")
|
23
|
+
@classmethod
|
24
|
+
def convert_date_time(cls, timestamp: str | datetime) -> datetime:
|
25
|
+
if isinstance(timestamp, datetime):
|
26
|
+
return timestamp
|
27
|
+
return datetime.strptime(timestamp, _TIME_FORMAT)
|
28
|
+
|
29
|
+
@field_serializer("date_time")
|
30
|
+
def serialize_date_time(self, timestamp: datetime) -> str:
|
31
|
+
return timestamp.strftime(_TIME_FORMAT)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from enum import StrEnum, auto
|
2
|
+
|
3
|
+
|
4
|
+
class StatesEnum(StrEnum):
|
5
|
+
"""
|
6
|
+
Класс для хранения имен состояний.
|
7
|
+
"""
|
8
|
+
|
9
|
+
BEGIN = auto()
|
10
|
+
START = auto()
|
11
|
+
|
12
|
+
IS_CHILD = auto()
|
13
|
+
IS_ABSURD = auto()
|
14
|
+
CRITICAL = auto()
|
15
|
+
WHAT_COMPLAINTS = auto()
|
16
|
+
NOT_MEDICAL = auto()
|
17
|
+
|
18
|
+
ERROR_STATE = auto()
|
19
|
+
|
20
|
+
CONSULTATION_TRANSIT = auto()
|
21
|
+
NOT_MEDICAL_DOC = auto()
|
22
|
+
CONSULTATION = auto()
|
23
|
+
|
24
|
+
INFO_COLLECTION = auto()
|
25
|
+
MAKE_DIAGNOSIS = auto()
|
26
|
+
|
27
|
+
SUMMARIZATION = auto()
|
28
|
+
|
29
|
+
ANALYSIS_CONSULTATION = auto()
|
agi_med_common/utils.py
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
import codecs
|
2
|
+
import json
|
3
|
+
import os
|
4
|
+
from datetime import datetime
|
5
|
+
from pathlib import Path
|
6
|
+
|
7
|
+
|
8
|
+
def make_session_id() -> str:
|
9
|
+
return f"{datetime.now():%y%m%d%H%M%S}"
|
10
|
+
|
11
|
+
|
12
|
+
def read_json(path: Path | os.PathLike[str] | str) -> list | dict:
|
13
|
+
with codecs.open(path, "r", encoding="utf8") as file:
|
14
|
+
return json.load(file)
|
15
|
+
|
16
|
+
|
17
|
+
def replace_n(value: str) -> str:
|
18
|
+
return value.replace("\\n", "\n")
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import os
|
2
|
+
import re
|
3
|
+
from pathlib import Path
|
4
|
+
|
5
|
+
|
6
|
+
def is_file_exist(filepath: str | os.PathLike[str] | Path) -> str | os.PathLike | Path:
|
7
|
+
if not os.path.exists(filepath):
|
8
|
+
raise ValueError(f"File {filepath} is not exist. Check the path")
|
9
|
+
return filepath
|
10
|
+
|
11
|
+
|
12
|
+
def validate_prompt(prompt: str, prompt_required_keys: set[str]) -> str:
|
13
|
+
exist_keys: set[str] = set(re.findall(r"{(.*?)}", prompt))
|
14
|
+
if missed_keys := prompt_required_keys.difference(exist_keys):
|
15
|
+
raise ValueError(f"Missing required key in prompt: {missed_keys}")
|
16
|
+
if extern_keys := exist_keys.difference(prompt_required_keys):
|
17
|
+
raise ValueError(f"You have more keys for prompt: {extern_keys}")
|
18
|
+
return prompt
|
@@ -0,0 +1,26 @@
|
|
1
|
+
agi_med_common/__init__.py,sha256=0GJulrzkBDkB17nr_utQW7ghrK5yCMq30GZKK9aV3wY,385
|
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=BrLFWe_103S7uFHX2UeGpZdF-wuz7up4l6gfQwQjJoA,1263
|
7
|
+
agi_med_common/models/__init__.py,sha256=kBCFA9ctcBRm9JrrEs4HHGYcXERMaoEI8p5N6kN2JAY,289
|
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=yHUFI7n5r-LY5y4CbliZlXDrmr38bsz8dh4iyNo5Ti8,75
|
21
|
+
agi_med_common/models/enums/states_enum.py,sha256=IerXA4uaCNnE0zt4JF4bveqwL1wpUUBMXMh6kqFV_XM,543
|
22
|
+
agi_med_common/models/enums/track_id_enum.py,sha256=fHGQz9AACIS6SfTFCrSau1HKee70r2bap-OcBxD3YRE,423
|
23
|
+
agi_med_common-2.0.0.dist-info/METADATA,sha256=VTyClWQ9zBYJdascshkCrq_hXlMsvCFyU3qxY8nz4Sg,520
|
24
|
+
agi_med_common-2.0.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
25
|
+
agi_med_common-2.0.0.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
|
26
|
+
agi_med_common-2.0.0.dist-info/RECORD,,
|
@@ -1,17 +0,0 @@
|
|
1
|
-
agi_med_common/__init__.py,sha256=8UhoYEXHs1Oai7BW_ExBmuwWnRI-yMG_u1fQAXMizHQ,22
|
2
|
-
agi_med_common/logger/__init__.py,sha256=RW_0VZtbeJ4RsLqUXZUQWl5CtV9g840rU7qRlf5u49E,96
|
3
|
-
agi_med_common/logger/log_level_enum.py,sha256=lWuSMho9I0v_xf1RuwpERx5o8NJXaavjwxSdh8fxMqE,477
|
4
|
-
agi_med_common/logger/logger.py,sha256=BrLFWe_103S7uFHX2UeGpZdF-wuz7up4l6gfQwQjJoA,1263
|
5
|
-
agi_med_common/models/__init__.py,sha256=MxRz8pUM0U7QfLSDsjDX4dMQQHEDJu6179RibFWDYQc,137
|
6
|
-
agi_med_common/models/_base.py,sha256=qNdH8x3x3mYbo5XgWtR9VpEarxsEvXvzynadUlDvHmU,149
|
7
|
-
agi_med_common/models/chat_item/__init__.py,sha256=MoZFnZQV-tWJTHmH1OhRBRkrc5cGWAfdJ6QfHDg6TDk,168
|
8
|
-
agi_med_common/models/chat_item/chat_item.py,sha256=aCRR4OwL-YS6hvVSNkIg7FNpfvEGo8BESCY8BhiAlNk,255
|
9
|
-
agi_med_common/models/chat_item/inner_context_item.py,sha256=s17frAcwyi8WcHnBt-5LF8nUJeO-hnu7YMobYQO5a-c,166
|
10
|
-
agi_med_common/models/chat_item/outer_context_item.py,sha256=IprCIh8ki3PUueFwdmPw-MYn0-prx_G523Y-IXN62ZY,792
|
11
|
-
agi_med_common/models/chat_item/replica_item.py,sha256=c561A7EpjjaB7fr7DPd6hTCphAH1uFXGSiF74E5L-jY,419
|
12
|
-
agi_med_common/models/enums/__init__.py,sha256=ooZLUfkRKeJDeTROAAqdRsMoqKBKmgnuGZXWQf9r83Y,39
|
13
|
-
agi_med_common/models/enums/track_id_enum.py,sha256=fHGQz9AACIS6SfTFCrSau1HKee70r2bap-OcBxD3YRE,423
|
14
|
-
agi_med_common-1.4.0.dist-info/METADATA,sha256=nUj-kQJAJ5TXGleZPhKPAiTh43vplQPGr3d7I_xHZfA,520
|
15
|
-
agi_med_common-1.4.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
16
|
-
agi_med_common-1.4.0.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
|
17
|
-
agi_med_common-1.4.0.dist-info/RECORD,,
|
File without changes
|