unique_toolkit 1.8.1__py3-none-any.whl → 1.9.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.
@@ -15,6 +15,7 @@ from unique_toolkit._common.endpoint_builder import (
15
15
  ResponseType,
16
16
  )
17
17
  from unique_toolkit._common.endpoint_requestor import (
18
+ RequestContext,
18
19
  RequestorType,
19
20
  build_requestor,
20
21
  )
@@ -163,7 +164,7 @@ class HumanVerificationManagerForApiCalling(
163
164
  def call_api(
164
165
  self,
165
166
  *,
166
- headers: dict[str, str],
167
+ context: RequestContext,
167
168
  path_params: PathParamsType,
168
169
  payload: PayloadType,
169
170
  ) -> ResponseType:
@@ -171,7 +172,7 @@ class HumanVerificationManagerForApiCalling(
171
172
  params.update(payload.model_dump())
172
173
 
173
174
  response = self._requestor.request(
174
- headers=headers,
175
+ context=context,
175
176
  **params,
176
177
  )
177
178
  return self._operation.handle_response(response)
@@ -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
@@ -1,5 +1,6 @@
1
1
  from enum import StrEnum
2
2
  from typing import Any, Callable, Generic, Protocol, TypeVar
3
+ from urllib.parse import urljoin, urlparse
3
4
 
4
5
  from pydantic import BaseModel
5
6
  from typing_extensions import ParamSpec
@@ -24,11 +25,40 @@ CombinedParamsType = TypeVar("CombinedParamsType", bound=BaseModel)
24
25
  ResponseT_co = TypeVar("ResponseT_co", bound=BaseModel, covariant=True)
25
26
 
26
27
 
28
+ def _construct_full_url(base_url: str, url: str) -> str:
29
+ """
30
+ Construct full URL from base_url and url.
31
+ If base_url is provided and url is absolute, strip the scheme/netloc from url.
32
+ """
33
+ if not base_url:
34
+ return url
35
+
36
+ parsed = urlparse(url)
37
+ if parsed.scheme:
38
+ # URL is absolute, extract only path + query + fragment
39
+ url = parsed._replace(scheme="", netloc="").geturl()
40
+
41
+ return urljoin(base_url, url)
42
+
43
+
44
+ class RequestContext(BaseModel):
45
+ base_url: str = ""
46
+ headers: dict[str, str] | None = None
47
+
48
+
27
49
  class EndpointRequestorProtocol(Protocol, Generic[CombinedParamsSpec, ResponseT_co]):
28
50
  @classmethod
29
51
  def request(
30
52
  cls,
31
- headers: dict[str, str],
53
+ context: RequestContext,
54
+ *args: CombinedParamsSpec.args,
55
+ **kwargs: CombinedParamsSpec.kwargs,
56
+ ) -> ResponseT_co: ...
57
+
58
+ @classmethod
59
+ async def request_async(
60
+ cls,
61
+ context: RequestContext,
32
62
  *args: CombinedParamsSpec.args,
33
63
  **kwargs: CombinedParamsSpec.kwargs,
34
64
  ) -> ResponseT_co: ...
@@ -53,7 +83,7 @@ def build_fake_requestor(
53
83
  @classmethod
54
84
  def request(
55
85
  cls,
56
- headers: dict[str, str],
86
+ context: RequestContext,
57
87
  *args: CombinedParamsSpec.args,
58
88
  **kwargs: CombinedParamsSpec.kwargs,
59
89
  ) -> ResponseType:
@@ -68,6 +98,18 @@ def build_fake_requestor(
68
98
 
69
99
  return cls._operation.handle_response(return_value)
70
100
 
101
+ @classmethod
102
+ async def request_async(
103
+ cls,
104
+ context: RequestContext,
105
+ headers: dict[str, str] | None = None,
106
+ *args: CombinedParamsSpec.args,
107
+ **kwargs: CombinedParamsSpec.kwargs,
108
+ ) -> ResponseType:
109
+ raise NotImplementedError(
110
+ "Async request not implemented for fake requestor"
111
+ )
112
+
71
113
  return FakeRequestor
72
114
 
73
115
 
@@ -91,7 +133,7 @@ def build_request_requestor(
91
133
  @classmethod
92
134
  def request(
93
135
  cls,
94
- headers: dict[str, str],
136
+ context: RequestContext,
95
137
  *args: CombinedParamsSpec.args,
96
138
  **kwargs: CombinedParamsSpec.kwargs,
97
139
  ) -> ResponseType:
@@ -105,18 +147,159 @@ def build_request_requestor(
105
147
 
106
148
  response = requests.request(
107
149
  method=cls._operation.request_method(),
108
- url=url,
109
- headers=headers,
150
+ url=_construct_full_url(context.base_url, url),
151
+ headers=context.headers,
110
152
  json=payload,
111
153
  )
112
154
  return cls._operation.handle_response(response.json())
113
155
 
156
+ @classmethod
157
+ async def request_async(
158
+ cls,
159
+ base_url: str = "",
160
+ headers: dict[str, str] | None = None,
161
+ *args: CombinedParamsSpec.args,
162
+ **kwargs: CombinedParamsSpec.kwargs,
163
+ ) -> ResponseType:
164
+ raise NotImplementedError(
165
+ "Async request not implemented for request requestor"
166
+ )
167
+
114
168
  return RequestRequestor
115
169
 
116
170
 
171
+ def build_httpx_requestor(
172
+ operation_type: type[
173
+ ApiOperationProtocol[
174
+ PathParamsSpec,
175
+ PathParamsType,
176
+ PayloadParamSpec,
177
+ PayloadType,
178
+ ResponseType,
179
+ ]
180
+ ],
181
+ combined_model: Callable[CombinedParamsSpec, CombinedParamsType],
182
+ ) -> type[EndpointRequestorProtocol[CombinedParamsSpec, ResponseType]]:
183
+ import httpx
184
+
185
+ class HttpxRequestor(EndpointRequestorProtocol):
186
+ _operation = operation_type
187
+
188
+ @classmethod
189
+ def request(
190
+ cls,
191
+ context: RequestContext,
192
+ *args: CombinedParamsSpec.args,
193
+ **kwargs: CombinedParamsSpec.kwargs,
194
+ ) -> ResponseType:
195
+ headers = context.headers or {}
196
+
197
+ path_params, payload_model = cls._operation.models_from_combined(
198
+ combined=kwargs
199
+ )
200
+
201
+ with httpx.Client() as client:
202
+ response = client.request(
203
+ method=cls._operation.request_method(),
204
+ url=_construct_full_url(
205
+ base_url=context.base_url,
206
+ url=cls._operation.create_url_from_model(path_params),
207
+ ),
208
+ headers=headers,
209
+ json=cls._operation.create_payload_from_model(payload_model),
210
+ )
211
+ return cls._operation.handle_response(response.json())
212
+
213
+ @classmethod
214
+ async def request_async(
215
+ cls,
216
+ context: RequestContext,
217
+ *args: CombinedParamsSpec.args,
218
+ **kwargs: CombinedParamsSpec.kwargs,
219
+ ) -> ResponseType:
220
+ headers = context.headers or {}
221
+
222
+ path_params, payload_model = cls._operation.models_from_combined(
223
+ combined=kwargs
224
+ )
225
+
226
+ async with httpx.AsyncClient() as client:
227
+ response = await client.request(
228
+ method=cls._operation.request_method(),
229
+ url=_construct_full_url(
230
+ base_url=context.base_url,
231
+ url=cls._operation.create_url_from_model(path_params),
232
+ ),
233
+ headers=headers,
234
+ json=cls._operation.create_payload_from_model(payload_model),
235
+ )
236
+ return cls._operation.handle_response(response.json())
237
+
238
+ return HttpxRequestor
239
+
240
+
241
+ def build_aiohttp_requestor(
242
+ operation_type: type[
243
+ ApiOperationProtocol[
244
+ PathParamsSpec,
245
+ PathParamsType,
246
+ PayloadParamSpec,
247
+ PayloadType,
248
+ ResponseType,
249
+ ]
250
+ ],
251
+ combined_model: Callable[CombinedParamsSpec, CombinedParamsType],
252
+ ) -> type[EndpointRequestorProtocol[CombinedParamsSpec, ResponseType]]:
253
+ import aiohttp
254
+
255
+ class AiohttpRequestor(EndpointRequestorProtocol):
256
+ _operation = operation_type
257
+
258
+ @classmethod
259
+ def request(
260
+ cls,
261
+ context: RequestContext,
262
+ *args: CombinedParamsSpec.args,
263
+ **kwargs: CombinedParamsSpec.kwargs,
264
+ ) -> ResponseType:
265
+ raise NotImplementedError(
266
+ "Sync request not implemented for aiohttp requestor"
267
+ )
268
+
269
+ @classmethod
270
+ async def request_async(
271
+ cls,
272
+ context: RequestContext,
273
+ headers: dict[str, str] | None = None,
274
+ *args: CombinedParamsSpec.args,
275
+ **kwargs: CombinedParamsSpec.kwargs,
276
+ ) -> ResponseType:
277
+ headers = context.headers or {}
278
+
279
+ path_params, payload_model = cls._operation.models_from_combined(
280
+ combined=kwargs
281
+ )
282
+
283
+ async with aiohttp.ClientSession() as session:
284
+ response = await session.request(
285
+ method=cls._operation.request_method(),
286
+ url=_construct_full_url(
287
+ base_url=context.base_url,
288
+ url=cls._operation.create_url_from_model(path_params),
289
+ ),
290
+ headers=headers,
291
+ json=cls._operation.create_payload_from_model(payload_model),
292
+ )
293
+ return cls._operation.handle_response(await response.json())
294
+
295
+ return AiohttpRequestor
296
+
297
+
117
298
  class RequestorType(StrEnum):
118
299
  REQUESTS = "requests"
119
300
  FAKE = "fake"
301
+ HTTPIX = "httpx"
302
+ AIOHTTP = "aiohttp"
120
303
 
121
304
 
122
305
  def build_requestor(
@@ -147,6 +330,14 @@ def build_requestor(
147
330
  combined_model=combined_model,
148
331
  return_value=return_value,
149
332
  )
333
+ case RequestorType.HTTPIX:
334
+ return build_httpx_requestor(
335
+ operation_type=operation_type, combined_model=combined_model
336
+ )
337
+ case RequestorType.AIOHTTP:
338
+ return build_aiohttp_requestor(
339
+ operation_type=operation_type, combined_model=combined_model
340
+ )
150
341
 
151
342
 
152
343
  if __name__ == "__main__":
@@ -183,19 +374,19 @@ if __name__ == "__main__":
183
374
 
184
375
  # Note that the return value is a pydantic UserResponse object
185
376
  response = FakeUserRequestor().request(
186
- headers={"a": "b"},
377
+ context=RequestContext(headers={"a": "b"}),
187
378
  user_id=123,
188
379
  include_profile=True,
189
380
  )
190
381
 
191
- RequestRequstor = build_request_requestor(
382
+ RequestRequestor = build_request_requestor(
192
383
  operation_type=UserEndpoint,
193
384
  combined_model=CombinedParams,
194
385
  )
195
386
 
196
387
  # Check type hints
197
- response = RequestRequstor().request(
198
- headers={"a": "b"}, user_id=123, include_profile=True
388
+ response = RequestRequestor().request(
389
+ context=RequestContext(headers={"a": "b"}), user_id=123, include_profile=True
199
390
  )
200
391
 
201
392
  print(response.model_dump())
@@ -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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.8.1
3
+ Version: 1.9.1
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -88,7 +88,7 @@ The `unique_toolkit.embedding` module encompasses all embedding related function
88
88
  The `unique_toolkit.language_model` module encompasses all language model related functionality and information on the different language models deployed through the
89
89
  Unique platform.
90
90
 
91
- - `infos.py` comprises the information on all language models deployed through the Unique platform. We recommend to use the LanguageModel class, initialized with the LanguageModelName, e.g., LanguageModel(LanguageModelName.AZURE_GPT_35_TURBO_0125) to get the information on the specific language model like the name, version, token limits or retirement date.
91
+ - `infos.py` comprises the information on all language models deployed through the Unique platform. We recommend to use the LanguageModel class, initialized with the LanguageModelName, e.g., LanguageModel(LanguageModelName.AZURE_GPT_4o_2024_1120) to get the information on the specific language model like the name, version, token limits or retirement date.
92
92
  - `functions.py` comprises the functions to complete and stream complete to chat.
93
93
  - `service.py` comprises the LanguageModelService and provides an interface to interact with the language models, e.g., complete.
94
94
  - `schemas.py` comprises all relevant schemas, e.g., LanguageModelResponse, used in the LanguageModelService.
@@ -118,6 +118,12 @@ All notable changes to this project will be documented in this file.
118
118
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
119
119
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
120
120
 
121
+ ## [1.9.1] - 2025-10-06
122
+ - Switch default model used in evaluation service from `GPT-3.5-turbo (0125)` to `GPT-4o (1120)`
123
+
124
+ ## [1.9.0] - 2026-10-04
125
+ - Define the RequestContext and add aihttp/httpx requestors
126
+
121
127
  ## [1.8.1] - 2026-10-03
122
128
  - Fix bug where sub agent evaluation config variable `include_evaluation` did not include aliases for previous names.
123
129
 
@@ -1,16 +1,16 @@
1
1
  unique_toolkit/__init__.py,sha256=nbOYPIKERt-ITsgifrnJhatn1YNR38Ntumw-dCn_tsA,714
2
2
  unique_toolkit/_common/_base_service.py,sha256=S8H0rAebx7GsOldA7xInLp3aQJt9yEPDQdsGSFRJsGg,276
3
3
  unique_toolkit/_common/_time_utils.py,sha256=ztmTovTvr-3w71Ns2VwXC65OKUUh-sQlzbHdKTQWm-w,135
4
- unique_toolkit/_common/api_calling/human_verification_manager.py,sha256=UMOkY1cNhJ6JmtiBl3a4mQ3J21uOyKoCbVu7nR3A5eY,7799
4
+ unique_toolkit/_common/api_calling/human_verification_manager.py,sha256=wgK0hefTh3pdrs8kH26Pba46ROQoFihEhT4r6h189wo,7819
5
5
  unique_toolkit/_common/base_model_type_attribute.py,sha256=7rzVqjXa0deYEixeo_pJSJcQ7nKXpWK_UGpOiEH3yZY,10382
6
- unique_toolkit/_common/chunk_relevancy_sorter/config.py,sha256=kDSEcXeIWGvzK4IXT3pBofTXeUnq3a9qRWaPllweR-s,1817
6
+ unique_toolkit/_common/chunk_relevancy_sorter/config.py,sha256=Tz5no5_qojTX9LNqOewzyxAI7gOIQ5f6PTJiAh6UkBk,1799
7
7
  unique_toolkit/_common/chunk_relevancy_sorter/exception.py,sha256=1mY4zjbvnXsd5oIxwiVsma09bS2XRnHrxW8KJBGtgCM,126
8
8
  unique_toolkit/_common/chunk_relevancy_sorter/schemas.py,sha256=YAyvXzVk8h5q6FEsXyvPi16VIONst9HLFeMi1guGPzs,1342
9
9
  unique_toolkit/_common/chunk_relevancy_sorter/service.py,sha256=ZX1pxcy53zh3Ha0_pN6yYIbMX1acRxcvqKTPTKpGKwA,13938
10
- unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py,sha256=UhDllC40Y1OUQvkU6pe3nu6NR7v0d25yldE6FyozuZI,8926
11
- unique_toolkit/_common/default_language_model.py,sha256=tmHSqg6e8G7RmKqmdE_tmLxkSN0x-aGoyUdy6Pl2oAE,334
10
+ unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py,sha256=QDnUFOmTYHeg62_reQn2ipaDVnKbMDw43QkjkU4Yb6Y,8894
11
+ unique_toolkit/_common/default_language_model.py,sha256=-_DBsJhLCsFdaU4ynAkyW0jYIl2lhrPybZm1K-GgVJs,125
12
12
  unique_toolkit/_common/endpoint_builder.py,sha256=WzJrJ7azUQhvQRd-vsFFoyj6omJpHiVYrh1UFxNQvVg,8242
13
- unique_toolkit/_common/endpoint_requestor.py,sha256=JbbfJGLxgxLz8a3Yx1FdJvdHGbCYO8MSBd7cLg_Mtp0,5927
13
+ unique_toolkit/_common/endpoint_requestor.py,sha256=7rDpeEvmQbLtn3iNW8NftyvAqDkLFGHoYN1h5AFDxho,12319
14
14
  unique_toolkit/_common/exception.py,sha256=hwh60UUawHDyPFNs-Wom-Gc6Yb09gPelftAuW1tXE6o,779
15
15
  unique_toolkit/_common/feature_flags/schema.py,sha256=F1NdVJFNU8PKlS7bYzrIPeDu2LxRqHSM9pyw622a1Kk,547
16
16
  unique_toolkit/_common/pydantic/rjsf_tags.py,sha256=T3AZIF8wny3fFov66s258nEl1GqfKevFouTtG6k9PqU,31219
@@ -26,10 +26,10 @@ unique_toolkit/_common/validate_required_values.py,sha256=Y_M1ub9gIKP9qZ45F6Zq3Z
26
26
  unique_toolkit/_common/validators.py,sha256=LFZmAalNa886EXm1VYamFvfBuUZjYKwDdT_HOYU0BtE,2934
27
27
  unique_toolkit/agentic/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
28
28
  unique_toolkit/agentic/debug_info_manager/debug_info_manager.py,sha256=8u3_oxcln7y2zOsfiGh5YOm1zYAlV5QxZ5YAsbEJG0c,584
29
- unique_toolkit/agentic/evaluation/config.py,sha256=ywHIrJs5SFdKr1WXfrofWuFfzb0iPQw8iZDpq5oEug4,953
29
+ unique_toolkit/agentic/evaluation/config.py,sha256=Fer-y1aP8kmnPWXQydh12i9f_XU7KuZexCsnBhv_Glw,980
30
30
  unique_toolkit/agentic/evaluation/context_relevancy/prompts.py,sha256=EdHFUOB581yVxcOL8482KUv_LzaRjuiem71EF8udYMc,1331
31
31
  unique_toolkit/agentic/evaluation/context_relevancy/schema.py,sha256=lZd0TPzH43ifgWWGg3WO6b1AQX8aK2R9y51yH0d1DHM,2919
32
- unique_toolkit/agentic/evaluation/context_relevancy/service.py,sha256=gCxo4R4YoLLXq6HBwboVnqzuksBnuip-O_ZIfU1sOvg,9666
32
+ unique_toolkit/agentic/evaluation/context_relevancy/service.py,sha256=fkPGq4Nnn5las1waYDICqHl6xC-rR5iOpT24YifGO20,9654
33
33
  unique_toolkit/agentic/evaluation/evaluation_manager.py,sha256=lh4CPYKesS7HIGVe6n-K4NMF1UI9BptNHG87W2RBpdE,7929
34
34
  unique_toolkit/agentic/evaluation/exception.py,sha256=7lcVbCyoN4Md1chNJDFxpUYyWbVrcr9dcc3TxWykJTc,115
35
35
  unique_toolkit/agentic/evaluation/hallucination/constants.py,sha256=0HyvI5zu7JmjHLe9lKJSeAWMvfQfpmR6MLHJ4HPX1hc,2063
@@ -42,7 +42,7 @@ unique_toolkit/agentic/evaluation/schemas.py,sha256=m9JMCUmeqP8KhsJOVEzsz6dRXUe1
42
42
  unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py,sha256=4tDxHTApbaTMxN1sNS8WCqj2BweRk6YqZ5_zHP45jto,7977
43
43
  unique_toolkit/agentic/evaluation/tests/test_output_parser.py,sha256=RN_HcBbU6qy_e_PoYyUFcjWnp3ymJ6-gLj6TgEOupAI,3107
44
44
  unique_toolkit/agentic/history_manager/history_construction_with_contents.py,sha256=c8Zy3erSbHGT8AdICRRlSK91T_FN6tNpTznvUzpLbWk,9023
45
- unique_toolkit/agentic/history_manager/history_manager.py,sha256=1MSFEQtw7jYrcFVEgnTIe6LrGo36WVlutzqTwcFJq5w,9449
45
+ unique_toolkit/agentic/history_manager/history_manager.py,sha256=8PMBwKtBSJDUmHwjrjr5wzkXVVQsrf2TN6I1B1WGoag,9463
46
46
  unique_toolkit/agentic/history_manager/loop_token_reducer.py,sha256=3QSDXZ9M12-cDhYr7-UgDYGEMySkXENt1OkfD0CruQ8,18538
47
47
  unique_toolkit/agentic/history_manager/utils.py,sha256=NDSSz0Jp3oVJU3iKlVScmM1AOe-6hTiVjLr16DUPsV0,5656
48
48
  unique_toolkit/agentic/postprocessor/postprocessor_manager.py,sha256=GDzJhaoOUwxZ37IINkQ7au4CHmAOFS5miP2lqv8ZwZA,4277
@@ -144,7 +144,7 @@ unique_toolkit/short_term_memory/schemas.py,sha256=OhfcXyF6ACdwIXW45sKzjtZX_gkcJ
144
144
  unique_toolkit/short_term_memory/service.py,sha256=5PeVBu1ZCAfyDb2HLVvlmqSbyzBBuE9sI2o9Aajqjxg,8884
145
145
  unique_toolkit/smart_rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
146
  unique_toolkit/smart_rules/compile.py,sha256=cxWjb2dxEI2HGsakKdVCkSNi7VK9mr08w5sDcFCQyWI,9553
147
- unique_toolkit-1.8.1.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
148
- unique_toolkit-1.8.1.dist-info/METADATA,sha256=a-HKRebSMmdRJJIcrobwi1hcz9USNnUe8pPeVao9oTo,35013
149
- unique_toolkit-1.8.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
150
- unique_toolkit-1.8.1.dist-info/RECORD,,
147
+ unique_toolkit-1.9.1.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
148
+ unique_toolkit-1.9.1.dist-info/METADATA,sha256=LcwGQlWHZJSJLWMFioPiGPOKFkO1w_kd45iAvftvSgw,35219
149
+ unique_toolkit-1.9.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
150
+ unique_toolkit-1.9.1.dist-info/RECORD,,