agi-med-common 1.0.0__py3-none-any.whl → 1.2.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.
@@ -1 +1 @@
1
- __version__ = "1.0.0"
1
+ __version__ = "1.2.0"
@@ -0,0 +1,2 @@
1
+ from .log_level_enum import LogLevelEnum
2
+ from .logger import logger_init, log_llm_error, logger
@@ -0,0 +1,15 @@
1
+ from enum import StrEnum, auto
2
+
3
+
4
+ class LogLevelEnum(StrEnum):
5
+ @staticmethod
6
+ def _generate_next_value_(name: str, start: int, count: int, last_values: list[str]) -> str:
7
+ return name.upper()
8
+
9
+ TRACE = auto() # logger.trace()
10
+ DEBUG = auto() # logger.debug()
11
+ INFO = auto() # logger.info()
12
+ SUCCESS = auto() # logger.success()
13
+ WARNING = auto() # logger.warning()
14
+ ERROR = auto() # logger.error()
15
+ CRITICAL = auto() # logger.critical()
@@ -0,0 +1,38 @@
1
+ import sys
2
+ from uuid import UUID
3
+
4
+ from loguru import logger
5
+
6
+ from . import LogLevelEnum
7
+
8
+
9
+ def logger_init(
10
+ log_level: LogLevelEnum, service_name: str, include_outer_context: bool = True, include_extra_uuid: bool = True
11
+ ) -> None:
12
+ logger.remove()
13
+ default_uuid = UUID(int=0)
14
+ format_ = f"{{time:dd-MM-YYYY HH:mm:ss:ms}} | {service_name} | {{extra[uuid]}}"
15
+ extra: dict[str, UUID | str] = {"uuid": default_uuid}
16
+ if include_outer_context:
17
+ format_ = f"{format_} | {{extra[outer_context]}}"
18
+ extra["outer_context"] = default_uuid
19
+ if include_extra_uuid:
20
+ format_ = f"{format_} | {{extra[extra_uuid]}}"
21
+ extra["extra_uuid"] = default_uuid
22
+ format_ = f"{format_} | <level>{{message}}</level>"
23
+ logger.add(sys.stdout, colorize=True, format=format_, level=log_level)
24
+ logger.configure(extra=extra)
25
+
26
+
27
+ def log_llm_error(
28
+ text: str | None = None,
29
+ vector: list[float] | None = None,
30
+ model: str = "gigachat",
31
+ ) -> None:
32
+ if text is not None and not text:
33
+ logger.error(f"No response from {model}!!!")
34
+ return None
35
+ if vector is not None and all(not item for item in vector):
36
+ logger.error(f"No response from {model} encoder!!!")
37
+ return None
38
+ return None
@@ -7,3 +7,4 @@ class ReplicaItem(_Base):
7
7
  body: str = Field(alias="Body")
8
8
  role: bool = Field(alias="Role", description="True = ai, False = client")
9
9
  date_time: str = Field(alias="DateTime")
10
+ previous_score: float | None = Field(None, alias="PreviousScore")
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agi_med_common
3
- Version: 1.0.0
3
+ Version: 1.2.0
4
4
  Summary: Сommon for agi-med team
5
5
  Author: AGI-MED-TEAM
6
6
  Requires-Python: >=3.13
7
7
  Description-Content-Type: text/markdown
8
8
  Requires-Dist: pydantic<=3.0.0,>=2.9.2
9
+ Requires-Dist: loguru==0.7.2
9
10
 
10
11
  # agi-med-common
11
12
 
@@ -19,7 +20,8 @@ Common компонент
19
20
 
20
21
  - Общий ChatItem для сервисов
21
22
  - Общей TrackId
22
- -
23
+ - logger
24
+
23
25
  ## Тесты
24
26
 
25
27
  - `sudo docker compose up --build`
@@ -1,14 +1,17 @@
1
- agi_med_common/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
1
+ agi_med_common/__init__.py,sha256=MpAT5hgNoHnTtG1XRD_GV_A7QrHVU6vJjGSw_8qMGA4,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=9yQqXRWcIJ8QV9EgcjHrnvhqyzJRpeYhlEyKMJ-gOes,1252
2
5
  agi_med_common/models/__init__.py,sha256=v4Iwdw7EdGBoBf50LyFsxn99sDABf6z9hOko7Lmi9NM,106
3
6
  agi_med_common/models/_base.py,sha256=qNdH8x3x3mYbo5XgWtR9VpEarxsEvXvzynadUlDvHmU,149
4
7
  agi_med_common/models/chat_item/__init__.py,sha256=MoZFnZQV-tWJTHmH1OhRBRkrc5cGWAfdJ6QfHDg6TDk,168
5
8
  agi_med_common/models/chat_item/chat_item.py,sha256=aCRR4OwL-YS6hvVSNkIg7FNpfvEGo8BESCY8BhiAlNk,255
6
9
  agi_med_common/models/chat_item/inner_context_item.py,sha256=s17frAcwyi8WcHnBt-5LF8nUJeO-hnu7YMobYQO5a-c,166
7
10
  agi_med_common/models/chat_item/outer_context_item.py,sha256=YMkR_ZAXPK6AKQUnRy4mFqVNGFu4jtsQ7pOlf3xXrLs,666
8
- agi_med_common/models/chat_item/replica_item.py,sha256=MCk0B8fHMQiwFYqdWCNnJgKhbJvQ2ujQP7nu-ztN87I,236
11
+ agi_med_common/models/chat_item/replica_item.py,sha256=o-TODTamLcIZdJc1OhohSU_wEh-9ABv7yjsuup34v1Y,305
9
12
  agi_med_common/models/enums/__init__.py,sha256=ooZLUfkRKeJDeTROAAqdRsMoqKBKmgnuGZXWQf9r83Y,39
10
13
  agi_med_common/models/enums/track_id_enum.py,sha256=flKTRX4Th-bbMdqYiYj4Rj4Mku-p586bdKZS1YqfK6E,394
11
- agi_med_common-1.0.0.dist-info/METADATA,sha256=YPHa887inQzItVEyOOwiYTObCwUwYlcs-dvsbPWMSVk,484
12
- agi_med_common-1.0.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
13
- agi_med_common-1.0.0.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
14
- agi_med_common-1.0.0.dist-info/RECORD,,
14
+ agi_med_common-1.2.0.dist-info/METADATA,sha256=nYuTGWGct7RHK-DLrDTfpgoD5GxlbBHpRYdJNFQwVKw,520
15
+ agi_med_common-1.2.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
16
+ agi_med_common-1.2.0.dist-info/top_level.txt,sha256=26o565jF_7wYQj7-YJfTedtT9yDxDcf8RNikOYuPq78,15
17
+ agi_med_common-1.2.0.dist-info/RECORD,,