unique_toolkit 1.9.0__py3-none-any.whl → 1.10.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.
@@ -2,6 +2,7 @@
2
2
  from unique_toolkit.chat import ChatService
3
3
  from unique_toolkit.content import ContentService
4
4
  from unique_toolkit.embedding import EmbeddingService
5
+ from unique_toolkit.knowledge_base import KnowledgeBaseService
5
6
  from unique_toolkit.language_model import (
6
7
  LanguageModelMessages,
7
8
  LanguageModelName,
@@ -21,4 +22,5 @@ __all__ = [
21
22
  "ContentService",
22
23
  "EmbeddingService",
23
24
  "ShortTermMemoryService",
25
+ "KnowledgeBaseService",
24
26
  ]
@@ -2,7 +2,7 @@ from typing import Annotated, Any
2
2
 
3
3
  from pydantic import BaseModel, Field
4
4
 
5
- from unique_toolkit._common.default_language_model import DEFAULT_GPT_35_TURBO
5
+ from unique_toolkit._common.default_language_model import DEFAULT_GPT_4o
6
6
  from unique_toolkit._common.validators import LMI, get_LMI_default_field
7
7
  from unique_toolkit.agentic.evaluation.context_relevancy.schema import (
8
8
  StructuredOutputConfig,
@@ -25,11 +25,11 @@ class ChunkRelevancySortConfig(BaseModel):
25
25
  description="The relevancy level order.",
26
26
  )
27
27
  language_model: LMI = get_LMI_default_field(
28
- DEFAULT_GPT_35_TURBO,
28
+ DEFAULT_GPT_4o,
29
29
  description="The language model to use for the chunk relevancy sort.",
30
30
  )
31
31
  fallback_language_model: LMI = get_LMI_default_field(
32
- DEFAULT_GPT_35_TURBO,
32
+ DEFAULT_GPT_4o,
33
33
  description="The language model to use as a fallback.",
34
34
  )
35
35
  additional_llm_options: dict[str, Any] = Field(
@@ -14,7 +14,6 @@ from unique_toolkit._common.chunk_relevancy_sorter.schemas import (
14
14
  )
15
15
  from unique_toolkit._common.chunk_relevancy_sorter.service import ChunkRelevancySorter
16
16
  from unique_toolkit._common.default_language_model import (
17
- DEFAULT_GPT_35_TURBO,
18
17
  DEFAULT_GPT_4o,
19
18
  )
20
19
  from unique_toolkit.agentic.evaluation.context_relevancy.schema import (
@@ -60,7 +59,7 @@ def config():
60
59
  relevancy_levels_to_consider=["high", "medium", "low"],
61
60
  relevancy_level_order={"high": 0, "medium": 1, "low": 2},
62
61
  language_model=LanguageModelInfo.from_name(DEFAULT_GPT_4o),
63
- fallback_language_model=LanguageModelInfo.from_name(DEFAULT_GPT_35_TURBO),
62
+ fallback_language_model=LanguageModelInfo.from_name(DEFAULT_GPT_4o),
64
63
  structured_output_config=StructuredOutputConfig(
65
64
  enabled=False,
66
65
  extract_fact_list=False,
@@ -1,6 +1,3 @@
1
1
  from unique_toolkit.language_model.infos import LanguageModelName
2
2
 
3
- DEFAULT_GPT_35_TURBO = LanguageModelName.AZURE_GPT_35_TURBO_0125
4
3
  DEFAULT_GPT_4o = LanguageModelName.AZURE_GPT_4o_2024_1120
5
- DEFAULT_GPT_4o_STRUCTURED_OUTPUT = LanguageModelName.AZURE_GPT_4o_2024_0806
6
- DEFAULT_GPT_4o_MINI = LanguageModelName.AZURE_GPT_4o_MINI_2024_0718
@@ -0,0 +1,43 @@
1
+ import mimetypes
2
+ from enum import StrEnum
3
+
4
+
5
+ class FileMimeType(StrEnum):
6
+ PDF = "application/pdf"
7
+ DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
8
+ DOC = "application/msword"
9
+ XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
10
+ XLS = "application/vnd.ms-excel"
11
+ PPTX = "application/vnd.openxmlformats-officedocument.presentationml.presentation"
12
+ CSV = "text/csv"
13
+ HTML = "text/html"
14
+ MD = "text/markdown"
15
+ TXT = "text/plain"
16
+
17
+
18
+ class ImageMimeType(StrEnum):
19
+ JPEG = "image/jpeg"
20
+ PNG = "image/png"
21
+ GIF = "image/gif"
22
+ BMP = "image/bmp"
23
+ WEBP = "image/webp"
24
+ TIFF = "image/tiff"
25
+ SVG = "image/svg+xml"
26
+
27
+
28
+ def is_file_content(filename: str) -> bool:
29
+ mimetype, _ = mimetypes.guess_type(filename)
30
+
31
+ if not mimetype:
32
+ return False
33
+
34
+ return mimetype in FileMimeType.__members__.values()
35
+
36
+
37
+ def is_image_content(filename: str) -> bool:
38
+ mimetype, _ = mimetypes.guess_type(filename)
39
+
40
+ if not mimetype:
41
+ return False
42
+
43
+ return mimetype in ImageMimeType.__members__.values()
@@ -3,8 +3,9 @@ from typing import Any
3
3
  from humps import camelize
4
4
  from pydantic import BaseModel, ConfigDict, Field
5
5
 
6
+ from unique_toolkit._common.default_language_model import DEFAULT_GPT_4o
6
7
  from unique_toolkit._common.validators import LMI
7
- from unique_toolkit.language_model.infos import LanguageModelInfo, LanguageModelName
8
+ from unique_toolkit.language_model.infos import LanguageModelInfo
8
9
 
9
10
  from .schemas import (
10
11
  EvaluationMetricName,
@@ -24,7 +25,7 @@ class EvaluationMetricConfig(BaseModel):
24
25
  enabled: bool = False
25
26
  name: EvaluationMetricName
26
27
  language_model: LMI = LanguageModelInfo.from_name(
27
- LanguageModelName.AZURE_GPT_35_TURBO_0125,
28
+ DEFAULT_GPT_4o,
28
29
  )
29
30
  additional_llm_options: dict[str, Any] = Field(
30
31
  default={},
@@ -4,7 +4,7 @@ from typing import overload
4
4
  from pydantic import BaseModel, ValidationError
5
5
  from typing_extensions import deprecated
6
6
 
7
- from unique_toolkit._common.default_language_model import DEFAULT_GPT_35_TURBO
7
+ from unique_toolkit._common.default_language_model import DEFAULT_GPT_4o
8
8
  from unique_toolkit._common.validate_required_values import (
9
9
  validate_required_values,
10
10
  )
@@ -49,7 +49,7 @@ USER_MSG_KEY = "userPrompt"
49
49
  default_config = EvaluationMetricConfig(
50
50
  enabled=False,
51
51
  name=EvaluationMetricName.CONTEXT_RELEVANCY,
52
- language_model=LanguageModelInfo.from_name(DEFAULT_GPT_35_TURBO),
52
+ language_model=LanguageModelInfo.from_name(DEFAULT_GPT_4o),
53
53
  custom_prompts={
54
54
  SYSTEM_MSG_KEY: CONTEXT_RELEVANCY_METRIC_SYSTEM_MSG,
55
55
  USER_MSG_KEY: CONTEXT_RELEVANCY_METRIC_USER_MSG,
@@ -3,6 +3,7 @@ from typing import Annotated, Awaitable, Callable
3
3
 
4
4
  from pydantic import BaseModel, Field
5
5
 
6
+ from unique_toolkit._common.default_language_model import DEFAULT_GPT_4o
6
7
  from unique_toolkit._common.validators import LMI
7
8
  from unique_toolkit.agentic.history_manager.loop_token_reducer import LoopTokenReducer
8
9
  from unique_toolkit.agentic.history_manager.utils import transform_chunks_to_string
@@ -10,7 +11,7 @@ from unique_toolkit.agentic.reference_manager.reference_manager import Reference
10
11
  from unique_toolkit.agentic.tools.config import get_configuration_dict
11
12
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
12
13
  from unique_toolkit.app.schemas import ChatEvent
13
- from unique_toolkit.language_model.infos import LanguageModelInfo, LanguageModelName
14
+ from unique_toolkit.language_model.infos import LanguageModelInfo
14
15
  from unique_toolkit.language_model.schemas import (
15
16
  LanguageModelAssistantMessage,
16
17
  LanguageModelFunction,
@@ -61,9 +62,7 @@ class HistoryManagerConfig(BaseModel):
61
62
  description="The fraction of the max input tokens that will be reserved for the history.",
62
63
  )
63
64
 
64
- language_model: LMI = LanguageModelInfo.from_name(
65
- LanguageModelName.AZURE_GPT_4o_2024_1120
66
- )
65
+ language_model: LMI = LanguageModelInfo.from_name(DEFAULT_GPT_4o)
67
66
 
68
67
  @property
69
68
  def max_history_tokens(self) -> int:
@@ -0,0 +1,232 @@
1
+ from typing_extensions import deprecated
2
+
3
+ from unique_toolkit.app.schemas import ChatEvent, Event
4
+ from unique_toolkit.chat.functions import (
5
+ modify_message,
6
+ )
7
+
8
+
9
+ class ChatServiceDeprecated:
10
+ def __init__(self, event: ChatEvent | Event):
11
+ self._event = event
12
+ self._company_id: str = event.company_id
13
+ self._user_id: str = event.user_id
14
+ self._assistant_message_id: str = event.payload.assistant_message.id
15
+ self._user_message_id: str = event.payload.user_message.id
16
+ self._chat_id: str = event.payload.chat_id
17
+ self._assistant_id: str = event.payload.assistant_id
18
+ self._user_message_text: str = event.payload.user_message.text
19
+
20
+ @property
21
+ @deprecated(
22
+ "The event property is deprecated and will be removed in a future version.",
23
+ )
24
+ def event(self) -> Event | ChatEvent:
25
+ """Get the event object (deprecated).
26
+
27
+ Returns:
28
+ Event | BaseEvent | None: The event object.
29
+
30
+ """
31
+ return self._event
32
+
33
+ @property
34
+ @deprecated(
35
+ "The company_id property is deprecated and will be removed in a future version.",
36
+ )
37
+ def company_id(self) -> str:
38
+ """Get the company identifier (deprecated).
39
+
40
+ Returns:
41
+ str | None: The company identifier.
42
+
43
+ """
44
+ return self._company_id
45
+
46
+ @company_id.setter
47
+ @deprecated(
48
+ "The company_id setter is deprecated and will be removed in a future version.",
49
+ )
50
+ def company_id(self, value: str) -> None:
51
+ """Set the company identifier (deprecated).
52
+
53
+ Args:
54
+ value (str | None): The company identifier.
55
+
56
+ """
57
+ self._company_id = value
58
+
59
+ @property
60
+ @deprecated(
61
+ "The user_id property is deprecated and will be removed in a future version.",
62
+ )
63
+ def user_id(self) -> str:
64
+ """Get the user identifier (deprecated).
65
+
66
+ Returns:
67
+ str | None: The user identifier.
68
+
69
+ """
70
+ return self._user_id
71
+
72
+ @user_id.setter
73
+ @deprecated(
74
+ "The user_id setter is deprecated and will be removed in a future version.",
75
+ )
76
+ def user_id(self, value: str) -> None:
77
+ """Set the user identifier (deprecated).
78
+
79
+ Args:
80
+ value (str | None): The user identifier.
81
+
82
+ """
83
+ self._user_id = value
84
+
85
+ @property
86
+ @deprecated(
87
+ "The assistant_message_id property is deprecated and will be removed in a future version.",
88
+ )
89
+ def assistant_message_id(self) -> str:
90
+ """Get the assistant message identifier (deprecated).
91
+
92
+ Returns:
93
+ str | None: The assistant message identifier.
94
+
95
+ """
96
+ return self._assistant_message_id
97
+
98
+ @assistant_message_id.setter
99
+ @deprecated(
100
+ "The assistant_message_id setter is deprecated and will be removed in a future version.",
101
+ )
102
+ def assistant_message_id(self, value: str) -> None:
103
+ """Set the assistant message identifier (deprecated).
104
+
105
+ Args:
106
+ value (str | None): The assistant message identifier.
107
+
108
+ """
109
+ self._assistant_message_id = value
110
+
111
+ @property
112
+ @deprecated(
113
+ "The user_message_id property is deprecated and will be removed in a future version.",
114
+ )
115
+ def user_message_id(self) -> str:
116
+ """Get the user message identifier (deprecated).
117
+
118
+ Returns:
119
+ str | None: The user message identifier.
120
+
121
+ """
122
+ return self._user_message_id
123
+
124
+ @user_message_id.setter
125
+ @deprecated(
126
+ "The user_message_id setter is deprecated and will be removed in a future version.",
127
+ )
128
+ def user_message_id(self, value: str) -> None:
129
+ """Set the user message identifier (deprecated).
130
+
131
+ Args:
132
+ value (str | None): The user message identifier.
133
+
134
+ """
135
+ self._user_message_id = value
136
+
137
+ @property
138
+ @deprecated(
139
+ "The chat_id property is deprecated and will be removed in a future version.",
140
+ )
141
+ def chat_id(self) -> str:
142
+ """Get the chat identifier (deprecated).
143
+
144
+ Returns:
145
+ str | None: The chat identifier.
146
+
147
+ """
148
+ return self._chat_id
149
+
150
+ @chat_id.setter
151
+ @deprecated(
152
+ "The chat_id setter is deprecated and will be removed in a future version.",
153
+ )
154
+ def chat_id(self, value: str) -> None:
155
+ """Set the chat identifier (deprecated).
156
+
157
+ Args:
158
+ value (str | None): The chat identifier.
159
+
160
+ """
161
+ self._chat_id = value
162
+
163
+ @property
164
+ @deprecated(
165
+ "The assistant_id property is deprecated and will be removed in a future version.",
166
+ )
167
+ def assistant_id(self) -> str:
168
+ """Get the assistant identifier (deprecated).
169
+
170
+ Returns:
171
+ str | None: The assistant identifier.
172
+
173
+ """
174
+ return self._assistant_id
175
+
176
+ @assistant_id.setter
177
+ @deprecated(
178
+ "The assistant_id setter is deprecated and will be removed in a future version.",
179
+ )
180
+ def assistant_id(self, value: str) -> None:
181
+ """Set the assistant identifier (deprecated).
182
+
183
+ Args:
184
+ value (str | None): The assistant identifier.
185
+
186
+ """
187
+ self._assistant_id = value
188
+
189
+ @property
190
+ @deprecated(
191
+ "The user_message_text property is deprecated and will be removed in a future version.",
192
+ )
193
+ def user_message_text(self) -> str:
194
+ """Get the user message text (deprecated).
195
+
196
+ Returns:
197
+ str | None: The user message text.
198
+
199
+ """
200
+ return self._user_message_text
201
+
202
+ @user_message_text.setter
203
+ @deprecated(
204
+ "The user_message_text setter is deprecated and will be removed in a future version.",
205
+ )
206
+ def user_message_text(self, value: str) -> None:
207
+ """Set the user message text (deprecated).
208
+
209
+ Args:
210
+ value (str | None): The user message text.
211
+
212
+ """
213
+ self._user_message_text = value
214
+
215
+ @deprecated("Use `replace_debug_info`")
216
+ def update_debug_info(self, debug_info: dict):
217
+ """Updates the debug information for the chat session.
218
+
219
+ Args:
220
+ debug_info (dict): The new debug information.
221
+
222
+ """
223
+ return modify_message(
224
+ user_id=self._user_id,
225
+ company_id=self._company_id,
226
+ assistant_message_id=self._assistant_message_id,
227
+ chat_id=self._chat_id,
228
+ user_message_id=self._user_message_id,
229
+ user_message_text=self._user_message_text,
230
+ assistant=False,
231
+ debug_info=debug_info,
232
+ )