@ai-sdk/anthropic 3.0.26 → 3.0.28
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.
- package/CHANGELOG.md +12 -0
- package/dist/index.js +71 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +71 -25
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +5 -0
- package/dist/internal/index.d.ts +5 -0
- package/dist/internal/index.js +70 -24
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +70 -24
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/anthropic-messages-language-model.ts +84 -20
- package/src/convert-anthropic-messages-usage.ts +1 -1
package/package.json
CHANGED
|
@@ -152,6 +152,16 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
152
152
|
return this.config.provider;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Extracts the dynamic provider name from the config.provider string.
|
|
157
|
+
* e.g., 'my-custom-anthropic.messages' -> 'my-custom-anthropic'
|
|
158
|
+
*/
|
|
159
|
+
private get providerOptionsName(): string {
|
|
160
|
+
const provider = this.config.provider;
|
|
161
|
+
const dotIndex = provider.indexOf('.');
|
|
162
|
+
return dotIndex === -1 ? provider : provider.substring(0, dotIndex);
|
|
163
|
+
}
|
|
164
|
+
|
|
155
165
|
get supportedUrls() {
|
|
156
166
|
return this.config.supportedUrls?.() ?? {};
|
|
157
167
|
}
|
|
@@ -218,12 +228,34 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
218
228
|
}
|
|
219
229
|
}
|
|
220
230
|
|
|
221
|
-
const
|
|
231
|
+
const providerOptionsName = this.providerOptionsName;
|
|
232
|
+
|
|
233
|
+
// Parse provider options from both canonical 'anthropic' key and custom key
|
|
234
|
+
const canonicalOptions = await parseProviderOptions({
|
|
222
235
|
provider: 'anthropic',
|
|
223
236
|
providerOptions,
|
|
224
237
|
schema: anthropicProviderOptions,
|
|
225
238
|
});
|
|
226
239
|
|
|
240
|
+
const customProviderOptions =
|
|
241
|
+
providerOptionsName !== 'anthropic'
|
|
242
|
+
? await parseProviderOptions({
|
|
243
|
+
provider: providerOptionsName,
|
|
244
|
+
providerOptions,
|
|
245
|
+
schema: anthropicProviderOptions,
|
|
246
|
+
})
|
|
247
|
+
: null;
|
|
248
|
+
|
|
249
|
+
// Track if custom key was explicitly used
|
|
250
|
+
const usedCustomProviderKey = customProviderOptions != null;
|
|
251
|
+
|
|
252
|
+
// Merge options
|
|
253
|
+
const anthropicOptions = Object.assign(
|
|
254
|
+
{},
|
|
255
|
+
canonicalOptions ?? {},
|
|
256
|
+
customProviderOptions ?? {},
|
|
257
|
+
);
|
|
258
|
+
|
|
227
259
|
const {
|
|
228
260
|
maxOutputTokens: maxOutputTokensForModel,
|
|
229
261
|
supportsStructuredOutput: modelSupportsStructuredOutput,
|
|
@@ -567,6 +599,8 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
567
599
|
betas: new Set([...betas, ...toolsBetas, ...userSuppliedBetas]),
|
|
568
600
|
usesJsonResponseTool: jsonResponseTool != null,
|
|
569
601
|
toolNameMapping,
|
|
602
|
+
providerOptionsName,
|
|
603
|
+
usedCustomProviderKey,
|
|
570
604
|
};
|
|
571
605
|
}
|
|
572
606
|
|
|
@@ -659,12 +693,19 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
659
693
|
async doGenerate(
|
|
660
694
|
options: LanguageModelV3CallOptions,
|
|
661
695
|
): Promise<LanguageModelV3GenerateResult> {
|
|
662
|
-
const {
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
696
|
+
const {
|
|
697
|
+
args,
|
|
698
|
+
warnings,
|
|
699
|
+
betas,
|
|
700
|
+
usesJsonResponseTool,
|
|
701
|
+
toolNameMapping,
|
|
702
|
+
providerOptionsName,
|
|
703
|
+
usedCustomProviderKey,
|
|
704
|
+
} = await this.getArgs({
|
|
705
|
+
...options,
|
|
706
|
+
stream: false,
|
|
707
|
+
userSuppliedBetas: await this.getBetasFromHeaders(options.headers),
|
|
708
|
+
});
|
|
668
709
|
|
|
669
710
|
// Extract citation documents for response processing
|
|
670
711
|
const citationDocuments = [
|
|
@@ -1051,8 +1092,8 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
1051
1092
|
body: rawResponse,
|
|
1052
1093
|
},
|
|
1053
1094
|
warnings,
|
|
1054
|
-
providerMetadata: {
|
|
1055
|
-
|
|
1095
|
+
providerMetadata: (() => {
|
|
1096
|
+
const anthropicMetadata = {
|
|
1056
1097
|
usage: response.usage as JSONObject,
|
|
1057
1098
|
cacheCreationInputTokens:
|
|
1058
1099
|
response.usage.cache_creation_input_tokens ?? null,
|
|
@@ -1073,8 +1114,18 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
1073
1114
|
mapAnthropicResponseContextManagement(
|
|
1074
1115
|
response.context_management,
|
|
1075
1116
|
) ?? null,
|
|
1076
|
-
} satisfies AnthropicMessageMetadata
|
|
1077
|
-
|
|
1117
|
+
} satisfies AnthropicMessageMetadata;
|
|
1118
|
+
|
|
1119
|
+
const providerMetadata: SharedV3ProviderMetadata = {
|
|
1120
|
+
anthropic: anthropicMetadata,
|
|
1121
|
+
};
|
|
1122
|
+
|
|
1123
|
+
if (usedCustomProviderKey && providerOptionsName !== 'anthropic') {
|
|
1124
|
+
providerMetadata[providerOptionsName] = anthropicMetadata;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
return providerMetadata;
|
|
1128
|
+
})(),
|
|
1078
1129
|
};
|
|
1079
1130
|
}
|
|
1080
1131
|
|
|
@@ -1087,6 +1138,8 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
1087
1138
|
betas,
|
|
1088
1139
|
usesJsonResponseTool,
|
|
1089
1140
|
toolNameMapping,
|
|
1141
|
+
providerOptionsName,
|
|
1142
|
+
usedCustomProviderKey,
|
|
1090
1143
|
} = await this.getArgs({
|
|
1091
1144
|
...options,
|
|
1092
1145
|
stream: true,
|
|
@@ -1932,19 +1985,30 @@ export class AnthropicMessagesLanguageModel implements LanguageModelV3 {
|
|
|
1932
1985
|
}
|
|
1933
1986
|
|
|
1934
1987
|
case 'message_stop': {
|
|
1988
|
+
const anthropicMetadata = {
|
|
1989
|
+
usage: (rawUsage as JSONObject) ?? null,
|
|
1990
|
+
cacheCreationInputTokens,
|
|
1991
|
+
stopSequence,
|
|
1992
|
+
container,
|
|
1993
|
+
contextManagement,
|
|
1994
|
+
} satisfies AnthropicMessageMetadata;
|
|
1995
|
+
|
|
1996
|
+
const providerMetadata: SharedV3ProviderMetadata = {
|
|
1997
|
+
anthropic: anthropicMetadata,
|
|
1998
|
+
};
|
|
1999
|
+
|
|
2000
|
+
if (
|
|
2001
|
+
usedCustomProviderKey &&
|
|
2002
|
+
providerOptionsName !== 'anthropic'
|
|
2003
|
+
) {
|
|
2004
|
+
providerMetadata[providerOptionsName] = anthropicMetadata;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
1935
2007
|
controller.enqueue({
|
|
1936
2008
|
type: 'finish',
|
|
1937
2009
|
finishReason,
|
|
1938
2010
|
usage: convertAnthropicMessagesUsage(usage),
|
|
1939
|
-
providerMetadata
|
|
1940
|
-
anthropic: {
|
|
1941
|
-
usage: (rawUsage as JSONObject) ?? null,
|
|
1942
|
-
cacheCreationInputTokens,
|
|
1943
|
-
stopSequence,
|
|
1944
|
-
container,
|
|
1945
|
-
contextManagement,
|
|
1946
|
-
} satisfies AnthropicMessageMetadata,
|
|
1947
|
-
},
|
|
2011
|
+
providerMetadata,
|
|
1948
2012
|
});
|
|
1949
2013
|
return;
|
|
1950
2014
|
}
|