unique_toolkit 0.8.9__tar.gz → 0.8.11__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.9 → unique_toolkit-0.8.11}/CHANGELOG.md +8 -0
  2. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/PKG-INFO +9 -1
  3. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/pyproject.toml +1 -1
  4. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/schemas.py +21 -9
  5. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/service.py +2 -2
  6. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/framework_utilities/openai/message_builder.py +3 -0
  7. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/functions.py +39 -1
  8. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/infos.py +56 -6
  9. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/LICENSE +0 -0
  10. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/README.md +0 -0
  11. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/_common/_base_service.py +0 -0
  13. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/_common/_time_utils.py +0 -0
  14. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/_common/exception.py +0 -0
  15. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/_common/validate_required_values.py +0 -0
  16. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/_common/validators.py +0 -0
  17. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/__init__.py +0 -0
  18. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/dev_util.py +0 -0
  19. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/init_logging.py +0 -0
  20. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/init_sdk.py +0 -0
  21. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/performance/async_tasks.py +0 -0
  22. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  23. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/schemas.py +0 -0
  24. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/unique_settings.py +0 -0
  25. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/app/verification.py +0 -0
  26. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/__init__.py +0 -0
  27. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/constants.py +0 -0
  28. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/functions.py +0 -0
  29. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/state.py +0 -0
  30. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/chat/utils.py +0 -0
  31. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/content/__init__.py +0 -0
  32. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/content/constants.py +0 -0
  33. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/content/functions.py +0 -0
  34. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/content/schemas.py +0 -0
  35. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/content/service.py +0 -0
  36. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/content/utils.py +0 -0
  37. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/embedding/__init__.py +0 -0
  38. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/embedding/constants.py +0 -0
  39. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/embedding/functions.py +0 -0
  40. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/embedding/schemas.py +0 -0
  41. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/embedding/service.py +0 -0
  42. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/embedding/utils.py +0 -0
  43. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/__init__.py +0 -0
  44. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/config.py +0 -0
  45. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/constants.py +0 -0
  46. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/context_relevancy/constants.py +0 -0
  47. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/context_relevancy/prompts.py +0 -0
  48. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/context_relevancy/service.py +0 -0
  49. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/context_relevancy/utils.py +0 -0
  50. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/exception.py +0 -0
  51. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/hallucination/constants.py +0 -0
  52. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/hallucination/prompts.py +0 -0
  53. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/hallucination/service.py +0 -0
  54. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/hallucination/utils.py +0 -0
  55. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/output_parser.py +0 -0
  56. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/evaluators/schemas.py +0 -0
  57. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  58. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  59. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  60. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/framework_utilities/utils.py +0 -0
  61. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/__init__.py +0 -0
  62. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/builder.py +0 -0
  63. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/constants.py +0 -0
  64. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/prompt.py +0 -0
  65. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/reference.py +0 -0
  66. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/schemas.py +0 -0
  67. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/service.py +0 -0
  68. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/language_model/utils.py +0 -0
  69. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/protocols/support.py +0 -0
  70. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/reference_manager/reference_manager.py +0 -0
  71. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/short_term_memory/__init__.py +0 -0
  72. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/short_term_memory/constants.py +0 -0
  73. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/short_term_memory/functions.py +0 -0
  74. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/short_term_memory/schemas.py +0 -0
  75. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/short_term_memory/service.py +0 -0
  76. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/smart_rules/__init__.py +0 -0
  77. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/smart_rules/compile.py +0 -0
  78. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/agent_chunks_handler.py +0 -0
  79. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/config.py +0 -0
  80. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/factory.py +0 -0
  81. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/schemas.py +0 -0
  82. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/test/test_tool_progress_reporter.py +0 -0
  83. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/tool.py +0 -0
  84. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/tool_manager.py +0 -0
  85. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/tool_progress_reporter.py +0 -0
  86. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/utils/execution/execution.py +0 -0
  87. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/utils/source_handling/schema.py +0 -0
  88. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/unique_toolkit/tools/utils/source_handling/source_formatting.py +0 -0
  89. {unique_toolkit-0.8.9 → unique_toolkit-0.8.11}/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.11] - 2025-08-15
