unique_toolkit 2026.42.0.dev0__py3-none-any.whl → 2026.42.0.dev2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unique_toolkit/language_model/infos.py +82 -0
- unique_toolkit/language_model/schemas.py +5 -4
- {unique_toolkit-2026.42.0.dev0.dist-info → unique_toolkit-2026.42.0.dev2.dist-info}/METADATA +2 -2
- {unique_toolkit-2026.42.0.dev0.dist-info → unique_toolkit-2026.42.0.dev2.dist-info}/RECORD +5 -5
- {unique_toolkit-2026.42.0.dev0.dist-info → unique_toolkit-2026.42.0.dev2.dist-info}/WHEEL +0 -0
|
@@ -68,6 +68,7 @@ class LanguageModelName(StrEnum):
|
|
|
68
68
|
AZURE_GPT_6_ASTRA_2026_0903 = "AZURE_GPT_6_ASTRA_2026_0903"
|
|
69
69
|
AZURE_GPT_6_LUNA_2026_0922 = "AZURE_GPT_6_LUNA_2026_0922"
|
|
70
70
|
AZURE_GPT_6_SOL_2026_0922 = "AZURE_GPT_6_SOL_2026_0922"
|
|
71
|
+
AZURE_GPT_61_SOL_2026_0929 = "AZURE_GPT_61_SOL_2026_0929"
|
|
71
72
|
AZURE_GPT_4o_2024_0513 = "AZURE_GPT_4o_2024_0513"
|
|
72
73
|
AZURE_GPT_4o_2024_0806 = "AZURE_GPT_4o_2024_0806"
|
|
73
74
|
AZURE_GPT_4o_2024_1120 = "AZURE_GPT_4o_2024_1120"
|
|
@@ -91,6 +92,7 @@ class LanguageModelName(StrEnum):
|
|
|
91
92
|
ANTHROPIC_CLAUDE_SONNET_4_5 = "litellm:anthropic-claude-sonnet-4-5"
|
|
92
93
|
ANTHROPIC_CLAUDE_SONNET_4_6 = "litellm:anthropic-claude-sonnet-4-6"
|
|
93
94
|
ANTHROPIC_CLAUDE_SONNET_5 = "litellm:anthropic-claude-sonnet-5"
|
|
95
|
+
ANTHROPIC_CLAUDE_SONNET_5_5 = "litellm:anthropic-claude-sonnet-5-5"
|
|
94
96
|
ANTHROPIC_CLAUDE_OPUS_4 = "litellm:anthropic-claude-opus-4"
|
|
95
97
|
ANTHROPIC_CLAUDE_OPUS_4_1 = "litellm:anthropic-claude-opus-4-1"
|
|
96
98
|
ANTHROPIC_CLAUDE_OPUS_4_5 = "litellm:anthropic-claude-opus-4-5"
|
|
@@ -137,6 +139,7 @@ class LanguageModelName(StrEnum):
|
|
|
137
139
|
LITELLM_OPENAI_GPT_6_ASTRA = "litellm:openai-gpt-6-astra"
|
|
138
140
|
LITELLM_OPENAI_GPT_6_LUNA = "litellm:openai-gpt-6-luna"
|
|
139
141
|
LITELLM_OPENAI_GPT_6_SOL = "litellm:openai-gpt-6-sol"
|
|
142
|
+
LITELLM_OPENAI_GPT_61_SOL = "litellm:openai-gpt-6.1-sol"
|
|
140
143
|
LITELLM_OPENAI_O1 = "litellm:openai-o1"
|
|
141
144
|
LITELLM_OPENAI_O3 = "litellm:openai-o3"
|
|
142
145
|
LITELLM_OPENAI_O3_DEEP_RESEARCH = "litellm:openai-o3-deep-research"
|
|
@@ -160,6 +163,7 @@ class LanguageModelName(StrEnum):
|
|
|
160
163
|
LITELLM_QWEN_3_THINKING = "litellm:qwen-3-235B-A22B-thinking"
|
|
161
164
|
VERTEX_CLAUDE_SONNET_4_6 = "litellm:vertex-claude-sonnet-4-6"
|
|
162
165
|
VERTEX_CLAUDE_SONNET_5 = "litellm:vertex-claude-sonnet-5"
|
|
166
|
+
VERTEX_CLAUDE_SONNET_5_5 = "litellm:vertex-claude-sonnet-5-5"
|
|
163
167
|
VERTEX_CLAUDE_OPUS_4_6 = "litellm:vertex-claude-opus-4-6"
|
|
164
168
|
VERTEX_CLAUDE_OPUS_4_7 = "litellm:vertex-claude-opus-4-7"
|
|
165
169
|
VERTEX_CLAUDE_OPUS_4_8 = "litellm:vertex-claude-opus-4-8"
|
|
@@ -235,6 +239,7 @@ def get_encoder_name(model_name: LanguageModelName) -> EncoderName:
|
|
|
235
239
|
| LMN.AZURE_GPT_6_ASTRA_2026_0903
|
|
236
240
|
| LMN.AZURE_GPT_6_LUNA_2026_0922
|
|
237
241
|
| LMN.AZURE_GPT_6_SOL_2026_0922
|
|
242
|
+
| LMN.AZURE_GPT_61_SOL_2026_0929
|
|
238
243
|
| LMN.AZURE_MODEL_ROUTER_2025_1118
|
|
239
244
|
| LMN.LITELLM_OPENAI_GPT_5
|
|
240
245
|
| LMN.LITELLM_OPENAI_GPT_5_MINI
|
|
@@ -255,6 +260,7 @@ def get_encoder_name(model_name: LanguageModelName) -> EncoderName:
|
|
|
255
260
|
| LMN.LITELLM_OPENAI_GPT_6_ASTRA
|
|
256
261
|
| LMN.LITELLM_OPENAI_GPT_6_LUNA
|
|
257
262
|
| LMN.LITELLM_OPENAI_GPT_6_SOL
|
|
263
|
+
| LMN.LITELLM_OPENAI_GPT_61_SOL
|
|
258
264
|
| LMN.LITELLM_OPENAI_O1
|
|
259
265
|
| LMN.LITELLM_OPENAI_O3
|
|
260
266
|
| LMN.LITELLM_OPENAI_O3_DEEP_RESEARCH
|
|
@@ -1846,6 +1852,33 @@ class LanguageModelInfo(BaseModel):
|
|
|
1846
1852
|
),
|
|
1847
1853
|
supported_reasoning_efforts=[],
|
|
1848
1854
|
)
|
|
1855
|
+
case (
|
|
1856
|
+
LanguageModelName.ANTHROPIC_CLAUDE_SONNET_5_5
|
|
1857
|
+
| LanguageModelName.VERTEX_CLAUDE_SONNET_5_5
|
|
1858
|
+
):
|
|
1859
|
+
return cls(
|
|
1860
|
+
name=model_name,
|
|
1861
|
+
capabilities=[
|
|
1862
|
+
ModelCapabilities.FUNCTION_CALLING,
|
|
1863
|
+
ModelCapabilities.STREAMING,
|
|
1864
|
+
ModelCapabilities.VISION,
|
|
1865
|
+
ModelCapabilities.REASONING,
|
|
1866
|
+
],
|
|
1867
|
+
provider=LanguageModelProvider.LITELLM,
|
|
1868
|
+
family=ModelFamily.ANTHROPIC,
|
|
1869
|
+
version="claude-sonnet-5-5",
|
|
1870
|
+
encoder_name=EncoderName.O200K_BASE, # TODO: Update encoder with litellm
|
|
1871
|
+
token_limits=LanguageModelTokenLimits(
|
|
1872
|
+
# TODO: Remove the 1.3 adjustment once a proper Claude tokenizer is implemented. UN-24123
|
|
1873
|
+
# 1M context / 128K max output. https://platform.claude.com/docs/en/models/sonnet-5-5/overview
|
|
1874
|
+
token_limit_input=int(1_000_000 / 1.3),
|
|
1875
|
+
token_limit_output=int(128_000 / 1.3),
|
|
1876
|
+
),
|
|
1877
|
+
info_cutoff_at=date(2026, 6, 1),
|
|
1878
|
+
published_at=date(2026, 9, 28),
|
|
1879
|
+
supported_reasoning_efforts=[],
|
|
1880
|
+
supports_forced_tool_choice=False,
|
|
1881
|
+
)
|
|
1849
1882
|
case LanguageModelName.ANTHROPIC_CLAUDE_OPUS_4:
|
|
1850
1883
|
return cls(
|
|
1851
1884
|
name=model_name,
|
|
@@ -2984,6 +3017,55 @@ class LanguageModelInfo(BaseModel):
|
|
|
2984
3017
|
"xhigh",
|
|
2985
3018
|
],
|
|
2986
3019
|
)
|
|
3020
|
+
case (
|
|
3021
|
+
LanguageModelName.AZURE_GPT_61_SOL_2026_0929
|
|
3022
|
+
| LanguageModelName.LITELLM_OPENAI_GPT_61_SOL
|
|
3023
|
+
):
|
|
3024
|
+
# https://developers.openai.com/api/docs/models/gpt-6.1-sol
|
|
3025
|
+
# Foundry GA 2026-09-29:
|
|
3026
|
+
# https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/introducing-gpt-6-1-sol-in-microsoft-foundry-advanced-intelligence-optimized-for/4560811
|
|
3027
|
+
# Context 1,050,000 with 128,000 max output → 922,000 max input.
|
|
3028
|
+
# `none` is not a reasoning effort. `max` is documented.
|
|
3029
|
+
provider = (
|
|
3030
|
+
LanguageModelProvider.AZURE
|
|
3031
|
+
if model_name is LanguageModelName.AZURE_GPT_61_SOL_2026_0929
|
|
3032
|
+
else LanguageModelProvider.LITELLM
|
|
3033
|
+
)
|
|
3034
|
+
return cls(
|
|
3035
|
+
name=model_name,
|
|
3036
|
+
provider=provider,
|
|
3037
|
+
family=ModelFamily.OPENAI,
|
|
3038
|
+
version="2026-09-29",
|
|
3039
|
+
encoder_name=EncoderName.O200K_BASE,
|
|
3040
|
+
capabilities=[
|
|
3041
|
+
ModelCapabilities.CHAT_COMPLETIONS_API,
|
|
3042
|
+
ModelCapabilities.FUNCTION_CALLING,
|
|
3043
|
+
ModelCapabilities.PARALLEL_FUNCTION_CALLING,
|
|
3044
|
+
ModelCapabilities.REASONING,
|
|
3045
|
+
ModelCapabilities.RESPONSES_API,
|
|
3046
|
+
ModelCapabilities.STREAMING,
|
|
3047
|
+
ModelCapabilities.STRUCTURED_OUTPUT,
|
|
3048
|
+
ModelCapabilities.VISION,
|
|
3049
|
+
],
|
|
3050
|
+
token_limits=LanguageModelTokenLimits(
|
|
3051
|
+
token_limit_input=922_000, token_limit_output=128_000
|
|
3052
|
+
),
|
|
3053
|
+
info_cutoff_at=date(2026, 4, 30),
|
|
3054
|
+
published_at=date(2026, 9, 29),
|
|
3055
|
+
temperature_bounds=TemperatureBounds(
|
|
3056
|
+
min_temperature=0.0, max_temperature=1.0
|
|
3057
|
+
),
|
|
3058
|
+
default_options={
|
|
3059
|
+
"reasoning_effort": "medium",
|
|
3060
|
+
},
|
|
3061
|
+
supported_reasoning_efforts=[
|
|
3062
|
+
"low",
|
|
3063
|
+
"medium",
|
|
3064
|
+
"high",
|
|
3065
|
+
"xhigh",
|
|
3066
|
+
"max",
|
|
3067
|
+
],
|
|
3068
|
+
)
|
|
2987
3069
|
case LanguageModelName.LITELLM_OPENAI_O1:
|
|
2988
3070
|
return cls(
|
|
2989
3071
|
name=model_name,
|
|
@@ -793,9 +793,9 @@ class LanguageModelResponse(BaseModel):
|
|
|
793
793
|
|
|
794
794
|
|
|
795
795
|
# The OpenAI SDK's ReasoningEffort type alias is generated from an older OpenAPI spec and is
|
|
796
|
-
# missing values that the API actually supports (e.g. "xhigh", "none"). We define our own
|
|
796
|
+
# missing values that the API actually supports (e.g. "xhigh", "none", "max"). We define our own
|
|
797
797
|
# complete type here as the source of truth.
|
|
798
|
-
ReasoningEffort = Literal["none", "minimal", "low", "medium", "high", "xhigh"]
|
|
798
|
+
ReasoningEffort = Literal["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
|
799
799
|
|
|
800
800
|
# Ordered from lowest to highest reasoning effort. Used wherever effort levels must be
|
|
801
801
|
# compared or ranked (e.g. picking the maximum across multiple skill hints).
|
|
@@ -806,18 +806,19 @@ REASONING_EFFORT_ORDER: tuple[ReasoningEffort, ...] = (
|
|
|
806
806
|
"medium",
|
|
807
807
|
"high",
|
|
808
808
|
"xhigh",
|
|
809
|
+
"max",
|
|
809
810
|
)
|
|
810
811
|
|
|
811
812
|
|
|
812
813
|
def to_reasoning_effort(value: str) -> ReasoningEffort:
|
|
813
814
|
"""Narrow a raw string to ReasoningEffort, raising ValueError for unrecognised values."""
|
|
814
815
|
match value:
|
|
815
|
-
case "none" | "minimal" | "low" | "medium" | "high" | "xhigh":
|
|
816
|
+
case "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max":
|
|
816
817
|
return value
|
|
817
818
|
case _:
|
|
818
819
|
raise ValueError(
|
|
819
820
|
f"Unknown reasoning_effort {value!r}. "
|
|
820
|
-
f"Supported values: none, minimal, low, medium, high, xhigh."
|
|
821
|
+
f"Supported values: none, minimal, low, medium, high, xhigh, max."
|
|
821
822
|
)
|
|
822
823
|
|
|
823
824
|
|
{unique_toolkit-2026.42.0.dev0.dist-info → unique_toolkit-2026.42.0.dev2.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 2026.42.0.
|
|
3
|
+
Version: 2026.42.0.dev2
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
|
|
6
6
|
Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
|
|
@@ -16,7 +16,7 @@ Requires-Dist: sseclient>=0.0.27,<0.0.28
|
|
|
16
16
|
Requires-Dist: openai>=1.105.0,<3
|
|
17
17
|
Requires-Dist: platformdirs>=4.0.0,<5
|
|
18
18
|
Requires-Dist: pillow>=12.1.1
|
|
19
|
-
Requires-Dist: unique-sdk>=2026.42.0.
|
|
19
|
+
Requires-Dist: unique-sdk>=2026.42.0.dev1,<2026.42.0rc0
|
|
20
20
|
Requires-Dist: jambo>=0.1.2,<0.2
|
|
21
21
|
Requires-Dist: jinja2>=3.1.6,<4
|
|
22
22
|
Requires-Dist: docxtpl>=0.20.1,<0.21
|
|
@@ -397,12 +397,12 @@ unique_toolkit/language_model/builder.py,sha256=KwBzsD6-fvQnB4p2I7M-5Tk6j4tmQ973
|
|
|
397
397
|
unique_toolkit/language_model/constants.py,sha256=B-topqW0r83dkC_25DeQfnPk3n53qzIHUCBS7YJ0-1U,119
|
|
398
398
|
unique_toolkit/language_model/default_language_model.py,sha256=mcyuFs_V6tp52C8xJSHiEHO4kFGj6xed1gvozvCRD7k,1181
|
|
399
399
|
unique_toolkit/language_model/functions.py,sha256=W6JC4LUh-LZ9waDgph--xVmKeQ7Ls6NRAqDx9DwQdeY,26691
|
|
400
|
-
unique_toolkit/language_model/infos.py,sha256=
|
|
400
|
+
unique_toolkit/language_model/infos.py,sha256=FTujFoCWPYtrPTVPTZ7HxJ-s2IsN25_DSdMCWzSRbvE,172016
|
|
401
401
|
unique_toolkit/language_model/invocation_stats.py,sha256=CQbpUz394IsVd8eNTB1gPSMt5f0UXmkN1amNsqtAW6U,5857
|
|
402
402
|
unique_toolkit/language_model/model_costs.py,sha256=ShuDAzMew1fUkJ3tzPgU5Zqjp6ivUZaG97BFh93tEn4,6358
|
|
403
403
|
unique_toolkit/language_model/prompt.py,sha256=JSawaLjQg3VR-E2fK8engFyJnNdk21zaO8pPIodzN4Q,3991
|
|
404
404
|
unique_toolkit/language_model/reference.py,sha256=T3wr2jP_uRg5wKVIbKqLbxJlcgxfbZQGq3XdjbQ2kSo,6984
|
|
405
|
-
unique_toolkit/language_model/schemas.py,sha256=
|
|
405
|
+
unique_toolkit/language_model/schemas.py,sha256=o8zGkfoYayO1gL85G-ulV3Akp_BwjgEWGGUb89j1OgU,35440
|
|
406
406
|
unique_toolkit/language_model/service.py,sha256=lgpzWhqxLBOeFacCafQi4e7BqAxJbOlr8GnCYcKeTdM,13274
|
|
407
407
|
unique_toolkit/language_model/settings.py,sha256=7szohExI-qmTfUf2Zp5AB5TzrsZy1UekAGyXx_UaPMc,1524
|
|
408
408
|
unique_toolkit/language_model/stream_transform.py,sha256=iNNGpLY_7G6Bpp9Y4KtbIkQm3WB4yZt75BXcqx0DVkI,2775
|
|
@@ -426,6 +426,6 @@ unique_toolkit/short_term_memory/service.py,sha256=2JMBEBn6GoyK-a0xvdcWpPft-3C74
|
|
|
426
426
|
unique_toolkit/smart_rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
427
427
|
unique_toolkit/smart_rules/compile.py,sha256=vRe0aMJWuVIK-VsqomgxQImzke7MDmwgSxxJfYCa7zw,1386
|
|
428
428
|
unique_toolkit/test_utilities/events.py,sha256=FLrhMh0A_mQutAUjoD0FdMcVQ4Gq31r35OVGzRjvLro,6760
|
|
429
|
-
unique_toolkit-2026.42.0.
|
|
430
|
-
unique_toolkit-2026.42.0.
|
|
431
|
-
unique_toolkit-2026.42.0.
|
|
429
|
+
unique_toolkit-2026.42.0.dev2.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
430
|
+
unique_toolkit-2026.42.0.dev2.dist-info/METADATA,sha256=o97G8KEz2luZiKwnoVb60E3u8BQ2w1otkKTNv5awd7o,7821
|
|
431
|
+
unique_toolkit-2026.42.0.dev2.dist-info/RECORD,,
|
|
File without changes
|