unique_toolkit 0.8.10__tar.gz → 0.8.12__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.
Files changed (89) hide show
  1. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/CHANGELOG.md +8 -0
  2. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/PKG-INFO +9 -1
  3. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/pyproject.toml +1 -1
  4. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/schemas.py +21 -9
  5. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/service.py +2 -2
  6. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/content/service.py +15 -1
  7. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/embedding/service.py +11 -0
  8. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/framework_utilities/openai/message_builder.py +3 -0
  9. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/service.py +11 -0
  10. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/LICENSE +0 -0
  11. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/README.md +0 -0
  12. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/__init__.py +0 -0
  13. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/_common/exception.py +0 -0
  16. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/_common/validate_required_values.py +0 -0
  17. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/_common/validators.py +0 -0
  18. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/__init__.py +0 -0
  19. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/dev_util.py +0 -0
  20. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/init_logging.py +0 -0
  21. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/init_sdk.py +0 -0
  22. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/performance/async_tasks.py +0 -0
  23. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  24. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/schemas.py +0 -0
  25. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/unique_settings.py +0 -0
  26. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/app/verification.py +0 -0
  27. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/__init__.py +0 -0
  28. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/constants.py +0 -0
  29. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/functions.py +0 -0
  30. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/state.py +0 -0
  31. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/chat/utils.py +0 -0
  32. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/content/__init__.py +0 -0
  33. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/content/constants.py +0 -0
  34. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/content/functions.py +0 -0
  35. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/content/schemas.py +0 -0
  36. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/content/utils.py +0 -0
  37. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/embedding/__init__.py +0 -0
  38. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/embedding/constants.py +0 -0
  39. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/embedding/functions.py +0 -0
  40. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/embedding/schemas.py +0 -0
  41. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/embedding/utils.py +0 -0
  42. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/__init__.py +0 -0
  43. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/config.py +0 -0
  44. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/constants.py +0 -0
  45. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/context_relevancy/constants.py +0 -0
  46. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/context_relevancy/prompts.py +0 -0
  47. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/context_relevancy/service.py +0 -0
  48. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/context_relevancy/utils.py +0 -0
  49. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/exception.py +0 -0
  50. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/hallucination/constants.py +0 -0
  51. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/hallucination/prompts.py +0 -0
  52. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/hallucination/service.py +0 -0
  53. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/hallucination/utils.py +0 -0
  54. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/output_parser.py +0 -0
  55. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/evaluators/schemas.py +0 -0
  56. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  57. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  58. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  59. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/framework_utilities/utils.py +0 -0
  60. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/__init__.py +0 -0
  61. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/builder.py +0 -0
  62. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/constants.py +0 -0
  63. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/functions.py +0 -0
  64. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/infos.py +0 -0
  65. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/prompt.py +0 -0
  66. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/reference.py +0 -0
  67. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/schemas.py +0 -0
  68. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/language_model/utils.py +0 -0
  69. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/protocols/support.py +0 -0
  70. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/reference_manager/reference_manager.py +0 -0
  71. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/short_term_memory/__init__.py +0 -0
  72. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/short_term_memory/constants.py +0 -0
  73. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/short_term_memory/functions.py +0 -0
  74. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/short_term_memory/schemas.py +0 -0
  75. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/short_term_memory/service.py +0 -0
  76. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/smart_rules/__init__.py +0 -0
  77. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/smart_rules/compile.py +0 -0
  78. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/agent_chunks_handler.py +0 -0
  79. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/config.py +0 -0
  80. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/factory.py +0 -0
  81. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/schemas.py +0 -0
  82. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
  83. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/tool.py +0 -0
  84. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/tool_manager.py +0 -0
  85. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
  86. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/utils/execution/execution.py +0 -0
  87. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
  88. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
  89. {unique_toolkit-0.8.10 → unique_toolkit-0.8.12}/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.12] - 2025-08-18
9
+ - Fix no tool call respoonse in ChatMessage -> Open Ai messages translation
10
+ - Add simple append method to OpenAIMessageBuilder
11
+
12
+ ## [0.8.11] - 2025-08-15
13
+ - Fix no tool call respoonse in ChatMessage -> Open Ai messages translation
14
+ - Add simple append method to OpenAIMessageBuilder
15
+
8
16
  ## [0.8.10] - 2025-08-15
