unique_toolkit 2026.34.0.dev9__py3-none-any.whl → 2026.34.0.dev11__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.
- unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +4 -0
- unique_toolkit/agentic/evaluation/hallucination/service.py +2 -0
- unique_toolkit/agentic/evaluation/hallucination/utils.py +8 -1
- unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +15 -1
- unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +48 -0
- unique_toolkit/language_model/functions.py +64 -16
- unique_toolkit/language_model/infos.py +3 -2
- unique_toolkit/language_model/service.py +17 -1
- {unique_toolkit-2026.34.0.dev9.dist-info → unique_toolkit-2026.34.0.dev11.dist-info}/METADATA +2 -2
- {unique_toolkit-2026.34.0.dev9.dist-info → unique_toolkit-2026.34.0.dev11.dist-info}/RECORD +11 -11
- {unique_toolkit-2026.34.0.dev9.dist-info → unique_toolkit-2026.34.0.dev11.dist-info}/WHEEL +0 -0
|
@@ -36,6 +36,8 @@ class HallucinationEvaluation(Evaluation):
|
|
|
36
36
|
self.config = config
|
|
37
37
|
self._company_id = event.company_id
|
|
38
38
|
self._user_id = event.user_id
|
|
39
|
+
self._chat_id = event.payload.chat_id
|
|
40
|
+
self._assistant_id = event.payload.assistant_id
|
|
39
41
|
self._reference_manager = reference_manager
|
|
40
42
|
self._user_message = event.payload.user_message.text
|
|
41
43
|
super().__init__(EvaluationMetricName.HALLUCINATION)
|
|
@@ -75,6 +77,8 @@ class HallucinationEvaluation(Evaluation):
|
|
|
75
77
|
output_text=loop_response.message.text,
|
|
76
78
|
),
|
|
77
79
|
config=self.config,
|
|
80
|
+
chat_id=self._chat_id,
|
|
81
|
+
assistant_id=self._assistant_id,
|
|
78
82
|
)
|
|
79
83
|
|
|
80
84
|
score_to_label = self.config.score_to_label
|
|
@@ -37,6 +37,8 @@ async def check_hallucination(
|
|
|
37
37
|
user_id: str,
|
|
38
38
|
input: EvaluationMetricInput,
|
|
39
39
|
config: EvaluationMetricConfig,
|
|
40
|
+
chat_id: str | None = None,
|
|
41
|
+
assistant_id: str | None = None,
|
|
40
42
|
) -> EvaluationMetricResult:
|
|
41
43
|
"""
|
|
42
44
|
Analyzes the level of hallucination in the generated output by comparing it with the provided input
|
|
@@ -77,7 +79,12 @@ async def check_hallucination(
|
|
|
77
79
|
try:
|
|
78
80
|
msgs = _get_msgs(input, config)
|
|
79
81
|
result = await LanguageModelService.complete_async_util(
|
|
80
|
-
company_id=company_id,
|
|
82
|
+
company_id=company_id,
|
|
83
|
+
user_id=user_id,
|
|
84
|
+
messages=msgs,
|
|
85
|
+
model_name=model_name,
|
|
86
|
+
chat_id=chat_id,
|
|
87
|
+
assistant_id=assistant_id,
|
|
81
88
|
)
|
|
82
89
|
except Exception as e:
|
|
83
90
|
error_message = "Error occurred during hallucination metric analysis"
|
|
@@ -36,6 +36,8 @@ def _make_event() -> SimpleNamespace:
|
|
|
36
36
|
company_id="company_1",
|
|
37
37
|
user_id="user_1",
|
|
38
38
|
payload=SimpleNamespace(
|
|
39
|
+
chat_id="chat_1",
|
|
40
|
+
assistant_id="assistant_1",
|
|
39
41
|
user_message=SimpleNamespace(text="what is ACME revenue?"),
|
|
40
42
|
),
|
|
41
43
|
)
|
|
@@ -61,8 +63,18 @@ def captured_context(monkeypatch: pytest.MonkeyPatch) -> dict:
|
|
|
61
63
|
"""Patch check_hallucination to capture the context_texts it receives."""
|
|
62
64
|
captured: dict = {}
|
|
63
65
|
|
|
64
|
-
async def _fake_check_hallucination(
|
|
66
|
+
async def _fake_check_hallucination(
|
|
67
|
+
*,
|
|
68
|
+
company_id,
|
|
69
|
+
user_id,
|
|
70
|
+
input,
|
|
71
|
+
config,
|
|
72
|
+
chat_id,
|
|
73
|
+
assistant_id,
|
|
74
|
+
):
|
|
65
75
|
captured["context_texts"] = list(input.context_texts or [])
|
|
76
|
+
captured["chat_id"] = chat_id
|
|
77
|
+
captured["assistant_id"] = assistant_id
|
|
66
78
|
return EvaluationMetricResult(
|
|
67
79
|
name=EvaluationMetricName.HALLUCINATION,
|
|
68
80
|
value="LOW",
|
|
@@ -86,6 +98,8 @@ async def test_external_context_is_appended(captured_context: dict) -> None:
|
|
|
86
98
|
|
|
87
99
|
# No chunks → context comes solely from the external (MCP) source.
|
|
88
100
|
assert captured_context["context_texts"] == ["ACME revenue: 1M"]
|
|
101
|
+
assert captured_context["chat_id"] == "chat_1"
|
|
102
|
+
assert captured_context["assistant_id"] == "assistant_1"
|
|
89
103
|
assert result.value == "LOW"
|
|
90
104
|
assert result.is_positive is True
|
|
91
105
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Tests for hallucination evaluation utils."""
|
|
2
2
|
|
|
3
3
|
from typing import List, Optional
|
|
4
|
+
from unittest.mock import AsyncMock
|
|
4
5
|
|
|
5
6
|
import pytest
|
|
6
7
|
|
|
@@ -14,6 +15,7 @@ from unique_toolkit.agentic.evaluation.hallucination.utils import (
|
|
|
14
15
|
_from_order_source_selection_mode,
|
|
15
16
|
_from_original_response_source_selection_mode,
|
|
16
17
|
_get_msgs,
|
|
18
|
+
check_hallucination,
|
|
17
19
|
context_text_from_stream_response,
|
|
18
20
|
)
|
|
19
21
|
from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricInput
|
|
@@ -25,8 +27,11 @@ from unique_toolkit.language_model.infos import (
|
|
|
25
27
|
ModelCapabilities,
|
|
26
28
|
)
|
|
27
29
|
from unique_toolkit.language_model.schemas import (
|
|
30
|
+
LanguageModelAssistantMessage,
|
|
31
|
+
LanguageModelCompletionChoice,
|
|
28
32
|
LanguageModelMessageRole,
|
|
29
33
|
LanguageModelMessages,
|
|
34
|
+
LanguageModelResponse,
|
|
30
35
|
LanguageModelStreamResponse,
|
|
31
36
|
)
|
|
32
37
|
|
|
@@ -101,6 +106,49 @@ def evaluation_input() -> EvaluationMetricInput:
|
|
|
101
106
|
)
|
|
102
107
|
|
|
103
108
|
|
|
109
|
+
@pytest.mark.ai
|
|
110
|
+
@pytest.mark.asyncio
|
|
111
|
+
async def test_check_hallucination__forwards_attribution_ids(
|
|
112
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
113
|
+
hallucination_config: HallucinationConfig,
|
|
114
|
+
evaluation_input: EvaluationMetricInput,
|
|
115
|
+
) -> None:
|
|
116
|
+
"""Purpose: Verify hallucination completion receives chat attribution IDs.
|
|
117
|
+
Why this matters: Secondary evaluator usage must link to the originating chat.
|
|
118
|
+
Setup summary: Mock the completion utility, run the check, and inspect its call.
|
|
119
|
+
"""
|
|
120
|
+
complete_async_util = AsyncMock(
|
|
121
|
+
return_value=LanguageModelResponse(
|
|
122
|
+
choices=[
|
|
123
|
+
LanguageModelCompletionChoice(
|
|
124
|
+
index=0,
|
|
125
|
+
message=LanguageModelAssistantMessage(
|
|
126
|
+
content='{"value": "low", "reason": "grounded"}'
|
|
127
|
+
),
|
|
128
|
+
finish_reason="stop",
|
|
129
|
+
)
|
|
130
|
+
]
|
|
131
|
+
)
|
|
132
|
+
)
|
|
133
|
+
monkeypatch.setattr(
|
|
134
|
+
"unique_toolkit.agentic.evaluation.hallucination.utils."
|
|
135
|
+
"LanguageModelService.complete_async_util",
|
|
136
|
+
complete_async_util,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
await check_hallucination(
|
|
140
|
+
company_id="company_1",
|
|
141
|
+
user_id="user_1",
|
|
142
|
+
input=evaluation_input.model_copy(update={"history_messages": []}),
|
|
143
|
+
config=hallucination_config,
|
|
144
|
+
chat_id="chat_1",
|
|
145
|
+
assistant_id="assistant_1",
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
assert complete_async_util.await_args.kwargs["chat_id"] == "chat_1"
|
|
149
|
+
assert complete_async_util.await_args.kwargs["assistant_id"] == "assistant_1"
|
|
150
|
+
|
|
151
|
+
|
|
104
152
|
@pytest.mark.ai
|
|
105
153
|
def test_default_source_selection_mode__selects_chunks__by_source_id_match(
|
|
106
154
|
sample_references: List[ContentReference],
|
|
@@ -41,6 +41,18 @@ from .constants import (
|
|
|
41
41
|
logger = logging.getLogger(f"toolkit.language_model.{__name__}")
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
def _completion_headers(
|
|
45
|
+
chat_id: str | None,
|
|
46
|
+
assistant_id: str | None,
|
|
47
|
+
) -> dict[str, str] | None:
|
|
48
|
+
headers: dict[str, str] = {}
|
|
49
|
+
if chat_id:
|
|
50
|
+
headers["x-chat-id"] = chat_id
|
|
51
|
+
if assistant_id:
|
|
52
|
+
headers["x-assistant-id"] = assistant_id
|
|
53
|
+
return headers or None
|
|
54
|
+
|
|
55
|
+
|
|
44
56
|
def complete(
|
|
45
57
|
company_id: str,
|
|
46
58
|
messages: LanguageModelMessages | list[ChatCompletionMessageParam],
|
|
@@ -52,6 +64,8 @@ def complete(
|
|
|
52
64
|
structured_output_model: type[BaseModel] | dict[str, Any] | None = None,
|
|
53
65
|
structured_output_enforce_schema: bool = False,
|
|
54
66
|
user_id: str | None = None,
|
|
67
|
+
chat_id: str | None = None,
|
|
68
|
+
assistant_id: str | None = None,
|
|
55
69
|
) -> LanguageModelResponse:
|
|
56
70
|
"""Call the completion endpoint synchronously without streaming the response.
|
|
57
71
|
|
|
@@ -87,14 +101,26 @@ def complete(
|
|
|
87
101
|
)
|
|
88
102
|
|
|
89
103
|
try:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
headers = _completion_headers(chat_id, assistant_id)
|
|
105
|
+
if headers is None:
|
|
106
|
+
response = unique_sdk.ChatCompletion.create(
|
|
107
|
+
company_id=company_id,
|
|
108
|
+
user_id=user_id,
|
|
109
|
+
model=model, # pyright: ignore[reportArgumentType]
|
|
110
|
+
messages=messages_dict, # pyright: ignore[reportArgumentType]
|
|
111
|
+
timeout=timeout,
|
|
112
|
+
options=options,
|
|
113
|
+
)
|
|
114
|
+
else:
|
|
115
|
+
response = unique_sdk.ChatCompletion.create(
|
|
116
|
+
company_id=company_id,
|
|
117
|
+
user_id=user_id,
|
|
118
|
+
headers=headers,
|
|
119
|
+
model=model, # pyright: ignore[reportArgumentType]
|
|
120
|
+
messages=messages_dict, # pyright: ignore[reportArgumentType]
|
|
121
|
+
timeout=timeout,
|
|
122
|
+
options=options,
|
|
123
|
+
)
|
|
98
124
|
return LanguageModelResponse(**response)
|
|
99
125
|
except Exception as e:
|
|
100
126
|
logger.error(f"Error completing: {e}")
|
|
@@ -112,6 +138,8 @@ async def complete_async(
|
|
|
112
138
|
other_options: dict[str, Any] | None = None,
|
|
113
139
|
structured_output_model: type[BaseModel] | dict[str, Any] | None = None,
|
|
114
140
|
structured_output_enforce_schema: bool = False,
|
|
141
|
+
chat_id: str | None = None,
|
|
142
|
+
assistant_id: str | None = None,
|
|
115
143
|
) -> LanguageModelResponse:
|
|
116
144
|
"""Call the completion endpoint asynchronously without streaming the response.
|
|
117
145
|
|
|
@@ -156,14 +184,26 @@ async def complete_async(
|
|
|
156
184
|
)
|
|
157
185
|
|
|
158
186
|
try:
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
187
|
+
headers = _completion_headers(chat_id, assistant_id)
|
|
188
|
+
if headers is None:
|
|
189
|
+
response = await unique_sdk.ChatCompletion.create_async(
|
|
190
|
+
company_id=company_id,
|
|
191
|
+
user_id=user_id,
|
|
192
|
+
model=model, # pyright: ignore[reportArgumentType]
|
|
193
|
+
messages=messages_dict, # pyright: ignore[reportArgumentType]
|
|
194
|
+
timeout=timeout,
|
|
195
|
+
options=options,
|
|
196
|
+
)
|
|
197
|
+
else:
|
|
198
|
+
response = await unique_sdk.ChatCompletion.create_async(
|
|
199
|
+
company_id=company_id,
|
|
200
|
+
user_id=user_id,
|
|
201
|
+
headers=headers,
|
|
202
|
+
model=model, # pyright: ignore[reportArgumentType]
|
|
203
|
+
messages=messages_dict, # pyright: ignore[reportArgumentType]
|
|
204
|
+
timeout=timeout,
|
|
205
|
+
options=options,
|
|
206
|
+
)
|
|
167
207
|
return LanguageModelResponse(**response)
|
|
168
208
|
except Exception as e:
|
|
169
209
|
logger.exception(f"Error completing: {e}")
|
|
@@ -434,6 +474,8 @@ def complete_with_references(
|
|
|
434
474
|
tools: list[LanguageModelTool | LanguageModelToolDescription] | None = None,
|
|
435
475
|
start_text: str | None = None,
|
|
436
476
|
other_options: dict[str, Any] | None = None,
|
|
477
|
+
chat_id: str | None = None,
|
|
478
|
+
assistant_id: str | None = None,
|
|
437
479
|
) -> LanguageModelStreamResponse:
|
|
438
480
|
# Use toolkit language model functions for chat completion
|
|
439
481
|
|
|
@@ -446,6 +488,8 @@ def complete_with_references(
|
|
|
446
488
|
timeout=timeout,
|
|
447
489
|
tools=tools,
|
|
448
490
|
other_options=other_options,
|
|
491
|
+
chat_id=chat_id,
|
|
492
|
+
assistant_id=assistant_id,
|
|
449
493
|
)
|
|
450
494
|
|
|
451
495
|
return _create_language_model_stream_response_with_references(
|
|
@@ -467,6 +511,8 @@ async def complete_with_references_async(
|
|
|
467
511
|
tools: list[LanguageModelTool | LanguageModelToolDescription] | None = None,
|
|
468
512
|
start_text: str | None = None,
|
|
469
513
|
other_options: dict[str, Any] | None = None,
|
|
514
|
+
chat_id: str | None = None,
|
|
515
|
+
assistant_id: str | None = None,
|
|
470
516
|
) -> LanguageModelStreamResponse:
|
|
471
517
|
# Use toolkit language model functions for chat completion
|
|
472
518
|
response = await complete_async(
|
|
@@ -478,6 +524,8 @@ async def complete_with_references_async(
|
|
|
478
524
|
timeout=timeout,
|
|
479
525
|
tools=tools,
|
|
480
526
|
other_options=other_options,
|
|
527
|
+
chat_id=chat_id,
|
|
528
|
+
assistant_id=assistant_id,
|
|
481
529
|
)
|
|
482
530
|
|
|
483
531
|
return _create_language_model_stream_response_with_references(
|
|
@@ -1672,8 +1672,9 @@ class LanguageModelInfo(BaseModel):
|
|
|
1672
1672
|
version="claude-sonnet-5",
|
|
1673
1673
|
encoder_name=EncoderName.O200K_BASE, # TODO: Update encoder with litellm
|
|
1674
1674
|
token_limits=LanguageModelTokenLimits(
|
|
1675
|
-
|
|
1676
|
-
|
|
1675
|
+
# TODO: Remove the 1.3 adjustment once a proper Claude tokenizer is implemented. UN-24123
|
|
1676
|
+
token_limit_input=int(1_000_000 / 1.3),
|
|
1677
|
+
token_limit_output=int(128_000 / 1.3),
|
|
1677
1678
|
),
|
|
1678
1679
|
info_cutoff_at=date(2026, 1, 1),
|
|
1679
1680
|
published_at=date(2026, 7, 1),
|
|
@@ -85,7 +85,11 @@ class LanguageModelService:
|
|
|
85
85
|
"""
|
|
86
86
|
Initialize the LanguageModelService with an event.
|
|
87
87
|
"""
|
|
88
|
-
|
|
88
|
+
service = cls(company_id=event.company_id, user_id=event.user_id)
|
|
89
|
+
if isinstance(event, AssistantWebhookEvent):
|
|
90
|
+
service._chat_id = event.payload.chat_id
|
|
91
|
+
service._assistant_id = event.payload.assistant_id
|
|
92
|
+
return service
|
|
89
93
|
|
|
90
94
|
@classmethod
|
|
91
95
|
def from_settings(cls, settings: UniqueSettings | str | None = None, **kwargs: Any):
|
|
@@ -245,6 +249,8 @@ class LanguageModelService:
|
|
|
245
249
|
other_options=other_options,
|
|
246
250
|
structured_output_model=structured_output_model,
|
|
247
251
|
structured_output_enforce_schema=structured_output_enforce_schema,
|
|
252
|
+
chat_id=self._chat_id,
|
|
253
|
+
assistant_id=self._assistant_id,
|
|
248
254
|
)
|
|
249
255
|
|
|
250
256
|
async def complete_async(
|
|
@@ -273,6 +279,8 @@ class LanguageModelService:
|
|
|
273
279
|
other_options=other_options,
|
|
274
280
|
structured_output_model=structured_output_model,
|
|
275
281
|
structured_output_enforce_schema=structured_output_enforce_schema,
|
|
282
|
+
chat_id=self._chat_id,
|
|
283
|
+
assistant_id=self._assistant_id,
|
|
276
284
|
)
|
|
277
285
|
|
|
278
286
|
@classmethod
|
|
@@ -289,6 +297,8 @@ class LanguageModelService:
|
|
|
289
297
|
structured_output_model: Optional[Type[BaseModel] | dict[str, Any]] = None,
|
|
290
298
|
structured_output_enforce_schema: bool = False,
|
|
291
299
|
other_options: Optional[dict[str, Any]] = None,
|
|
300
|
+
chat_id: str | None = None,
|
|
301
|
+
assistant_id: str | None = None,
|
|
292
302
|
) -> LanguageModelResponse:
|
|
293
303
|
"""
|
|
294
304
|
Calls the completion endpoint asynchronously without streaming the response.
|
|
@@ -305,6 +315,8 @@ class LanguageModelService:
|
|
|
305
315
|
other_options=other_options,
|
|
306
316
|
structured_output_model=structured_output_model,
|
|
307
317
|
structured_output_enforce_schema=structured_output_enforce_schema,
|
|
318
|
+
chat_id=chat_id,
|
|
319
|
+
assistant_id=assistant_id,
|
|
308
320
|
)
|
|
309
321
|
|
|
310
322
|
def complete_with_references(
|
|
@@ -330,6 +342,8 @@ class LanguageModelService:
|
|
|
330
342
|
other_options=other_options,
|
|
331
343
|
tools=tools,
|
|
332
344
|
start_text=start_text,
|
|
345
|
+
chat_id=self._chat_id,
|
|
346
|
+
assistant_id=self._assistant_id,
|
|
333
347
|
)
|
|
334
348
|
|
|
335
349
|
async def complete_with_references_async(
|
|
@@ -355,4 +369,6 @@ class LanguageModelService:
|
|
|
355
369
|
other_options=other_options,
|
|
356
370
|
tools=tools,
|
|
357
371
|
start_text=start_text,
|
|
372
|
+
chat_id=self._chat_id,
|
|
373
|
+
assistant_id=self._assistant_id,
|
|
358
374
|
)
|
{unique_toolkit-2026.34.0.dev9.dist-info → unique_toolkit-2026.34.0.dev11.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 2026.34.0.
|
|
3
|
+
Version: 2026.34.0.dev11
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
|
|
6
6
|
Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
|
|
@@ -16,7 +16,7 @@ Requires-Dist: sseclient>=0.0.27,<0.0.28
|
|
|
16
16
|
Requires-Dist: openai>=1.105.0,<3
|
|
17
17
|
Requires-Dist: platformdirs>=4.0.0,<5
|
|
18
18
|
Requires-Dist: pillow>=12.1.1
|
|
19
|
-
Requires-Dist: unique-sdk>=2026.34.0.
|
|
19
|
+
Requires-Dist: unique-sdk>=2026.34.0.dev5,<2026.34.0rc0
|
|
20
20
|
Requires-Dist: jambo>=0.1.2,<0.2
|
|
21
21
|
Requires-Dist: jinja2>=3.1.6,<4
|
|
22
22
|
Requires-Dist: docxtpl>=0.20.1,<0.21
|
|
@@ -94,20 +94,20 @@ unique_toolkit/agentic/evaluation/context_relevancy/service.py,sha256=RAmV21RXiy
|
|
|
94
94
|
unique_toolkit/agentic/evaluation/evaluation_manager.py,sha256=OIh1LhkKQFIpori06Ikaidc1HtIFItVxUsYp73XLCeg,8801
|
|
95
95
|
unique_toolkit/agentic/evaluation/exception.py,sha256=6DtYhsOdJ7WnbpjY45pb9m7VN4ZbRACsQ-VRLeHZXgs,911
|
|
96
96
|
unique_toolkit/agentic/evaluation/hallucination/constants.py,sha256=uEQR-CNKmeXizDaLOLHhwTZ0iYUmFwoKeMLHPm4M0sY,3208
|
|
97
|
-
unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py,sha256=
|
|
97
|
+
unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py,sha256=R_GKauBDj-u-taDGG1k6JULgEyFcOceaOqjTTO6fwZs,4730
|
|
98
98
|
unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py,sha256=4KFYMZsB3fJUKzoiUJE1npZ0gueWgvceB32EUrN-v7A,343
|
|
99
99
|
unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2,sha256=sDUX6G645Ba40D_qKu4cUI8g-sJOfG8JpZreTNFgf7M,2616
|
|
100
100
|
unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2,sha256=mD_qE9fOkyc1XXrebFt097ddx8bTlA6lbY04hKSQmWs,273
|
|
101
|
-
unique_toolkit/agentic/evaluation/hallucination/service.py,sha256=
|
|
102
|
-
unique_toolkit/agentic/evaluation/hallucination/utils.py,sha256=
|
|
101
|
+
unique_toolkit/agentic/evaluation/hallucination/service.py,sha256=QSPsRxx2H-YpSR2Jn7zJKtwZfZ7elTPAFQiYvM3gYfs,2618
|
|
102
|
+
unique_toolkit/agentic/evaluation/hallucination/utils.py,sha256=QVXO0hFrsGxvbgTwC40RSfrLhE_1of1oBrrfcafk10Y,15531
|
|
103
103
|
unique_toolkit/agentic/evaluation/output_parser.py,sha256=0FDo8YY_Dc4qlTNeYyQkznzIFj9aX9wMrLOTbhhTl6g,1418
|
|
104
104
|
unique_toolkit/agentic/evaluation/schemas.py,sha256=RT0O-AXSOf1zV3fDbUfn7V6bOIA01pkzui02Uad9E3Y,3815
|
|
105
105
|
unique_toolkit/agentic/evaluation/tests/fixtures.py,sha256=Q-ughTfDiAdsMKbBVGzFiBucFdAx-FXgJ9iqp5xMyPs,2801
|
|
106
106
|
unique_toolkit/agentic/evaluation/tests/test_config.py,sha256=p7xFQ7KE_yU8jGpqYA7ntAYe5Vln33wd6nwv3FM9XfI,8327
|
|
107
107
|
unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py,sha256=-GRxH70vzvrZG6Hz0igH6i2CqM7Z9jjKt3396xWDh84,12011
|
|
108
108
|
unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py,sha256=A77nRcniI7hUf640f1sTvCAibQbJE30ikbz1RX4fltw,20478
|
|
109
|
-
unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py,sha256=
|
|
110
|
-
unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py,sha256=
|
|
109
|
+
unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py,sha256=3JR9WfBWazX7a1h3uq77Q6kSKm8Mt-aAW8KUYxJUw14,4303
|
|
110
|
+
unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py,sha256=JzFXSH3k1qnSDbZEQy5ftKiVnVL_jS1PTpp3H3DjewI,39218
|
|
111
111
|
unique_toolkit/agentic/evaluation/tests/test_output_parser.py,sha256=KfltytmvqnPWLhmZpBXqcRmnlYorw_USwM5rkLVv8so,5179
|
|
112
112
|
unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py,sha256=zBREdlKf5tdDyB8XSaNgpQv3-tuZJoYteeJrp6WMWDM,11897
|
|
113
113
|
unique_toolkit/agentic/evaluation/utils.py,sha256=HmyPaDV8wdW-_gOjjW-wDaMKgdrsP5-SHP7OqTmGI_A,264
|
|
@@ -391,14 +391,14 @@ unique_toolkit/language_model/_responses_api_utils.py,sha256=w2ZyleOQcWLpOWGJNNb
|
|
|
391
391
|
unique_toolkit/language_model/builder.py,sha256=KwBzsD6-fvQnB4p2I7M-5Tk6j4tmQ973MYwU1ulXFb4,4526
|
|
392
392
|
unique_toolkit/language_model/constants.py,sha256=B-topqW0r83dkC_25DeQfnPk3n53qzIHUCBS7YJ0-1U,119
|
|
393
393
|
unique_toolkit/language_model/default_language_model.py,sha256=mcyuFs_V6tp52C8xJSHiEHO4kFGj6xed1gvozvCRD7k,1181
|
|
394
|
-
unique_toolkit/language_model/functions.py,sha256=
|
|
395
|
-
unique_toolkit/language_model/infos.py,sha256=
|
|
394
|
+
unique_toolkit/language_model/functions.py,sha256=DG5xs1jvsf93wVJlIpRuw5WcVfT7ELp_7qMDZHupTb8,25254
|
|
395
|
+
unique_toolkit/language_model/infos.py,sha256=K8n_cGWJbfrfaPljrBUWembPPCc9SNY9tZc12JeKRJ0,145677
|
|
396
396
|
unique_toolkit/language_model/invocation_stats.py,sha256=XAM_qckI-BoMBSgDpVcxFD1cFSdi1-GHZToHz_jLynM,2491
|
|
397
397
|
unique_toolkit/language_model/model_costs.py,sha256=WM1u2fWAKpPB_creS-ew8YAzc1V8oiaCbvhpSJaO8B0,3789
|
|
398
398
|
unique_toolkit/language_model/prompt.py,sha256=JSawaLjQg3VR-E2fK8engFyJnNdk21zaO8pPIodzN4Q,3991
|
|
399
399
|
unique_toolkit/language_model/reference.py,sha256=T3wr2jP_uRg5wKVIbKqLbxJlcgxfbZQGq3XdjbQ2kSo,6984
|
|
400
400
|
unique_toolkit/language_model/schemas.py,sha256=IUmp_JMHx0czadJlmsLL9nmc-nCPmVRVLp2T5DSYsqY,35402
|
|
401
|
-
unique_toolkit/language_model/service.py,sha256=
|
|
401
|
+
unique_toolkit/language_model/service.py,sha256=9Q1xQCGjGVHZVMjkXaAPKAc7fLY2lGY6sFgdasoRQZE,12616
|
|
402
402
|
unique_toolkit/language_model/settings.py,sha256=7szohExI-qmTfUf2Zp5AB5TzrsZy1UekAGyXx_UaPMc,1524
|
|
403
403
|
unique_toolkit/language_model/stream_transform.py,sha256=iNNGpLY_7G6Bpp9Y4KtbIkQm3WB4yZt75BXcqx0DVkI,2775
|
|
404
404
|
unique_toolkit/language_model/utils.py,sha256=bPQ4l6_YO71w-zaIPanUUmtbXC1_hCvLK0tAFc3VCRc,1902
|
|
@@ -420,6 +420,6 @@ unique_toolkit/short_term_memory/service.py,sha256=2JMBEBn6GoyK-a0xvdcWpPft-3C74
|
|
|
420
420
|
unique_toolkit/smart_rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
421
421
|
unique_toolkit/smart_rules/compile.py,sha256=vRe0aMJWuVIK-VsqomgxQImzke7MDmwgSxxJfYCa7zw,1386
|
|
422
422
|
unique_toolkit/test_utilities/events.py,sha256=FLrhMh0A_mQutAUjoD0FdMcVQ4Gq31r35OVGzRjvLro,6760
|
|
423
|
-
unique_toolkit-2026.34.0.
|
|
424
|
-
unique_toolkit-2026.34.0.
|
|
425
|
-
unique_toolkit-2026.34.0.
|
|
423
|
+
unique_toolkit-2026.34.0.dev11.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
424
|
+
unique_toolkit-2026.34.0.dev11.dist-info/METADATA,sha256=bosO0M7wQ5mBgcr9PtW8z6T5CH3esYPqY13pAjj7zes,7822
|
|
425
|
+
unique_toolkit-2026.34.0.dev11.dist-info/RECORD,,
|
|
File without changes
|