unique_toolkit 0.8.6__tar.gz → 0.8.7__tar.gz
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-0.8.6 → unique_toolkit-0.8.7}/CHANGELOG.md +6 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/PKG-INFO +8 -1
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/pyproject.toml +2 -7
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/functions.py +82 -74
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/service.py +145 -144
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/framework_utilities/openai/message_builder.py +21 -12
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/builder.py +23 -11
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/functions.py +109 -10
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/schemas.py +19 -7
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/LICENSE +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/README.md +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/__init__.py +3 -3
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/config.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/context_relevancy/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/context_relevancy/prompts.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/context_relevancy/service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/context_relevancy/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/exception.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/hallucination/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/hallucination/prompts.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/hallucination/service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/hallucination/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/output_parser.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/evaluators/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/agent_chunks_handler.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/config.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/factory.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/schemas.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/tool.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/tool_manager.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/utils/execution/execution.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-0.8.6 → unique_toolkit-0.8.7}/unique_toolkit/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
## [0.8.7] - 2025-08-11
|
|
10
|
+
- Make chat service openai compatible
|
|
11
|
+
- Fix some bugs
|
|
12
|
+
- Make OpenAIMessageBuilder more congruent to MessageBuilder
|
|
13
|
+
|
|
8
14
|
## [0.8.6] - 2025-08-11
|
|
9
15
|
- Add GPT-5, GPT-5_MINI, GPT-5_NANO, GPT-5_CHAT to supported models list
|
|
10
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_toolkit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.7
|
|
4
4
|
Summary:
|
|
5
5
|
License: Proprietary
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -11,6 +11,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Requires-Dist: numpy (>=1.26.4,<2.0.0)
|
|
14
|
+
Requires-Dist: openai (>=1.99.9,<2.0.0)
|
|
14
15
|
Requires-Dist: pydantic (>=2.8.2,<3.0.0)
|
|
15
16
|
Requires-Dist: pydantic-settings (>=2.10.1,<3.0.0)
|
|
16
17
|
Requires-Dist: pyhumps (>=3.8.0,<4.0.0)
|
|
@@ -113,6 +114,12 @@ All notable changes to this project will be documented in this file.
|
|
|
113
114
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
114
115
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
115
116
|
|
|
117
|
+
|
|
118
|
+
## [0.8.7] - 2025-08-11
|
|
119
|
+
- Make chat service openai compatible
|
|
120
|
+
- Fix some bugs
|
|
121
|
+
- Make OpenAIMessageBuilder more congruent to MessageBuilder
|
|
122
|
+
|
|
116
123
|
## [0.8.6] - 2025-08-11
|
|
117
124
|
- Add GPT-5, GPT-5_MINI, GPT-5_NANO, GPT-5_CHAT to supported models list
|
|
118
125
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "unique_toolkit"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.7"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = [
|
|
6
6
|
"Martin Fadler <martin.fadler@unique.ch>",
|
|
@@ -23,12 +23,7 @@ tiktoken = "^0.7.0"
|
|
|
23
23
|
unique-sdk = "^0.10.0"
|
|
24
24
|
pydantic-settings = "^2.10.1"
|
|
25
25
|
sseclient = "^0.0.27"
|
|
26
|
-
|
|
27
|
-
[tool.poetry.group.openai]
|
|
28
|
-
optional = true
|
|
29
|
-
|
|
30
|
-
[tool.poetry.group.openai.dependencies]
|
|
31
|
-
openai = "^1.97.0"
|
|
26
|
+
openai = "^1.99.9"
|
|
32
27
|
|
|
33
28
|
[tool.poetry.group.langchain]
|
|
34
29
|
optional = true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import re
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
import unique_sdk
|
|
6
6
|
from typing_extensions import deprecated
|
|
@@ -22,7 +22,10 @@ from unique_toolkit.language_model.constants import (
|
|
|
22
22
|
DEFAULT_COMPLETE_TEMPERATURE,
|
|
23
23
|
DEFAULT_COMPLETE_TIMEOUT,
|
|
24
24
|
)
|
|
25
|
-
from unique_toolkit.language_model.functions import
|
|
25
|
+
from unique_toolkit.language_model.functions import (
|
|
26
|
+
ChatCompletionMessageParam,
|
|
27
|
+
_prepare_all_completions_params_util,
|
|
28
|
+
)
|
|
26
29
|
from unique_toolkit.language_model.infos import LanguageModelName
|
|
27
30
|
from unique_toolkit.language_model.schemas import (
|
|
28
31
|
LanguageModelMessages,
|
|
@@ -49,8 +52,7 @@ def modify_message(
|
|
|
49
52
|
message_id: str | None = None,
|
|
50
53
|
set_completed_at: bool = False,
|
|
51
54
|
) -> ChatMessage:
|
|
52
|
-
"""
|
|
53
|
-
Modifies a chat message synchronously.
|
|
55
|
+
"""Modifies a chat message synchronously.
|
|
54
56
|
|
|
55
57
|
Args:
|
|
56
58
|
user_id (str): The user ID.
|
|
@@ -72,6 +74,7 @@ def modify_message(
|
|
|
72
74
|
|
|
73
75
|
Raises:
|
|
74
76
|
Exception: If the modification fails.
|
|
77
|
+
|
|
75
78
|
"""
|
|
76
79
|
try:
|
|
77
80
|
params = _construct_message_modify_params(
|
|
@@ -111,8 +114,7 @@ async def modify_message_async(
|
|
|
111
114
|
message_id: str | None = None,
|
|
112
115
|
set_completed_at: bool = False,
|
|
113
116
|
) -> ChatMessage:
|
|
114
|
-
"""
|
|
115
|
-
Modifies a chat message asynchronously.
|
|
117
|
+
"""Modifies a chat message asynchronously.
|
|
116
118
|
|
|
117
119
|
Args:
|
|
118
120
|
user_id (str): The user ID.
|
|
@@ -134,6 +136,7 @@ async def modify_message_async(
|
|
|
134
136
|
|
|
135
137
|
Raises:
|
|
136
138
|
Exception: If the modification fails.
|
|
139
|
+
|
|
137
140
|
"""
|
|
138
141
|
try:
|
|
139
142
|
params = _construct_message_modify_params(
|
|
@@ -158,7 +161,7 @@ async def modify_message_async(
|
|
|
158
161
|
raise e
|
|
159
162
|
|
|
160
163
|
|
|
161
|
-
def map_references(references:
|
|
164
|
+
def map_references(references: list[ContentReference]) -> list[dict[str, Any]]:
|
|
162
165
|
return [
|
|
163
166
|
{
|
|
164
167
|
"name": ref.name,
|
|
@@ -185,7 +188,7 @@ def _construct_message_modify_params(
|
|
|
185
188
|
debug_info: dict | None = None,
|
|
186
189
|
message_id: str | None = None,
|
|
187
190
|
set_completed_at: bool = False,
|
|
188
|
-
) ->
|
|
191
|
+
) -> dict[str, Any]:
|
|
189
192
|
completed_at_datetime = None
|
|
190
193
|
|
|
191
194
|
if message_id:
|
|
@@ -228,8 +231,7 @@ def create_message(
|
|
|
228
231
|
debug_info: dict | None = None,
|
|
229
232
|
set_completed_at: bool | None = False,
|
|
230
233
|
):
|
|
231
|
-
"""
|
|
232
|
-
Creates a message in the chat session synchronously.
|
|
234
|
+
"""Creates a message in the chat session synchronously.
|
|
233
235
|
|
|
234
236
|
Args:
|
|
235
237
|
user_id (str): The user ID.
|
|
@@ -248,6 +250,7 @@ def create_message(
|
|
|
248
250
|
|
|
249
251
|
Raises:
|
|
250
252
|
Exception: If the creation fails.
|
|
253
|
+
|
|
251
254
|
"""
|
|
252
255
|
if original_content is None:
|
|
253
256
|
original_content = content
|
|
@@ -285,8 +288,7 @@ async def create_message_async(
|
|
|
285
288
|
debug_info: dict | None = None,
|
|
286
289
|
set_completed_at: bool | None = False,
|
|
287
290
|
):
|
|
288
|
-
"""
|
|
289
|
-
Creates a message in the chat session synchronously.
|
|
291
|
+
"""Creates a message in the chat session synchronously.
|
|
290
292
|
|
|
291
293
|
Args:
|
|
292
294
|
user_id (str): The user ID.
|
|
@@ -305,6 +307,7 @@ async def create_message_async(
|
|
|
305
307
|
|
|
306
308
|
Raises:
|
|
307
309
|
Exception: If the creation fails.
|
|
310
|
+
|
|
308
311
|
"""
|
|
309
312
|
if original_content is None:
|
|
310
313
|
original_content = content
|
|
@@ -341,7 +344,7 @@ def _construct_message_create_params(
|
|
|
341
344
|
references: list[ContentReference] | None = None,
|
|
342
345
|
debug_info: dict | None = None,
|
|
343
346
|
set_completed_at: bool | None = False,
|
|
344
|
-
) ->
|
|
347
|
+
) -> dict[str, Any]:
|
|
345
348
|
if original_content is None:
|
|
346
349
|
original_content = content
|
|
347
350
|
|
|
@@ -354,7 +357,7 @@ def _construct_message_create_params(
|
|
|
354
357
|
"text": content,
|
|
355
358
|
"originalText": original_content,
|
|
356
359
|
"references": map_references(references) if references else [],
|
|
357
|
-
"debugInfo": debug_info,
|
|
360
|
+
"debugInfo": debug_info or {},
|
|
358
361
|
"completedAt": _time_utils.get_datetime_now() if set_completed_at else None,
|
|
359
362
|
}
|
|
360
363
|
|
|
@@ -363,7 +366,7 @@ def get_selection_from_history(
|
|
|
363
366
|
full_history: list[ChatMessage],
|
|
364
367
|
max_tokens: int,
|
|
365
368
|
max_messages=DEFAULT_MAX_MESSAGES,
|
|
366
|
-
) ->
|
|
369
|
+
) -> list[ChatMessage]:
|
|
367
370
|
messages = full_history[-max_messages:]
|
|
368
371
|
filtered_messages = [m for m in messages if m.content]
|
|
369
372
|
mapped_messages = []
|
|
@@ -383,14 +386,14 @@ def get_selection_from_history(
|
|
|
383
386
|
)
|
|
384
387
|
|
|
385
388
|
|
|
386
|
-
def map_to_chat_messages(messages: list[dict]) ->
|
|
389
|
+
def map_to_chat_messages(messages: list[dict]) -> list[ChatMessage]:
|
|
387
390
|
return [ChatMessage(**msg) for msg in messages]
|
|
388
391
|
|
|
389
392
|
|
|
390
393
|
def pick_messages_in_reverse_for_token_window(
|
|
391
394
|
messages: list[ChatMessage],
|
|
392
395
|
limit: int,
|
|
393
|
-
) ->
|
|
396
|
+
) -> list[ChatMessage]:
|
|
394
397
|
if len(messages) < 1 or limit < 1:
|
|
395
398
|
return []
|
|
396
399
|
|
|
@@ -398,7 +401,7 @@ def pick_messages_in_reverse_for_token_window(
|
|
|
398
401
|
token_count = count_tokens(messages[last_index].content or "")
|
|
399
402
|
while token_count > limit:
|
|
400
403
|
logger.debug(
|
|
401
|
-
f"Limit too low for the initial message. Last message TokenCount {token_count} available tokens {limit} - cutting message in half until it fits"
|
|
404
|
+
f"Limit too low for the initial message. Last message TokenCount {token_count} available tokens {limit} - cutting message in half until it fits",
|
|
402
405
|
)
|
|
403
406
|
content = messages[last_index].content or ""
|
|
404
407
|
messages[last_index].content = content[: len(content) // 2] + "..."
|
|
@@ -406,7 +409,7 @@ def pick_messages_in_reverse_for_token_window(
|
|
|
406
409
|
|
|
407
410
|
while token_count <= limit and last_index > 0:
|
|
408
411
|
token_count = count_tokens(
|
|
409
|
-
"".join([msg.content or "" for msg in messages[:last_index]])
|
|
412
|
+
"".join([msg.content or "" for msg in messages[:last_index]]),
|
|
410
413
|
)
|
|
411
414
|
if token_count <= limit:
|
|
412
415
|
last_index -= 1
|
|
@@ -416,7 +419,9 @@ def pick_messages_in_reverse_for_token_window(
|
|
|
416
419
|
|
|
417
420
|
|
|
418
421
|
def list_messages(
|
|
419
|
-
event_user_id
|
|
422
|
+
event_user_id: str,
|
|
423
|
+
event_company_id: str,
|
|
424
|
+
chat_id: str,
|
|
420
425
|
) -> ListObject[unique_sdk.Message]:
|
|
421
426
|
try:
|
|
422
427
|
messages = unique_sdk.Message.list(
|
|
@@ -431,7 +436,9 @@ def list_messages(
|
|
|
431
436
|
|
|
432
437
|
|
|
433
438
|
async def list_messages_async(
|
|
434
|
-
event_user_id: str,
|
|
439
|
+
event_user_id: str,
|
|
440
|
+
event_company_id: str,
|
|
441
|
+
chat_id: str,
|
|
435
442
|
) -> ListObject[unique_sdk.Message]:
|
|
436
443
|
try:
|
|
437
444
|
messages = await unique_sdk.Message.list_async(
|
|
@@ -446,8 +453,10 @@ async def list_messages_async(
|
|
|
446
453
|
|
|
447
454
|
|
|
448
455
|
def get_full_history(
|
|
449
|
-
event_user_id
|
|
450
|
-
|
|
456
|
+
event_user_id: str,
|
|
457
|
+
event_company_id: str,
|
|
458
|
+
event_payload_chat_id: str,
|
|
459
|
+
) -> list[ChatMessage]:
|
|
451
460
|
messages = list_messages(event_user_id, event_company_id, event_payload_chat_id)
|
|
452
461
|
messages = filter_valid_messages(messages)
|
|
453
462
|
|
|
@@ -455,10 +464,14 @@ def get_full_history(
|
|
|
455
464
|
|
|
456
465
|
|
|
457
466
|
async def get_full_history_async(
|
|
458
|
-
event_user_id
|
|
459
|
-
|
|
467
|
+
event_user_id: str,
|
|
468
|
+
event_company_id: str,
|
|
469
|
+
event_payload_chat_id: str,
|
|
470
|
+
) -> list[ChatMessage]:
|
|
460
471
|
messages = await list_messages_async(
|
|
461
|
-
event_user_id,
|
|
472
|
+
event_user_id,
|
|
473
|
+
event_company_id,
|
|
474
|
+
event_payload_chat_id,
|
|
462
475
|
)
|
|
463
476
|
messages = filter_valid_messages(messages)
|
|
464
477
|
|
|
@@ -467,19 +480,16 @@ async def get_full_history_async(
|
|
|
467
480
|
|
|
468
481
|
def filter_valid_messages(
|
|
469
482
|
messages: ListObject[unique_sdk.Message],
|
|
470
|
-
) ->
|
|
483
|
+
) -> list[dict[str, Any]]:
|
|
471
484
|
SYSTEM_MESSAGE_PREFIX = "[SYSTEM] "
|
|
472
485
|
|
|
473
486
|
# Remove the last two messages
|
|
474
487
|
messages = messages["data"][:-2] # type: ignore
|
|
475
488
|
filtered_messages = []
|
|
476
489
|
for message in messages:
|
|
477
|
-
if message["text"] is None:
|
|
478
|
-
continue
|
|
479
|
-
elif SYSTEM_MESSAGE_PREFIX in message["text"]:
|
|
490
|
+
if message["text"] is None or SYSTEM_MESSAGE_PREFIX in message["text"]:
|
|
480
491
|
continue
|
|
481
|
-
|
|
482
|
-
filtered_messages.append(message)
|
|
492
|
+
filtered_messages.append(message)
|
|
483
493
|
|
|
484
494
|
return filtered_messages
|
|
485
495
|
|
|
@@ -495,8 +505,7 @@ def create_message_assessment(
|
|
|
495
505
|
label: ChatMessageAssessmentLabel | None = None,
|
|
496
506
|
is_visible: bool = True,
|
|
497
507
|
) -> ChatMessageAssessment:
|
|
498
|
-
"""
|
|
499
|
-
Creates a message assessment for an assistant message synchronously.
|
|
508
|
+
"""Creates a message assessment for an assistant message synchronously.
|
|
500
509
|
|
|
501
510
|
Args:
|
|
502
511
|
user_id (str): The user ID.
|
|
@@ -514,6 +523,7 @@ def create_message_assessment(
|
|
|
514
523
|
|
|
515
524
|
Raises:
|
|
516
525
|
Exception: If the creation fails
|
|
526
|
+
|
|
517
527
|
"""
|
|
518
528
|
try:
|
|
519
529
|
assessment = unique_sdk.MessageAssessment.create(
|
|
@@ -544,8 +554,7 @@ async def create_message_assessment_async(
|
|
|
544
554
|
label: ChatMessageAssessmentLabel | None = None,
|
|
545
555
|
is_visible: bool = True,
|
|
546
556
|
) -> ChatMessageAssessment:
|
|
547
|
-
"""
|
|
548
|
-
Creates a message assessment for an assistant message asynchronously.
|
|
557
|
+
"""Creates a message assessment for an assistant message asynchronously.
|
|
549
558
|
|
|
550
559
|
Args:
|
|
551
560
|
user_id (str): The user ID.
|
|
@@ -563,6 +572,7 @@ async def create_message_assessment_async(
|
|
|
563
572
|
|
|
564
573
|
Raises:
|
|
565
574
|
Exception: If the creation fails
|
|
575
|
+
|
|
566
576
|
"""
|
|
567
577
|
try:
|
|
568
578
|
assessment = await unique_sdk.MessageAssessment.create_async(
|
|
@@ -592,8 +602,7 @@ def modify_message_assessment(
|
|
|
592
602
|
explanation: str | None = None,
|
|
593
603
|
label: ChatMessageAssessmentLabel | None = None,
|
|
594
604
|
) -> ChatMessageAssessment:
|
|
595
|
-
"""
|
|
596
|
-
Modifies a message assessment for an assistant message synchronously.
|
|
605
|
+
"""Modifies a message assessment for an assistant message synchronously.
|
|
597
606
|
|
|
598
607
|
Args:
|
|
599
608
|
user_id (str): The user ID.
|
|
@@ -610,6 +619,7 @@ def modify_message_assessment(
|
|
|
610
619
|
|
|
611
620
|
Raises:
|
|
612
621
|
Exception: If the modification fails
|
|
622
|
+
|
|
613
623
|
"""
|
|
614
624
|
try:
|
|
615
625
|
assessment = unique_sdk.MessageAssessment.modify(
|
|
@@ -638,8 +648,7 @@ async def modify_message_assessment_async(
|
|
|
638
648
|
explanation: str | None = None,
|
|
639
649
|
label: ChatMessageAssessmentLabel | None = None,
|
|
640
650
|
) -> ChatMessageAssessment:
|
|
641
|
-
"""
|
|
642
|
-
Modifies a message assessment for an assistant message asynchronously.
|
|
651
|
+
"""Modifies a message assessment for an assistant message asynchronously.
|
|
643
652
|
|
|
644
653
|
Args:
|
|
645
654
|
user_id (str): The user ID.
|
|
@@ -656,6 +665,7 @@ async def modify_message_assessment_async(
|
|
|
656
665
|
|
|
657
666
|
Raises:
|
|
658
667
|
Exception: If the modification fails
|
|
668
|
+
|
|
659
669
|
"""
|
|
660
670
|
try:
|
|
661
671
|
assessment = await unique_sdk.MessageAssessment.modify_async(
|
|
@@ -682,7 +692,7 @@ def stream_complete_to_chat(
|
|
|
682
692
|
user_message_id: str,
|
|
683
693
|
chat_id: str,
|
|
684
694
|
assistant_id: str,
|
|
685
|
-
messages: LanguageModelMessages,
|
|
695
|
+
messages: LanguageModelMessages | list[ChatCompletionMessageParam],
|
|
686
696
|
model_name: LanguageModelName | str,
|
|
687
697
|
content_chunks: list[ContentChunk] | None = None,
|
|
688
698
|
debug_info: dict = {},
|
|
@@ -718,18 +728,17 @@ def stream_complete_with_references(
|
|
|
718
728
|
user_message_id: str,
|
|
719
729
|
chat_id: str,
|
|
720
730
|
assistant_id: str,
|
|
721
|
-
messages: LanguageModelMessages,
|
|
731
|
+
messages: LanguageModelMessages | list[ChatCompletionMessageParam],
|
|
722
732
|
model_name: LanguageModelName | str,
|
|
723
733
|
content_chunks: list[ContentChunk] | None = None,
|
|
724
|
-
debug_info: dict =
|
|
734
|
+
debug_info: dict | None = None,
|
|
725
735
|
temperature: float = DEFAULT_COMPLETE_TEMPERATURE,
|
|
726
736
|
timeout: int = DEFAULT_COMPLETE_TIMEOUT,
|
|
727
737
|
tools: list[LanguageModelTool | LanguageModelToolDescription] | None = None,
|
|
728
738
|
start_text: str | None = None,
|
|
729
739
|
other_options: dict | None = None,
|
|
730
740
|
) -> LanguageModelStreamResponse:
|
|
731
|
-
"""
|
|
732
|
-
Streams a completion synchronously.
|
|
741
|
+
"""Streams a completion synchronously.
|
|
733
742
|
|
|
734
743
|
Args:
|
|
735
744
|
company_id (str): The company ID associated with the request.
|
|
@@ -750,14 +759,17 @@ def stream_complete_with_references(
|
|
|
750
759
|
|
|
751
760
|
Returns:
|
|
752
761
|
LanguageModelStreamResponse: The streaming response object.
|
|
762
|
+
|
|
753
763
|
"""
|
|
754
|
-
options, model, messages_dict, search_context =
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
764
|
+
options, model, messages_dict, search_context = (
|
|
765
|
+
_prepare_all_completions_params_util(
|
|
766
|
+
messages=messages,
|
|
767
|
+
model_name=model_name,
|
|
768
|
+
temperature=temperature,
|
|
769
|
+
tools=tools,
|
|
770
|
+
other_options=other_options,
|
|
771
|
+
content_chunks=content_chunks or [],
|
|
772
|
+
)
|
|
761
773
|
)
|
|
762
774
|
|
|
763
775
|
try:
|
|
@@ -766,16 +778,13 @@ def stream_complete_with_references(
|
|
|
766
778
|
company_id=company_id,
|
|
767
779
|
assistantMessageId=assistant_message_id,
|
|
768
780
|
userMessageId=user_message_id,
|
|
769
|
-
messages=
|
|
770
|
-
list[unique_sdk.Integrated.ChatCompletionRequestMessage],
|
|
771
|
-
messages_dict,
|
|
772
|
-
),
|
|
781
|
+
messages=messages_dict,
|
|
773
782
|
chatId=chat_id,
|
|
774
783
|
searchContext=search_context,
|
|
775
784
|
model=model,
|
|
776
785
|
timeout=timeout,
|
|
777
786
|
assistantId=assistant_id,
|
|
778
|
-
debugInfo=debug_info,
|
|
787
|
+
debugInfo=debug_info or {},
|
|
779
788
|
options=options, # type: ignore
|
|
780
789
|
startText=start_text,
|
|
781
790
|
)
|
|
@@ -793,7 +802,7 @@ async def stream_complete_to_chat_async(
|
|
|
793
802
|
user_message_id: str,
|
|
794
803
|
chat_id: str,
|
|
795
804
|
assistant_id: str,
|
|
796
|
-
messages: LanguageModelMessages,
|
|
805
|
+
messages: LanguageModelMessages | list[ChatCompletionMessageParam],
|
|
797
806
|
model_name: LanguageModelName | str,
|
|
798
807
|
content_chunks: list[ContentChunk] | None = None,
|
|
799
808
|
debug_info: dict = {},
|
|
@@ -829,31 +838,33 @@ async def stream_complete_with_references_async(
|
|
|
829
838
|
user_message_id: str,
|
|
830
839
|
chat_id: str,
|
|
831
840
|
assistant_id: str,
|
|
832
|
-
messages: LanguageModelMessages,
|
|
841
|
+
messages: LanguageModelMessages | list[ChatCompletionMessageParam],
|
|
833
842
|
model_name: LanguageModelName | str,
|
|
834
843
|
content_chunks: list[ContentChunk] | None = None,
|
|
835
|
-
debug_info: dict =
|
|
844
|
+
debug_info: dict | None = None,
|
|
836
845
|
temperature: float = DEFAULT_COMPLETE_TEMPERATURE,
|
|
837
846
|
timeout: int = DEFAULT_COMPLETE_TIMEOUT,
|
|
838
847
|
tools: list[LanguageModelTool | LanguageModelToolDescription] | None = None,
|
|
839
848
|
start_text: str | None = None,
|
|
840
849
|
other_options: dict | None = None,
|
|
841
850
|
) -> LanguageModelStreamResponse:
|
|
842
|
-
"""
|
|
843
|
-
Streams a completion asynchronously.
|
|
851
|
+
"""Streams a completion asynchronously.
|
|
844
852
|
|
|
845
853
|
Args: [same as stream_complete]
|
|
846
854
|
|
|
847
855
|
Returns:
|
|
848
856
|
LanguageModelStreamResponse: The streaming response object.
|
|
857
|
+
|
|
849
858
|
"""
|
|
850
|
-
options, model, messages_dict, search_context =
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
859
|
+
options, model, messages_dict, search_context = (
|
|
860
|
+
_prepare_all_completions_params_util(
|
|
861
|
+
messages=messages,
|
|
862
|
+
model_name=model_name,
|
|
863
|
+
temperature=temperature,
|
|
864
|
+
tools=tools,
|
|
865
|
+
other_options=other_options,
|
|
866
|
+
content_chunks=content_chunks or [],
|
|
867
|
+
)
|
|
857
868
|
)
|
|
858
869
|
|
|
859
870
|
try:
|
|
@@ -862,16 +873,13 @@ async def stream_complete_with_references_async(
|
|
|
862
873
|
company_id=company_id,
|
|
863
874
|
assistantMessageId=assistant_message_id,
|
|
864
875
|
userMessageId=user_message_id,
|
|
865
|
-
messages=
|
|
866
|
-
list[unique_sdk.Integrated.ChatCompletionRequestMessage],
|
|
867
|
-
messages_dict,
|
|
868
|
-
),
|
|
876
|
+
messages=messages_dict,
|
|
869
877
|
chatId=chat_id,
|
|
870
878
|
searchContext=search_context,
|
|
871
879
|
model=model,
|
|
872
880
|
timeout=timeout,
|
|
873
881
|
assistantId=assistant_id,
|
|
874
|
-
debugInfo=debug_info,
|
|
882
|
+
debugInfo=debug_info or {},
|
|
875
883
|
options=options, # type: ignore
|
|
876
884
|
startText=start_text,
|
|
877
885
|
)
|