9
17
  - Add min and max temperature to `LanguageModelInfo`: temperature will be clamped to the min and max temperature
10
18
  - Add default options to `LanguageModelInfo`: These are used by default
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 0.8.10
3
+ Version: 0.8.12
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.12] - 2025-08-18
118
+ - Fix no tool call respoonse in ChatMessage -> Open Ai messages translation
119
+ - Add simple append method to OpenAIMessageBuilder
120
+
121
+ ## [0.8.11] - 2025-08-15
122
+ - Fix no tool call respoonse in ChatMessage -> Open Ai messages translation
123
+ - Add simple append method to OpenAIMessageBuilder
124
+
117
125
  ## [0.8.10] - 2025-08-15
118
126
  - Add min and max temperature to `LanguageModelInfo`: temperature will be clamped to the min and max temperature
119
127
  - Add default options to `LanguageModelInfo`: These are used by default
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "0.8.10"
3
+ version = "0.8.12"
4
4
  description = ""
5
5
  authors = [
6
6
  "Martin Fadler <martin.fadler@unique.ch>",
@@ -4,6 +4,7 @@ from enum import StrEnum
4
4
  from humps import camelize
5
5
  from openai.types.chat import (
6
6
  ChatCompletionAssistantMessageParam,
7
+ ChatCompletionMessageParam,
7
8
  ChatCompletionUserMessageParam,
8
9
  )
9
10
  from openai.types.chat.chat_completion_message_function_tool_call_param import (
@@ -96,7 +97,7 @@ class ChatMessage(BaseModel):
96
97
  raise ValueError("tool_call_ids is required when role is 'tool'")
97
98
  return self
98
99
 
99
- def to_openai_param(self):
100
+ def to_openai_param(self) -> ChatCompletionMessageParam:
100
101
  match self.role:
101
102
  case ChatMessageRole.USER:
102
103
  return ChatCompletionUserMessageParam(
@@ -105,14 +106,25 @@ class ChatMessage(BaseModel):
105
106
  )
106
107
 
107
108
  case ChatMessageRole.ASSISTANT:
108
- return ChatCompletionAssistantMessageParam(
109
- role="assistant",
110
- audio=None,
111
- content=self.content or "",
112
- function_call=None,
113
- refusal=None,
114
- tool_calls=[t.to_openai_param() for t in self.tool_calls or []],
115
- )
109
+ if self.tool_calls:
110
+ assistant_message = ChatCompletionAssistantMessageParam(
111
+ role="assistant",
112
+ audio=None,
113
+ content=self.content or "",
114
+ function_call=None,
115
+ refusal=None,
116
+ tool_calls=[t.to_openai_param() for t in self.tool_calls],
117
+ )
118
+ else:
119
+ assistant_message = ChatCompletionAssistantMessageParam(
120
+ role="assistant",
121
+ audio=None,
122
+ content=self.content or "",
123
+ function_call=None,
124
+ refusal=None,
125
+ )
126
+
127
+ return assistant_message
116
128
 
117
129
  case ChatMessageRole.TOOL:
118
130
  raise NotImplementedError
@@ -402,9 +402,9 @@ class ChatService:
402
402
  references: list[ContentReference] | None = None,
403
403
  debug_info: dict | None = None,
404
404
  message_id: str | None = None,
405
- set_completed_at: bool = False,
405
+ set_completed_at: bool | None = None,
406
406
  ) -> ChatMessage:
407
- """Modifies a message in the chat session synchronously.
407
+ """Modifies a message in the chat session synchronously if parameter is not specified the corresponding field will remain as is.
408
408
 
409
409
  Args:
410
410
  content (str, optional): The new content for the message.
@@ -8,6 +8,7 @@ from typing_extensions import deprecated
8
8
 
9
9
  from unique_toolkit._common.validate_required_values import validate_required_values
10
10
  from unique_toolkit.app.schemas import BaseEvent, ChatEvent, Event
11
+ from unique_toolkit.app.unique_settings import UniqueSettings
11
12
  from unique_toolkit.content import DOMAIN_NAME
12
13
  from unique_toolkit.content.constants import DEFAULT_SEARCH_LANGUAGE
13
14
  from unique_toolkit.content.functions import (
@@ -53,7 +54,7 @@ class ContentService:
53
54
  *,
54
55
  company_id: str,
55
56
  user_id: str,
56
- chat_id: str | None,
57
+ chat_id: str | None = None,
57
58
  metadata_filter: dict | None = None,
58
59
  ): ...
59
60
 
@@ -107,6 +108,19 @@ class ContentService:
107
108
  metadata_filter=metadata_filter,
108
109
  )