9
+ - Fix no tool call respoonse in ChatMessage -> Open Ai messages translation
10
+ - Add simple append method to OpenAIMessageBuilder
11
+
12
+ ## [0.8.10] - 2025-08-15
13
+ - Add min and max temperature to `LanguageModelInfo`: temperature will be clamped to the min and max temperature
14
+ - Add default options to `LanguageModelInfo`: These are used by default
15
+
8
16
  ## [0.8.9] - 2025-08-15
9
17
  - Reduce input token limits for `ANTHROPIC_CLAUDE_3_7_SONNET_THINKING`, `ANTHROPIC_CLAUDE_3_7_SONNET`, `ANTHROPIC_CLAUDE_OPUS_4` and `ANTHROPIC_CLAUDE_SONNET_4` to 180_000 from 200_000
10
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 0.8.9
3
+ Version: 0.8.11
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.11] - 2025-08-15
118
+ - Fix no tool call respoonse in ChatMessage -> Open Ai messages translation
119
+ - Add simple append method to OpenAIMessageBuilder
120
+
121
+ ## [0.8.10] - 2025-08-15
122
+ - Add min and max temperature to `LanguageModelInfo`: temperature will be clamped to the min and max temperature
123
+ - Add default options to `LanguageModelInfo`: These are used by default
124
+
117
125
  ## [0.8.9] - 2025-08-15
118
126
  - Reduce input token limits for `ANTHROPIC_CLAUDE_3_7_SONNET_THINKING`, `ANTHROPIC_CLAUDE_3_7_SONNET`, `ANTHROPIC_CLAUDE_OPUS_4` and `ANTHROPIC_CLAUDE_SONNET_4` to 180_000 from 200_000
119
127
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "0.8.9"
3
+ version = "0.8.11"
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.
@@ -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],
@@ -20,7 +20,11 @@ from unique_toolkit.language_model import (
20
20
  LanguageModelTool,
21
21
  LanguageModelToolDescription,
22
22
  )
23
- from unique_toolkit.language_model.infos import LanguageModelName
23
+ from unique_toolkit.language_model.infos import (
24
+ LanguageModelInfo,
25
+ LanguageModelName,
26
+ TemperatureBounds,
27
+ )
24
28
  from unique_toolkit.language_model.reference import (
25
29
  add_references_to_message,
26
30
  )
@@ -303,6 +307,24 @@ def __camelize_keys(data):
303
307
  return data
304
308
 
305
309
 
