unique_toolkit 0.8.19__tar.gz → 0.8.21__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.19 → unique_toolkit-0.8.21}/CHANGELOG.md +8 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/PKG-INFO +9 -1
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/pyproject.toml +1 -1
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/content/service.py +73 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/functions.py +4 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/service.py +3 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/schemas.py +1 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/tool.py +1 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/tool_manager.py +21 -10
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/LICENSE +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/README.md +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/config.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/context_relevancy/prompts.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/context_relevancy/schema.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/context_relevancy/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/evaluation_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/exception.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/prompts.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/output_parser.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/tests/test_output_parser.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/config.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/context_relevancy/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/context_relevancy/prompts.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/context_relevancy/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/context_relevancy/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/exception.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/prompts.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/output_parser.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/history_manager/history_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/history_manager/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/config.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/factory.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/utils/execution/execution.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
|
@@ -5,6 +5,14 @@ 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
|
+
## [0.8.21] - 2025-08-26
|
|
9
|
+
- Fixed old (not used) function "create_async" in language_model.functions : The function always returns "Unauthorized" --> Added "user_id" argument to fix this.
|
|
10
|
+
|
|
11
|
+
## [0.8.20] - 2025-08-24
|
|
12
|
+
- Fixed forced-tool-calls
|
|
13
|
+
|
|
14
|
+
## [0.8.20] - 2025-08-05
|
|
15
|
+
- Bump SDK version to support the latest features.
|
|
8
16
|
|
|
9
17
|
## [0.8.19] - 2025-08-24
|
|
10
18
|
- Enforce usage of ruff using pipeline
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_toolkit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.21
|
|
4
4
|
Summary:
|
|
5
5
|
License: Proprietary
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -114,6 +114,14 @@ All notable changes to this project will be documented in this file.
|
|
|
114
114
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
115
115
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
116
116
|
|
|
117
|
+
## [0.8.21] - 2025-08-26
|
|
118
|
+
- Fixed old (not used) function "create_async" in language_model.functions : The function always returns "Unauthorized" --> Added "user_id" argument to fix this.
|
|
119
|
+
|
|
120
|
+
## [0.8.20] - 2025-08-24
|
|
121
|
+
- Fixed forced-tool-calls
|
|
122
|
+
|
|
123
|
+
## [0.8.20] - 2025-08-05
|
|
124
|
+
- Bump SDK version to support the latest features.
|
|
117
125
|
|
|
118
126
|
## [0.8.19] - 2025-08-24
|
|
119
127
|
- Enforce usage of ruff using pipeline
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
import mimetypes
|
|
3
|
+
from enum import StrEnum
|
|
2
4
|
from pathlib import Path
|
|
3
5
|
from typing import Any, overload
|
|
4
6
|
|
|
@@ -33,6 +35,29 @@ from unique_toolkit.content.schemas import (
|
|
|
33
35
|
logger = logging.getLogger(f"toolkit.{DOMAIN_NAME}.{__name__}")
|
|
34
36
|
|
|
35
37
|
|
|
38
|
+
class FileMimeType(StrEnum):
|
|
39
|
+
PDF = "application/pdf"
|
|
40
|
+
DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
41
|
+
DOC = "application/msword"
|
|
42
|
+
XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
43
|
+
XLS = "application/vnd.ms-excel"
|
|
44
|
+
PPTX = "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
45
|
+
CSV = "text/csv"
|
|
46
|
+
HTML = "text/html"
|
|
47
|
+
MD = "text/markdown"
|
|
48
|
+
TXT = "text/plain"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class ImageMimeType(StrEnum):
|
|
52
|
+
JPEG = "image/jpeg"
|
|
53
|
+
PNG = "image/png"
|
|
54
|
+
GIF = "image/gif"
|
|
55
|
+
BMP = "image/bmp"
|
|
56
|
+
WEBP = "image/webp"
|
|
57
|
+
TIFF = "image/tiff"
|
|
58
|
+
SVG = "image/svg+xml"
|
|
59
|
+
|
|
60
|
+
|
|
36
61
|
class ContentService:
|
|
37
62
|
"""
|
|
38
63
|
Provides methods for searching, downloading and uploading content in the knowledge base.
|
|
@@ -622,3 +647,51 @@ class ContentService:
|
|
|
622
647
|
content_id=content_id,
|
|
623
648
|
chat_id=chat_id,
|
|
624
649
|
)
|
|
650
|
+
|
|
651
|
+
def get_documents_uploaded_to_chat(self) -> list[Content]:
|
|
652
|
+
chat_contents = self.search_contents(
|
|
653
|
+
where={
|
|
654
|
+
"ownerId": {
|
|
655
|
+
"equals": self._chat_id,
|
|
656
|
+
},
|
|
657
|
+
},
|
|
658
|
+
)
|
|
659
|
+
|
|
660
|
+
content: list[Content] = []
|
|
661
|
+
for c in chat_contents:
|
|
662
|
+
if self.is_file_content(c.key):
|
|
663
|
+
content.append(c)
|
|
664
|
+
|
|
665
|
+
return content
|
|
666
|
+
|
|
667
|
+
def get_images_uploaded_to_chat(self) -> list[Content]:
|
|
668
|
+
chat_contents = self.search_contents(
|
|
669
|
+
where={
|
|
670
|
+
"ownerId": {
|
|
671
|
+
"equals": self._chat_id,
|
|
672
|
+
},
|
|
673
|
+
},
|
|
674
|
+
)
|
|
675
|
+
|
|
676
|
+
content: list[Content] = []
|
|
677
|
+
for c in chat_contents:
|
|
678
|
+
if self.is_image_content(c.key):
|
|
679
|
+
content.append(c)
|
|
680
|
+
|
|
681
|
+
return content
|
|
682
|
+
|
|
683
|
+
def is_file_content(self, filename: str) -> bool:
|
|
684
|
+
mimetype, _ = mimetypes.guess_type(filename)
|
|
685
|
+
|
|
686
|
+
if not mimetype:
|
|
687
|
+
return False
|
|
688
|
+
|
|
689
|
+
return mimetype in FileMimeType.__members__.values()
|
|
690
|
+
|
|
691
|
+
def is_image_content(self, filename: str) -> bool:
|
|
692
|
+
mimetype, _ = mimetypes.guess_type(filename)
|
|
693
|
+
|
|
694
|
+
if not mimetype:
|
|
695
|
+
return False
|
|
696
|
+
|
|
697
|
+
return mimetype in ImageMimeType.__members__.values()
|
|
@@ -94,6 +94,7 @@ def complete(
|
|
|
94
94
|
|
|
95
95
|
async def complete_async(
|
|
96
96
|
company_id: str,
|
|
97
|
+
user_id: str,
|
|
97
98
|
messages: LanguageModelMessages | list[ChatCompletionMessageParam],
|
|
98
99
|
model_name: LanguageModelName | str,
|
|
99
100
|
temperature: float = DEFAULT_COMPLETE_TEMPERATURE,
|
|
@@ -142,6 +143,7 @@ async def complete_async(
|
|
|
142
143
|
try:
|
|
143
144
|
response = await unique_sdk.ChatCompletion.create_async(
|
|
144
145
|
company_id=company_id,
|
|
146
|
+
user_id=user_id,
|
|
145
147
|
model=model,
|
|
146
148
|
messages=cast(
|
|
147
149
|
"list[unique_sdk.Integrated.ChatCompletionRequestMessage]",
|
|
@@ -419,6 +421,7 @@ def complete_with_references(
|
|
|
419
421
|
|
|
420
422
|
async def complete_with_references_async(
|
|
421
423
|
company_id: str,
|
|
424
|
+
user_id: str,
|
|
422
425
|
messages: LanguageModelMessages,
|
|
423
426
|
model_name: LanguageModelName | str,
|
|
424
427
|
content_chunks: list[ContentChunk] | None = None,
|
|
@@ -432,6 +435,7 @@ async def complete_with_references_async(
|
|
|
432
435
|
# Use toolkit language model functions for chat completion
|
|
433
436
|
response = await complete_async(
|
|
434
437
|
company_id=company_id,
|
|
438
|
+
user_id=user_id,
|
|
435
439
|
model_name=model_name,
|
|
436
440
|
messages=messages,
|
|
437
441
|
temperature=temperature,
|
|
@@ -261,6 +261,7 @@ class LanguageModelService:
|
|
|
261
261
|
|
|
262
262
|
return await complete_async(
|
|
263
263
|
company_id=self._company_id,
|
|
264
|
+
user_id=self._user_id,
|
|
264
265
|
messages=messages,
|
|
265
266
|
model_name=model_name,
|
|
266
267
|
temperature=temperature,
|
|
@@ -276,6 +277,7 @@ class LanguageModelService:
|
|
|
276
277
|
async def complete_async_util(
|
|
277
278
|
cls,
|
|
278
279
|
company_id: str,
|
|
280
|
+
user_id: str,
|
|
279
281
|
messages: LanguageModelMessages,
|
|
280
282
|
model_name: LanguageModelName | str,
|
|
281
283
|
temperature: float = DEFAULT_COMPLETE_TEMPERATURE,
|
|
@@ -291,6 +293,7 @@ class LanguageModelService:
|
|
|
291
293
|
|
|
292
294
|
return await complete_async(
|
|
293
295
|
company_id=company_id,
|
|
296
|
+
user_id=user_id,
|
|
294
297
|
messages=messages,
|
|
295
298
|
model_name=model_name,
|
|
296
299
|
temperature=temperature,
|
|
@@ -109,6 +109,7 @@ class Tool(ABC, Generic[ConfigType]):
|
|
|
109
109
|
name=self.name,
|
|
110
110
|
display_name=self.display_name(),
|
|
111
111
|
tool_description=self.tool_description().description,
|
|
112
|
+
tool_system_prompt=self.tool_description_for_system_prompt(),
|
|
112
113
|
tool_format_information_for_system_prompt=self.tool_format_information_for_system_prompt(),
|
|
113
114
|
input_model=self.tool_description_as_json(),
|
|
114
115
|
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
from logging import Logger, getLogger
|
|
3
|
+
from typing import Any
|
|
3
4
|
|
|
4
5
|
from pydantic import BaseModel, Field
|
|
5
6
|
|
|
@@ -18,13 +19,6 @@ from unique_toolkit.tools.tool_progress_reporter import ToolProgressReporter
|
|
|
18
19
|
from unique_toolkit.tools.utils.execution.execution import Result, SafeTaskExecutor
|
|
19
20
|
|
|
20
21
|
|
|
21
|
-
class ForcedToolOption:
|
|
22
|
-
type: str = "function"
|
|
23
|
-
|
|
24
|
-
def __init__(self, name: str):
|
|
25
|
-
self.name = name
|
|
26
|
-
|
|
27
|
-
|
|
28
22
|
class ToolManagerConfig(BaseModel):
|
|
29
23
|
tools: list[ToolBuildConfig] = Field(
|
|
30
24
|
default=[],
|
|
@@ -122,13 +116,20 @@ class ToolManager:
|
|
|
122
116
|
return tool
|
|
123
117
|
return None
|
|
124
118
|
|
|
125
|
-
def get_forced_tools(self) -> list[
|
|
119
|
+
def get_forced_tools(self) -> list[dict[str, Any]]:
|
|
126
120
|
return [
|
|
127
|
-
|
|
121
|
+
self._convert_to_forced_tool(t.name)
|
|
128
122
|
for t in self._tools
|
|
129
123
|
if t.name in self._tool_choices
|
|
130
124
|
]
|
|
131
125
|
|
|
126
|
+
def add_forced_tool(self, name):
|
|
127
|
+
tool = self.get_tool_by_name(name)
|
|
128
|
+
if not tool:
|
|
129
|
+
raise ValueError(f"Tool {name} not found")
|
|
130
|
+
self._tools.append(tool)
|
|
131
|
+
self._tool_choices.append(tool.name)
|
|
132
|
+
|
|
132
133
|
def get_tool_definitions(
|
|
133
134
|
self,
|
|
134
135
|
) -> list[LanguageModelTool | LanguageModelToolDescription]:
|
|
@@ -198,7 +199,9 @@ class ToolManager:
|
|
|
198
199
|
) -> ToolCallResponse:
|
|
199
200
|
self._logger.info(f"Processing tool call: {tool_call.name}")
|
|
200
201
|
|
|
201
|
-
tool_instance = self.get_tool_by_name(
|
|
202
|
+
tool_instance = self.get_tool_by_name(
|
|
203
|
+
tool_call.name
|
|
204
|
+
) # we need to copy this as it will have problematic interference on multi calls.
|
|
202
205
|
|
|
203
206
|
if tool_instance:
|
|
204
207
|
# Execute the tool
|
|
@@ -254,3 +257,11 @@ class ToolManager:
|
|
|
254
257
|
f"Filtered out {len(tool_calls) - len(unique_tool_calls)} duplicate tool calls."
|
|
255
258
|
)
|
|
256
259
|
return unique_tool_calls
|
|
260
|
+
|
|
261
|
+
from typing import Any
|
|
262
|
+
|
|
263
|
+
def _convert_to_forced_tool(self, tool_name: str) -> dict[str, Any]:
|
|
264
|
+
return {
|
|
265
|
+
"type": "function",
|
|
266
|
+
"function": {"name": tool_name},
|
|
267
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/token/image_token_counting.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/token/token_counting.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/_common/validate_required_values.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/performance/async_tasks.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/app/performance/async_wrapper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/context_relevancy/prompts.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/context_relevancy/schema.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/context_relevancy/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/prompts.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/hallucination/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evals/tests/test_output_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/context_relevancy/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/constants.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/prompts.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/service.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/evaluators/hallucination/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/framework_utilities/openai/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/history_manager/history_manager.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/history_manager/loop_token_reducer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/constants.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/short_term_memory/functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/thinking_manager/thinking_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/tool_progress_reporter.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/utils/execution/execution.py
RENAMED
|
File without changes
|
{unique_toolkit-0.8.19 → unique_toolkit-0.8.21}/unique_toolkit/tools/utils/source_handling/schema.py
RENAMED
|
File without changes
|
|
File without changes
|