109
110
 
111
+ @classmethod
112
+ def from_settings(
113
+ cls, settings: UniqueSettings, metadata_filter: dict | None = None
114
+ ):
115
+ """
116
+ Initialize the ContentService with a settings object.
117
+ """
118
+ return cls(
119
+ company_id=settings.auth.company_id.get_secret_value(),
120
+ user_id=settings.auth.user_id.get_secret_value(),
121
+ metadata_filter=metadata_filter,
122
+ )
123
+
110
124
  @property
111
125
  @deprecated(
112
126
  "The event property is deprecated and will be removed in a future version."
@@ -5,6 +5,7 @@ from typing_extensions import deprecated
5
5
  from unique_toolkit._common._base_service import BaseService
6
6
  from unique_toolkit._common.validate_required_values import validate_required_values
7
7
  from unique_toolkit.app.schemas import BaseEvent, Event
8
+ from unique_toolkit.app.unique_settings import UniqueSettings
8
9
  from unique_toolkit.embedding.constants import DEFAULT_TIMEOUT
9
10
  from unique_toolkit.embedding.functions import embed_texts, embed_texts_async
10
11
  from unique_toolkit.embedding.schemas import Embeddings
@@ -54,6 +55,16 @@ class EmbeddingService(BaseService):
54
55
  """
55
56
  return cls(company_id=event.company_id, user_id=event.user_id)
56
57
 
58
+ @classmethod
59
+ def from_settings(cls, settings: UniqueSettings):
60
+ """
61
+ Initialize the EmbeddingService with a settings object.
62
+ """
63
+ return cls(
64
+ company_id=settings.auth.company_id.get_secret_value(),
65
+ user_id=settings.auth.user_id.get_secret_value(),
66
+ )
67
+
57
68
  @property
58
69
  @deprecated(
59
70
  "The event property is deprecated and will be removed in a future version."
@@ -49,6 +49,9 @@ class OpenAIMessageBuilder:
49
49
  builder._messages = messages.copy()
50
50
  return builder
51
51
 
52
+ def append(self, message: ChatCompletionMessageParam):
53
+ self._messages.append(message)
54
+
52
55
  def system_message_append(
53
56
  self,
54
57
  content: str | Iterable[ChatCompletionContentPartTextParam],
@@ -6,6 +6,7 @@ from typing_extensions import deprecated
6
6
 
7
7
  from unique_toolkit._common.validate_required_values import validate_required_values
8
8
  from unique_toolkit.app.schemas import BaseEvent, ChatEvent, Event
9
+ from unique_toolkit.app.unique_settings import UniqueSettings
9
10
  from unique_toolkit.content.schemas import ContentChunk
10
11
  from unique_toolkit.language_model.constants import (
11
12
  DEFAULT_COMPLETE_TEMPERATURE,
@@ -89,6 +90,16 @@ class LanguageModelService:
89
90
  """
90
91
  return cls(company_id=event.company_id, user_id=event.user_id)
91
92
 
93
+ @classmethod
94
+ def from_settings(cls, settings: UniqueSettings):
95
+ """
96
+ Initialize the LanguageModelService with a settings object.
97
+ """
98
+ return cls(
99
+ company_id=settings.auth.company_id.get_secret_value(),
100
+ user_id=settings.auth.user_id.get_secret_value(),
101
+ )
102
+
92
103
  @property
93
104
  @deprecated(
94
105
  "The event property is deprecated and will be removed in a future version."
File without changes