310
+ def _clamp_temperature(
311
+ temperature: float, temperature_bounds: TemperatureBounds
312
+ ) -> float:
313
+ temperature = max(temperature_bounds.min_temperature, temperature)
314
+ temperature = min(temperature_bounds.max_temperature, temperature)
315
+ return round(temperature, 2)
316
+
317
+
318
+ def _prepare_other_options(
319
+ other_options: dict | None,
320
+ default_options: dict,
321
+ ) -> dict:
322
+ options = default_options
323
+ if other_options is not None:
324
+ options.update(other_options)
325
+ return options
326
+
327
+
306
328
  def _prepare_all_completions_params_util(
307
329
  messages: LanguageModelMessages | list[ChatCompletionMessageParam],
308
330
  model_name: LanguageModelName | str,
@@ -318,6 +340,13 @@ def _prepare_all_completions_params_util(
318
340
  list[unique_sdk.Integrated.ChatCompletionRequestMessage],
319
341
  dict | None,
320
342
  ]:
343
+ model_info = None
344
+ if isinstance(model_name, LanguageModelName):
345
+ model_info = LanguageModelInfo.from_name(model_name)
346
+ other_options = _prepare_other_options(
347
+ other_options, model_info.default_options
348
+ )
349
+
321
350
  if isinstance(messages, LanguageModelMessages):
322
351
  options, model, messages_dict, search_context = _prepare_completion_params_util(
323
352
  messages=messages,
@@ -341,6 +370,15 @@ def _prepare_all_completions_params_util(
341
370
  )
342
371
  messages_dict = __camelize_keys(messages.copy())
343
372
 
373
+ if (
374
+ model_info is not None
375
+ and model_info.temperature_bounds is not None
376
+ and "temperature" in options
377
+ ):
378
+ options["temperature"] = _clamp_temperature(
379
+ temperature, model_info.temperature_bounds
380
+ )
381
+
344
382
  integrated_messages = cast(
345
383
  "list[unique_sdk.Integrated.ChatCompletionRequestMessage]",
346
384
  messages_dict,
@@ -1,6 +1,6 @@
1
1
  from datetime import date
2
2
  from enum import StrEnum
3
- from typing import ClassVar, Optional, Self
3
+ from typing import Any, ClassVar, Optional, Self
4
4
 
5
5
  from pydantic import BaseModel
6
6
  from pydantic.json_schema import SkipJsonSchema
@@ -96,6 +96,11 @@ class ModelCapabilities(StrEnum):
96
96
  REASONING = "reasoning"
97
97
 
98
98
 
99
+ class TemperatureBounds(BaseModel):
100
+ min_temperature: float
101
+ max_temperature: float
102
+
103
+
99
104
  class LanguageModelInfo(BaseModel):
100
105
  name: LanguageModelName | str
101
106
  version: str
@@ -116,6 +121,10 @@ class LanguageModelInfo(BaseModel):
116
121
  deprecated_at: date | SkipJsonSchema[None] = None
117
122
  retirement_text: str | SkipJsonSchema[None] = None
118
123
 
124
+ temperature_bounds: TemperatureBounds | None = None
125
+
126
+ default_options: dict[str, Any] = {}
127
+
119
128
  @classmethod
120
129
  def from_name(cls, model_name: LanguageModelName) -> Self:
121
130
  match model_name:
@@ -183,11 +192,19 @@ class LanguageModelInfo(BaseModel):
183
192
  ModelCapabilities.STRUCTURED_OUTPUT,
184
193
  ModelCapabilities.PARALLEL_FUNCTION_CALLING,
185
194
  ],
186
- token_limits=LanguageModelTokenLimits(token_limit_input=272000, token_limit_output=128000),
195
+ token_limits=LanguageModelTokenLimits(
196
+ token_limit_input=272000, token_limit_output=128000
197
+ ),
187
198
  info_cutoff_at=date(2024, 10, 24),
188
199
  published_at=date(2025, 8, 7),
189
200
  deprecated_at=date(2026, 8, 7),
190
201
  retirement_at=date(2026, 8, 7),
202
+ temperature_bounds=TemperatureBounds(
203
+ min_temperature=1.0, max_temperature=1.0
204
+ ),
205
+ default_options={
206
+ "reasoning_effort": "minimal",
207
+ },
191
208
  )
192
209
  case LanguageModelName.AZURE_GPT_5_MINI_2025_0807:
193
210
  return cls(
@@ -201,11 +218,19 @@ class LanguageModelInfo(BaseModel):
201
218
  ModelCapabilities.VISION,
202
219
  ModelCapabilities.STRUCTURED_OUTPUT,
203
220
  ],
204
- token_limits=LanguageModelTokenLimits(token_limit_input=272000, token_limit_output=128000),
221
+ token_limits=LanguageModelTokenLimits(
222
+ token_limit_input=272000, token_limit_output=128000
223
+ ),
205
224
  info_cutoff_at=date(2024, 6, 24),
206
225
  published_at=date(2025, 8, 7),
207
226
  deprecated_at=date(2026, 8, 7),
208
227
  retirement_at=date(2026, 8, 7),
228
+ temperature_bounds=TemperatureBounds(
229
+ min_temperature=1.0, max_temperature=1.0
230
+ ),
231
+ default_options={
232
+ "reasoning_effort": "minimal",
233
+ },
209
234
  )
210
235
  case LanguageModelName.AZURE_GPT_5_NANO_2025_0807:
211
236
  return cls(
@@ -219,19 +244,29 @@ class LanguageModelInfo(BaseModel):
219
244
  ModelCapabilities.VISION,
220
245
  ModelCapabilities.STRUCTURED_OUTPUT,
221
246
  ],
222
- token_limits=LanguageModelTokenLimits(token_limit_input=272000, token_limit_output=128000),
247
+ token_limits=LanguageModelTokenLimits(
248
+ token_limit_input=272000, token_limit_output=128000
249
+ ),
223
250
  info_cutoff_at=date(2024, 5, 31),
224
251
  published_at=date(2025, 8, 7),
225
252
  deprecated_at=date(2026, 8, 7),
226
253
  retirement_at=date(2026, 8, 7),
254
+ temperature_bounds=TemperatureBounds(
255
+ min_temperature=1.0, max_temperature=1.0
256
+ ),
257
+ default_options={
258
+ "reasoning_effort": "minimal",
259
+ },
227
260
  )
228
261
  case LanguageModelName.AZURE_GPT_5_CHAT_2025_0807:
229
262
  return cls(
230
263
  name=model_name,
231
264
  provider=LanguageModelProvider.AZURE,
232
265
  version="2025-08-07",
233
- encoder_name=EncoderName.O200K_BASE,
234
- token_limits=LanguageModelTokenLimits(token_limit_input=128000, token_limit_output=16384),
266
+ encoder_name=EncoderName.O200K_BASE,
267
+ token_limits=LanguageModelTokenLimits(
268
+ token_limit_input=128000, token_limit_output=16384
269
+ ),
235
270
  info_cutoff_at=date(2024, 10, 24),
236
271
  published_at=date(2025, 8, 7),
237
272
  deprecated_at=date(2026, 8, 7),
@@ -347,6 +382,9 @@ class LanguageModelInfo(BaseModel):
347
382
  ),
348
383
  info_cutoff_at=date(2023, 10, 1),
349
384
  published_at=date(2024, 9, 12),
385
+ temperature_bounds=TemperatureBounds(
386
+ min_temperature=1.0, max_temperature=1.0
387
+ ),
350
388
  )
351
389
  case LanguageModelName.AZURE_o1_2024_1217:
352
390
  return cls(
@@ -366,6 +404,9 @@ class LanguageModelInfo(BaseModel):
366
404
  ),
367
405
  info_cutoff_at=date(2023, 10, 1),
368
406
  published_at=date(2024, 12, 17),
407
+ temperature_bounds=TemperatureBounds(
408
+ min_temperature=1.0, max_temperature=1.0
409
+ ),
369
410
  )
370
411
  case LanguageModelName.AZURE_o3_MINI_2025_0131:
371
412
  return cls(
@@ -384,6 +425,9 @@ class LanguageModelInfo(BaseModel):
384
425
  ),
385
426
  info_cutoff_at=date(2023, 10, 1),
386
427
  published_at=date(2025, 1, 31),
428
+ temperature_bounds=TemperatureBounds(
429
+ min_temperature=1.0, max_temperature=1.0
430
+ ),
387
431
  )
388
432
  case LanguageModelName.AZURE_o3_2025_0416:
389
433
  return cls(
@@ -403,6 +447,9 @@ class LanguageModelInfo(BaseModel):
403
447
  ),
404
448
  info_cutoff_at=date(2024, 5, 31),
405
449
  published_at=date(2025, 4, 16),
450
+ temperature_bounds=TemperatureBounds(
451
+ min_temperature=1.0, max_temperature=1.0
452
+ ),
406
453
  )
407
454
  case LanguageModelName.AZURE_o4_MINI_2025_0416:
408
455
  return cls(
@@ -422,6 +469,9 @@ class LanguageModelInfo(BaseModel):
422
469
  ),
423
470
  info_cutoff_at=date(2024, 5, 31),
424
471
  published_at=date(2025, 4, 16),
472
+ temperature_bounds=TemperatureBounds(
473
+ min_temperature=1.0, max_temperature=1.0
474
+ ),
425
475
  )
426
476
  case LanguageModelName.AZURE_GPT_45_PREVIEW_2025_0227:
427
477
  return cls(
File without changes