@ai-sdk/anthropic 2.0.107 → 2.0.109

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.
@@ -2,7 +2,7 @@ import { LanguageModelV2, JSONSchema7, SharedV2ProviderMetadata, LanguageModelV2
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
4
4
 
5
- type AnthropicMessagesModelId = 'claude-3-5-haiku-20241022' | 'claude-3-5-haiku-latest' | 'claude-3-7-sonnet-20250219' | 'claude-3-7-sonnet-latest' | 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-opus-4-0' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-20250514' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
5
+ type AnthropicMessagesModelId = 'claude-3-5-haiku-20241022' | 'claude-3-5-haiku-latest' | 'claude-3-7-sonnet-20250219' | 'claude-3-7-sonnet-latest' | 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-haiku-5-5' | 'claude-opus-4-0' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-20250514' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
6
6
 
7
7
  type AnthropicMessagesConfig = {
8
8
  provider: string;
@@ -48,6 +48,11 @@ declare function getModelCapabilities(modelId: string): {
48
48
  * are rejected with a 400.
49
49
  */
50
50
  rejectsThinkingDisabled: boolean;
51
+ /**
52
+ * Budget-based thinking (`thinking.type` `enabled` with `budget_tokens`) is
53
+ * rejected with a 400. Only adaptive thinking is supported.
54
+ */
55
+ rejectsBudgetThinking: boolean;
51
56
  /**
52
57
  * Forced tool use (`tool_choice` `any` or a named tool) is rejected with a 400.
53
58
  */
@@ -2,7 +2,7 @@ import { LanguageModelV2, JSONSchema7, SharedV2ProviderMetadata, LanguageModelV2
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
4
4
 
5
- type AnthropicMessagesModelId = 'claude-3-5-haiku-20241022' | 'claude-3-5-haiku-latest' | 'claude-3-7-sonnet-20250219' | 'claude-3-7-sonnet-latest' | 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-opus-4-0' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-20250514' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
5
+ type AnthropicMessagesModelId = 'claude-3-5-haiku-20241022' | 'claude-3-5-haiku-latest' | 'claude-3-7-sonnet-20250219' | 'claude-3-7-sonnet-latest' | 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-haiku-5-5' | 'claude-opus-4-0' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-20250514' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
6
6
 
7
7
  type AnthropicMessagesConfig = {
8
8
  provider: string;
@@ -48,6 +48,11 @@ declare function getModelCapabilities(modelId: string): {
48
48
  * are rejected with a 400.
49
49
  */
50
50
  rejectsThinkingDisabled: boolean;
51
+ /**
52
+ * Budget-based thinking (`thinking.type` `enabled` with `budget_tokens`) is
53
+ * rejected with a 400. Only adaptive thinking is supported.
54
+ */
55
+ rejectsBudgetThinking: boolean;
51
56
  /**
52
57
  * Forced tool use (`tool_choice` `any` or a named tool) is rejected with a 400.
53
58
  */
@@ -2644,6 +2644,7 @@ var AnthropicMessagesLanguageModel = class {
2644
2644
  rejectsSamplingParameters,
2645
2645
  rejectsThinkingDisabledAboveHighEffort,
2646
2646
  rejectsThinkingDisabled,
2647
+ rejectsBudgetThinking,
2647
2648
  rejectsForcedToolUse,
2648
2649
  supportsBetweenToolsThinking,
2649
2650
  isKnownModel
@@ -2730,20 +2731,22 @@ var AnthropicMessagesLanguageModel = class {
2730
2731
  details: `thinking cannot be disabled for ${this.modelId}; it always uses adaptive thinking. The thinking setting has been removed. Lower 'effort' to reduce thinking.`
2731
2732
  });
2732
2733
  anthropicOptions.thinking = void 0;
2733
- } else if ("type" in thinking && thinking.type === "enabled") {
2734
- warnings.push({
2735
- type: "unsupported-setting",
2736
- setting: "providerOptions.anthropic.thinking",
2737
- details: `budget-based thinking is not supported by ${this.modelId}; it always uses adaptive thinking. Using adaptive thinking instead. Use 'effort' to control how much the model thinks.`
2738
- });
2739
- anthropicOptions.thinking = {
2740
- type: "adaptive",
2741
- ...thinking.blockBinding != null && {
2742
- blockBinding: thinking.blockBinding
2743
- }
2744
- };
2745
2734
  }
2746
2735
  }
2736
+ const budgetThinking = anthropicOptions == null ? void 0 : anthropicOptions.thinking;
2737
+ if (anthropicOptions != null && rejectsBudgetThinking && budgetThinking != null && "type" in budgetThinking && budgetThinking.type === "enabled") {
2738
+ warnings.push({
2739
+ type: "unsupported-setting",
2740
+ setting: "providerOptions.anthropic.thinking",
2741
+ details: rejectsThinkingDisabled ? `budget-based thinking is not supported by ${this.modelId}; it always uses adaptive thinking. Using adaptive thinking instead. Use 'effort' to control how much the model thinks.` : `budget-based thinking is not supported by ${this.modelId}. Using adaptive thinking instead. Use 'effort' to control how much the model thinks.`
2742
+ });
2743
+ anthropicOptions.thinking = {
2744
+ type: "adaptive",
2745
+ ...budgetThinking.blockBinding != null && {
2746
+ blockBinding: budgetThinking.blockBinding
2747
+ }
2748
+ };
2749
+ }
2747
2750
  const thinkingOptions = anthropicOptions == null ? void 0 : anthropicOptions.thinking;
2748
2751
  const thinkingType = thinkingOptions != null && "type" in thinkingOptions ? thinkingOptions.type : void 0;
2749
2752
  if (rejectsThinkingDisabledAboveHighEffort && thinkingType === "disabled" && anthropicOptions != null && (anthropicOptions.effort === "xhigh" || anthropicOptions.effort === "max")) {
@@ -4134,6 +4137,7 @@ function getModelCapabilities(modelId) {
4134
4137
  rejectsSamplingParameters: true,
4135
4138
  rejectsThinkingDisabledAboveHighEffort: true,
4136
4139
  rejectsThinkingDisabled: true,
4140
+ rejectsBudgetThinking: true,
4137
4141
  rejectsForcedToolUse: true,
4138
4142
  supportsBetweenToolsThinking: true,
4139
4143
  isKnownModel: true
@@ -4145,10 +4149,23 @@ function getModelCapabilities(modelId) {
4145
4149
  rejectsSamplingParameters: true,
4146
4150
  rejectsThinkingDisabledAboveHighEffort: true,
4147
4151
  rejectsThinkingDisabled: true,
4152
+ rejectsBudgetThinking: true,
4148
4153
  rejectsForcedToolUse: true,
4149
4154
  supportsBetweenToolsThinking: false,
4150
4155
  isKnownModel: true
4151
4156
  };
4157
+ } else if (modelId.includes("claude-haiku-5-5")) {
4158
+ return {
4159
+ maxOutputTokens: 128e3,
4160
+ supportsStructuredOutput: true,
4161
+ rejectsSamplingParameters: true,
4162
+ rejectsThinkingDisabledAboveHighEffort: true,
4163
+ rejectsThinkingDisabled: false,
4164
+ rejectsBudgetThinking: true,
4165
+ rejectsForcedToolUse: false,
4166
+ supportsBetweenToolsThinking: false,
4167
+ isKnownModel: true
4168
+ };
4152
4169
  } else if (modelId.includes("claude-opus-5")) {
4153
4170
  return {
4154
4171
  maxOutputTokens: 128e3,
@@ -4156,6 +4173,7 @@ function getModelCapabilities(modelId) {
4156
4173
  rejectsSamplingParameters: true,
4157
4174
  rejectsThinkingDisabledAboveHighEffort: true,
4158
4175
  rejectsThinkingDisabled: false,
4176
+ rejectsBudgetThinking: false,
4159
4177
  rejectsForcedToolUse: false,
4160
4178
  supportsBetweenToolsThinking: false,
4161
4179
  isKnownModel: true
@@ -4167,6 +4185,7 @@ function getModelCapabilities(modelId) {
4167
4185
  rejectsSamplingParameters: true,
4168
4186
  rejectsThinkingDisabledAboveHighEffort: false,
4169
4187
  rejectsThinkingDisabled: true,
4188
+ rejectsBudgetThinking: true,
4170
4189
  rejectsForcedToolUse: true,
4171
4190
  supportsBetweenToolsThinking: false,
4172
4191
  isKnownModel: true
@@ -4178,6 +4197,7 @@ function getModelCapabilities(modelId) {
4178
4197
  rejectsSamplingParameters: true,
4179
4198
  rejectsThinkingDisabledAboveHighEffort: false,
4180
4199
  rejectsThinkingDisabled: true,
4200
+ rejectsBudgetThinking: true,
4181
4201
  rejectsForcedToolUse: false,
4182
4202
  supportsBetweenToolsThinking: false,
4183
4203
  isKnownModel: true
@@ -4189,6 +4209,7 @@ function getModelCapabilities(modelId) {
4189
4209
  rejectsSamplingParameters: true,
4190
4210
  rejectsThinkingDisabledAboveHighEffort: false,
4191
4211
  rejectsThinkingDisabled: false,
4212
+ rejectsBudgetThinking: false,
4192
4213
  rejectsForcedToolUse: false,
4193
4214
  supportsBetweenToolsThinking: false,
4194
4215
  isKnownModel: true
@@ -4200,6 +4221,7 @@ function getModelCapabilities(modelId) {
4200
4221
  rejectsSamplingParameters: false,
4201
4222
  rejectsThinkingDisabledAboveHighEffort: false,
4202
4223
  rejectsThinkingDisabled: false,
4224
+ rejectsBudgetThinking: false,
4203
4225
  rejectsForcedToolUse: false,
4204
4226
  supportsBetweenToolsThinking: false,
4205
4227
  isKnownModel: true
@@ -4211,6 +4233,7 @@ function getModelCapabilities(modelId) {
4211
4233
  rejectsSamplingParameters: false,
4212
4234
  rejectsThinkingDisabledAboveHighEffort: false,
4213
4235
  rejectsThinkingDisabled: false,
4236
+ rejectsBudgetThinking: false,
4214
4237
  rejectsForcedToolUse: false,
4215
4238
  supportsBetweenToolsThinking: false,
4216
4239
  isKnownModel: true
@@ -4222,6 +4245,7 @@ function getModelCapabilities(modelId) {
4222
4245
  rejectsSamplingParameters: false,
4223
4246
  rejectsThinkingDisabledAboveHighEffort: false,
4224
4247
  rejectsThinkingDisabled: false,
4248
+ rejectsBudgetThinking: false,
4225
4249
  rejectsForcedToolUse: false,
4226
4250
  supportsBetweenToolsThinking: false,
4227
4251
  isKnownModel: true
@@ -4233,6 +4257,7 @@ function getModelCapabilities(modelId) {
4233
4257
  rejectsSamplingParameters: false,
4234
4258
  rejectsThinkingDisabledAboveHighEffort: false,
4235
4259
  rejectsThinkingDisabled: false,
4260
+ rejectsBudgetThinking: false,
4236
4261
  rejectsForcedToolUse: false,
4237
4262
  supportsBetweenToolsThinking: false,
4238
4263
  isKnownModel: true
@@ -4244,6 +4269,7 @@ function getModelCapabilities(modelId) {
4244
4269
  rejectsSamplingParameters: false,
4245
4270
  rejectsThinkingDisabledAboveHighEffort: false,
4246
4271
  rejectsThinkingDisabled: false,
4272
+ rejectsBudgetThinking: false,
4247
4273
  rejectsForcedToolUse: false,
4248
4274
  supportsBetweenToolsThinking: false,
4249
4275
  isKnownModel: true
@@ -4255,6 +4281,7 @@ function getModelCapabilities(modelId) {
4255
4281
  rejectsSamplingParameters: false,
4256
4282
  rejectsThinkingDisabledAboveHighEffort: false,
4257
4283
  rejectsThinkingDisabled: false,
4284
+ rejectsBudgetThinking: false,
4258
4285
  rejectsForcedToolUse: false,
4259
4286
  supportsBetweenToolsThinking: false,
4260
4287
  isKnownModel: true
@@ -4266,6 +4293,7 @@ function getModelCapabilities(modelId) {
4266
4293
  rejectsSamplingParameters: false,
4267
4294
  rejectsThinkingDisabledAboveHighEffort: false,
4268
4295
  rejectsThinkingDisabled: false,
4296
+ rejectsBudgetThinking: false,
4269
4297
  rejectsForcedToolUse: false,
4270
4298
  supportsBetweenToolsThinking: false,
4271
4299
  isKnownModel: false
@@ -4277,6 +4305,7 @@ function getModelCapabilities(modelId) {
4277
4305
  rejectsSamplingParameters: true,
4278
4306
  rejectsThinkingDisabledAboveHighEffort: true,
4279
4307
  rejectsThinkingDisabled: false,
4308
+ rejectsBudgetThinking: false,
4280
4309
  rejectsForcedToolUse: false,
4281
4310
  supportsBetweenToolsThinking: false,
4282
4311
  isKnownModel: false
@@ -4288,6 +4317,7 @@ function getModelCapabilities(modelId) {
4288
4317
  rejectsSamplingParameters: false,
4289
4318
  rejectsThinkingDisabledAboveHighEffort: false,
4290
4319
  rejectsThinkingDisabled: false,
4320
+ rejectsBudgetThinking: false,
4291
4321
  rejectsForcedToolUse: false,
4292
4322
  supportsBetweenToolsThinking: false,
4293
4323
  isKnownModel: false