@ai-sdk/anthropic 0.0.30 → 0.0.32
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/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +12 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -7,6 +7,8 @@ interface AnthropicMessagesSettings {
|
|
|
7
7
|
|
|
8
8
|
Used to remove "long tail" low probability responses.
|
|
9
9
|
Recommended for advanced use cases only. You usually only need to use temperature.
|
|
10
|
+
|
|
11
|
+
@deprecated use the topK setting on the request instead.
|
|
10
12
|
*/
|
|
11
13
|
topK?: number;
|
|
12
14
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ interface AnthropicMessagesSettings {
|
|
|
7
7
|
|
|
8
8
|
Used to remove "long tail" low probability responses.
|
|
9
9
|
Recommended for advanced use cases only. You usually only need to use temperature.
|
|
10
|
+
|
|
11
|
+
@deprecated use the topK setting on the request instead.
|
|
10
12
|
*/
|
|
11
13
|
topK?: number;
|
|
12
14
|
}
|
package/dist/index.js
CHANGED
|
@@ -250,8 +250,11 @@ var AnthropicMessagesLanguageModel = class {
|
|
|
250
250
|
maxTokens,
|
|
251
251
|
temperature,
|
|
252
252
|
topP,
|
|
253
|
+
topK,
|
|
253
254
|
frequencyPenalty,
|
|
254
255
|
presencePenalty,
|
|
256
|
+
stopSequences,
|
|
257
|
+
responseFormat,
|
|
255
258
|
seed
|
|
256
259
|
}) {
|
|
257
260
|
const type = mode.type;
|
|
@@ -274,17 +277,25 @@ var AnthropicMessagesLanguageModel = class {
|
|
|
274
277
|
setting: "seed"
|
|
275
278
|
});
|
|
276
279
|
}
|
|
280
|
+
if (responseFormat != null && responseFormat.type !== "text") {
|
|
281
|
+
warnings.push({
|
|
282
|
+
type: "unsupported-setting",
|
|
283
|
+
setting: "responseFormat",
|
|
284
|
+
details: "JSON response format is not supported."
|
|
285
|
+
});
|
|
286
|
+
}
|
|
277
287
|
const messagesPrompt = await convertToAnthropicMessagesPrompt({ prompt });
|
|
278
288
|
const baseArgs = {
|
|
279
289
|
// model id:
|
|
280
290
|
model: this.modelId,
|
|
281
291
|
// model specific settings:
|
|
282
|
-
top_k: this.settings.topK,
|
|
292
|
+
top_k: topK != null ? topK : this.settings.topK,
|
|
283
293
|
// standardized settings:
|
|
284
294
|
max_tokens: maxTokens != null ? maxTokens : 4096,
|
|
285
295
|
// 4096: max model output tokens
|
|
286
296
|
temperature,
|
|
287
297
|
top_p: topP,
|
|
298
|
+
stop_sequences: stopSequences,
|
|
288
299
|
// prompt:
|
|
289
300
|
system: messagesPrompt.system,
|
|
290
301
|
messages: messagesPrompt.messages
|
|
@@ -312,11 +323,6 @@ var AnthropicMessagesLanguageModel = class {
|
|
|
312
323
|
warnings
|
|
313
324
|
};
|
|
314
325
|
}
|
|
315
|
-
case "object-grammar": {
|
|
316
|
-
throw new import_provider2.UnsupportedFunctionalityError({
|
|
317
|
-
functionality: "grammar-mode object generation"
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
326
|
default: {
|
|
321
327
|
const _exhaustiveCheck = type;
|
|
322
328
|
throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/anthropic-facade.ts","../src/anthropic-messages-language-model.ts","../src/anthropic-error.ts","../src/convert-to-anthropic-messages-prompt.ts","../src/map-anthropic-stop-reason.ts","../src/anthropic-provider.ts"],"sourcesContent":["export * from './anthropic-facade';\nexport * from './anthropic-provider';\n","import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { AnthropicProviderSettings } from './anthropic-provider';\n\n/**\n * @deprecated Use `createAnthropic` instead.\n */\nexport class Anthropic {\n /**\n * Base URL for Anthropic API calls.\n */\n readonly baseURL: string;\n\n readonly apiKey?: string;\n\n readonly headers?: Record<string, string>;\n\n /**\n * Creates a new Anthropic provider instance.\n */\n constructor(options: AnthropicProviderSettings = {}) {\n this.baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n this.apiKey = options.apiKey;\n this.headers = options.headers;\n }\n\n private get baseConfig() {\n return {\n baseURL: this.baseURL,\n headers: () => ({\n 'anthropic-version': '2023-06-01',\n 'anthropic-beta': 'tools-2024-04-04',\n 'x-api-key': loadApiKey({\n apiKey: this.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...this.headers,\n }),\n };\n }\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return this.chat(modelId, settings);\n }\n\n chat(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n ...this.baseConfig,\n });\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\ntype AnthropicMessagesConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: typeof fetch;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'tool';\n\n readonly modelId: AnthropicMessagesModelId;\n readonly settings: AnthropicMessagesSettings;\n\n private readonly config: AnthropicMessagesConfig;\n\n constructor(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings,\n config: AnthropicMessagesConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n const messagesPrompt = await convertToAnthropicMessagesPrompt({ prompt });\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n top_k: this.settings.topK,\n\n // standardized settings:\n max_tokens: maxTokens ?? 4096, // 4096: max model output tokens\n temperature,\n top_p: topP,\n\n // prompt:\n system: messagesPrompt.system,\n messages: messagesPrompt.messages,\n };\n\n switch (type) {\n case 'regular': {\n return {\n args: { ...baseArgs, ...prepareToolsAndToolChoice(mode) },\n warnings,\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n const { name, description, parameters } = mode.tool;\n\n return {\n args: {\n ...baseArgs,\n tools: [{ name, description, input_schema: parameters }],\n tool_choice: { type: 'tool', name },\n },\n warnings,\n };\n }\n\n case 'object-grammar': {\n throw new UnsupportedFunctionalityError({\n functionality: 'grammar-mode object generation',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n anthropicMessagesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n // extract text\n let text = '';\n for (const content of response.content) {\n if (content.type === 'text') {\n text += content.text;\n }\n }\n\n // extract tool calls\n let toolCalls: LanguageModelV1FunctionToolCall[] | undefined = undefined;\n if (response.content.some(content => content.type === 'tool_use')) {\n toolCalls = [];\n for (const content of response.content) {\n if (content.type === 'tool_use') {\n toolCalls.push({\n toolCallType: 'function',\n toolCallId: content.id,\n toolName: content.name,\n args: JSON.stringify(content.input),\n });\n }\n }\n }\n\n return {\n text,\n toolCalls,\n finishReason: mapAnthropicStopReason(response.stop_reason),\n usage: {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n anthropicMessagesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n const usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof anthropicMessagesChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n switch (value.type) {\n case 'ping': {\n return; // ignored\n }\n\n case 'content_block_start': {\n const contentBlockType = value.content_block.type;\n\n switch (contentBlockType) {\n case 'text': {\n return; // ignored\n }\n\n case 'tool_use': {\n toolCallContentBlocks[value.index] = {\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n jsonText: '',\n };\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = contentBlockType;\n throw new Error(\n `Unsupported content block type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'content_block_stop': {\n // when finishing a tool call block, send the full tool call:\n if (toolCallContentBlocks[value.index] != null) {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[value.index];\n }\n\n return;\n }\n\n case 'content_block_delta': {\n const deltaType = value.delta.type;\n switch (deltaType) {\n case 'text_delta': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.delta.text,\n });\n\n return;\n }\n\n case 'input_json_delta': {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: value.delta.partial_json,\n });\n\n contentBlock.jsonText += value.delta.partial_json;\n\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = deltaType;\n throw new Error(\n `Unsupported delta type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'message_start': {\n usage.promptTokens = value.message.usage.input_tokens;\n usage.completionTokens = value.message.usage.output_tokens;\n return;\n }\n\n case 'message_delta': {\n usage.completionTokens = value.usage.output_tokens;\n finishReason = mapAnthropicStopReason(value.delta.stop_reason);\n return;\n }\n\n case 'message_stop': {\n controller.enqueue({ type: 'finish', finishReason, usage });\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = value;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesResponseSchema = z.object({\n type: z.literal('message'),\n content: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.unknown(),\n }),\n ]),\n ),\n stop_reason: z.string().optional().nullable(),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message_start'),\n message: z.object({\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n z.object({\n type: z.literal('content_block_start'),\n index: z.number(),\n content_block: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_delta'),\n index: z.number(),\n delta: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('input_json_delta'),\n partial_json: z.string(),\n }),\n z.object({\n type: z.literal('text_delta'),\n text: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_stop'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message_delta'),\n delta: z.object({ stop_reason: z.string().optional().nullable() }),\n usage: z.object({ output_tokens: z.number() }),\n }),\n z.object({\n type: z.literal('message_stop'),\n }),\n z.object({\n type: z.literal('ping'),\n }),\n]);\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined };\n }\n\n const mappedTools = tools.map(tool => ({\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n }));\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, tool_choice: undefined };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, tool_choice: { type: 'auto' } };\n case 'required':\n return { tools: mappedTools, tool_choice: { type: 'any' } };\n case 'none':\n // Anthropic does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, tool_choice: undefined };\n case 'tool':\n return {\n tools: mappedTools,\n tool_choice: { type: 'tool', name: toolChoice.toolName },\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst anthropicErrorDataSchema = z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n});\n\nexport type AnthropicErrorData = z.infer<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: anthropicErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport {\n AnthropicMessage,\n AnthropicMessagesPrompt,\n AnthropicUserMessage,\n} from './anthropic-messages-prompt';\n\nexport async function convertToAnthropicMessagesPrompt({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<AnthropicMessagesPrompt> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: AnthropicMessage[] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const anthropicContent: AnthropicUserMessage['content'] = [];\n\n for (const { role, content } of block.messages) {\n switch (role) {\n case 'user': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n anthropicContent.push({ type: 'text', text: part.text });\n break;\n }\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n anthropicContent.push({\n type: 'image',\n source: {\n type: 'base64',\n media_type: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n anthropicContent.push({\n type: 'tool_result',\n tool_use_id: part.toolCallId,\n content: JSON.stringify(part.result),\n is_error: part.isError,\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: anthropicContent });\n\n break;\n }\n\n case 'assistant': {\n if (block.messages.length > 1) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple assistant messages in block',\n });\n }\n\n const { content } = block.messages[0];\n\n messages.push({\n role: 'assistant',\n content: content.map((part, j) => {\n switch (part.type) {\n case 'text': {\n // trim the last text part if it's the last message in the block\n // because Anthropic does not allow trailing whitespace\n // in pre-filled assistant responses\n if (\n i === blocks.length - 1 &&\n j === block.messages.length - 1\n ) {\n return { type: 'text', text: part.text.trim() };\n }\n\n return { type: 'text', text: part.text };\n }\n case 'tool-call': {\n return {\n type: 'tool_use',\n id: part.toolCallId,\n name: part.toolName,\n input: part.args,\n };\n }\n }\n }),\n });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapAnthropicStopReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'end_turn':\n case 'stop_sequence':\n return 'stop';\n case 'tool_use':\n return 'tool-calls';\n case 'max_tokens':\n return 'length';\n default:\n return 'other';\n }\n}\n","import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\n\nexport interface AnthropicProvider {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n chat(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n}\n\nexport interface AnthropicProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\n@deprecated Use `baseURL` instead.\n */\n baseUrl?: string;\n\n /**\nAPI key that is being send using the `x-api-key` header.\nIt defaults to the `ANTHROPIC_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate an Anthropic provider instance.\n */\nexport function createAnthropic(\n options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n\n const getHeaders = () => ({\n 'anthropic-version': '2023-06-01',\n 'x-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) =>\n new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n return provider as AnthropicProvider;\n}\n\n/**\nDefault Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n"],"mappings":"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","names":["import_provider_utils","import_provider","import_provider_utils","import_zod","import_provider_utils","import_provider_utils"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/anthropic-facade.ts","../src/anthropic-messages-language-model.ts","../src/anthropic-error.ts","../src/convert-to-anthropic-messages-prompt.ts","../src/map-anthropic-stop-reason.ts","../src/anthropic-provider.ts"],"sourcesContent":["export * from './anthropic-facade';\nexport * from './anthropic-provider';\n","import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { AnthropicProviderSettings } from './anthropic-provider';\n\n/**\n * @deprecated Use `createAnthropic` instead.\n */\nexport class Anthropic {\n /**\n * Base URL for Anthropic API calls.\n */\n readonly baseURL: string;\n\n readonly apiKey?: string;\n\n readonly headers?: Record<string, string>;\n\n /**\n * Creates a new Anthropic provider instance.\n */\n constructor(options: AnthropicProviderSettings = {}) {\n this.baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n this.apiKey = options.apiKey;\n this.headers = options.headers;\n }\n\n private get baseConfig() {\n return {\n baseURL: this.baseURL,\n headers: () => ({\n 'anthropic-version': '2023-06-01',\n 'anthropic-beta': 'tools-2024-04-04',\n 'x-api-key': loadApiKey({\n apiKey: this.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...this.headers,\n }),\n };\n }\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return this.chat(modelId, settings);\n }\n\n chat(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n ...this.baseConfig,\n });\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\ntype AnthropicMessagesConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: typeof fetch;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'tool';\n\n readonly modelId: AnthropicMessagesModelId;\n readonly settings: AnthropicMessagesSettings;\n\n private readonly config: AnthropicMessagesConfig;\n\n constructor(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings,\n config: AnthropicMessagesConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const messagesPrompt = await convertToAnthropicMessagesPrompt({ prompt });\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n top_k: topK ?? this.settings.topK,\n\n // standardized settings:\n max_tokens: maxTokens ?? 4096, // 4096: max model output tokens\n temperature,\n top_p: topP,\n stop_sequences: stopSequences,\n\n // prompt:\n system: messagesPrompt.system,\n messages: messagesPrompt.messages,\n };\n\n switch (type) {\n case 'regular': {\n return {\n args: { ...baseArgs, ...prepareToolsAndToolChoice(mode) },\n warnings,\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n const { name, description, parameters } = mode.tool;\n\n return {\n args: {\n ...baseArgs,\n tools: [{ name, description, input_schema: parameters }],\n tool_choice: { type: 'tool', name },\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n anthropicMessagesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n // extract text\n let text = '';\n for (const content of response.content) {\n if (content.type === 'text') {\n text += content.text;\n }\n }\n\n // extract tool calls\n let toolCalls: LanguageModelV1FunctionToolCall[] | undefined = undefined;\n if (response.content.some(content => content.type === 'tool_use')) {\n toolCalls = [];\n for (const content of response.content) {\n if (content.type === 'tool_use') {\n toolCalls.push({\n toolCallType: 'function',\n toolCallId: content.id,\n toolName: content.name,\n args: JSON.stringify(content.input),\n });\n }\n }\n }\n\n return {\n text,\n toolCalls,\n finishReason: mapAnthropicStopReason(response.stop_reason),\n usage: {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n anthropicMessagesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n const usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof anthropicMessagesChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n switch (value.type) {\n case 'ping': {\n return; // ignored\n }\n\n case 'content_block_start': {\n const contentBlockType = value.content_block.type;\n\n switch (contentBlockType) {\n case 'text': {\n return; // ignored\n }\n\n case 'tool_use': {\n toolCallContentBlocks[value.index] = {\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n jsonText: '',\n };\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = contentBlockType;\n throw new Error(\n `Unsupported content block type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'content_block_stop': {\n // when finishing a tool call block, send the full tool call:\n if (toolCallContentBlocks[value.index] != null) {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[value.index];\n }\n\n return;\n }\n\n case 'content_block_delta': {\n const deltaType = value.delta.type;\n switch (deltaType) {\n case 'text_delta': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.delta.text,\n });\n\n return;\n }\n\n case 'input_json_delta': {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: value.delta.partial_json,\n });\n\n contentBlock.jsonText += value.delta.partial_json;\n\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = deltaType;\n throw new Error(\n `Unsupported delta type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'message_start': {\n usage.promptTokens = value.message.usage.input_tokens;\n usage.completionTokens = value.message.usage.output_tokens;\n return;\n }\n\n case 'message_delta': {\n usage.completionTokens = value.usage.output_tokens;\n finishReason = mapAnthropicStopReason(value.delta.stop_reason);\n return;\n }\n\n case 'message_stop': {\n controller.enqueue({ type: 'finish', finishReason, usage });\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = value;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesResponseSchema = z.object({\n type: z.literal('message'),\n content: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.unknown(),\n }),\n ]),\n ),\n stop_reason: z.string().optional().nullable(),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message_start'),\n message: z.object({\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n z.object({\n type: z.literal('content_block_start'),\n index: z.number(),\n content_block: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_delta'),\n index: z.number(),\n delta: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('input_json_delta'),\n partial_json: z.string(),\n }),\n z.object({\n type: z.literal('text_delta'),\n text: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_stop'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message_delta'),\n delta: z.object({ stop_reason: z.string().optional().nullable() }),\n usage: z.object({ output_tokens: z.number() }),\n }),\n z.object({\n type: z.literal('message_stop'),\n }),\n z.object({\n type: z.literal('ping'),\n }),\n]);\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined };\n }\n\n const mappedTools = tools.map(tool => ({\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n }));\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, tool_choice: undefined };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, tool_choice: { type: 'auto' } };\n case 'required':\n return { tools: mappedTools, tool_choice: { type: 'any' } };\n case 'none':\n // Anthropic does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, tool_choice: undefined };\n case 'tool':\n return {\n tools: mappedTools,\n tool_choice: { type: 'tool', name: toolChoice.toolName },\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst anthropicErrorDataSchema = z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n});\n\nexport type AnthropicErrorData = z.infer<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: anthropicErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport {\n AnthropicMessage,\n AnthropicMessagesPrompt,\n AnthropicUserMessage,\n} from './anthropic-messages-prompt';\n\nexport async function convertToAnthropicMessagesPrompt({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<AnthropicMessagesPrompt> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: AnthropicMessage[] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const anthropicContent: AnthropicUserMessage['content'] = [];\n\n for (const { role, content } of block.messages) {\n switch (role) {\n case 'user': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n anthropicContent.push({ type: 'text', text: part.text });\n break;\n }\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n anthropicContent.push({\n type: 'image',\n source: {\n type: 'base64',\n media_type: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n anthropicContent.push({\n type: 'tool_result',\n tool_use_id: part.toolCallId,\n content: JSON.stringify(part.result),\n is_error: part.isError,\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: anthropicContent });\n\n break;\n }\n\n case 'assistant': {\n if (block.messages.length > 1) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple assistant messages in block',\n });\n }\n\n const { content } = block.messages[0];\n\n messages.push({\n role: 'assistant',\n content: content.map((part, j) => {\n switch (part.type) {\n case 'text': {\n // trim the last text part if it's the last message in the block\n // because Anthropic does not allow trailing whitespace\n // in pre-filled assistant responses\n if (\n i === blocks.length - 1 &&\n j === block.messages.length - 1\n ) {\n return { type: 'text', text: part.text.trim() };\n }\n\n return { type: 'text', text: part.text };\n }\n case 'tool-call': {\n return {\n type: 'tool_use',\n id: part.toolCallId,\n name: part.toolName,\n input: part.args,\n };\n }\n }\n }),\n });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapAnthropicStopReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'end_turn':\n case 'stop_sequence':\n return 'stop';\n case 'tool_use':\n return 'tool-calls';\n case 'max_tokens':\n return 'length';\n default:\n return 'other';\n }\n}\n","import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\n\nexport interface AnthropicProvider {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n chat(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n}\n\nexport interface AnthropicProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\n@deprecated Use `baseURL` instead.\n */\n baseUrl?: string;\n\n /**\nAPI key that is being send using the `x-api-key` header.\nIt defaults to the `ANTHROPIC_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate an Anthropic provider instance.\n */\nexport function createAnthropic(\n options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n\n const getHeaders = () => ({\n 'anthropic-version': '2023-06-01',\n 'x-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) =>\n new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n return provider as AnthropicProvider;\n}\n\n/**\nDefault Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n"],"mappings":"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","names":["import_provider_utils","import_provider","import_provider_utils","import_zod","import_provider_utils","import_provider_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -231,8 +231,11 @@ var AnthropicMessagesLanguageModel = class {
|
|
|
231
231
|
maxTokens,
|
|
232
232
|
temperature,
|
|
233
233
|
topP,
|
|
234
|
+
topK,
|
|
234
235
|
frequencyPenalty,
|
|
235
236
|
presencePenalty,
|
|
237
|
+
stopSequences,
|
|
238
|
+
responseFormat,
|
|
236
239
|
seed
|
|
237
240
|
}) {
|
|
238
241
|
const type = mode.type;
|
|
@@ -255,17 +258,25 @@ var AnthropicMessagesLanguageModel = class {
|
|
|
255
258
|
setting: "seed"
|
|
256
259
|
});
|
|
257
260
|
}
|
|
261
|
+
if (responseFormat != null && responseFormat.type !== "text") {
|
|
262
|
+
warnings.push({
|
|
263
|
+
type: "unsupported-setting",
|
|
264
|
+
setting: "responseFormat",
|
|
265
|
+
details: "JSON response format is not supported."
|
|
266
|
+
});
|
|
267
|
+
}
|
|
258
268
|
const messagesPrompt = await convertToAnthropicMessagesPrompt({ prompt });
|
|
259
269
|
const baseArgs = {
|
|
260
270
|
// model id:
|
|
261
271
|
model: this.modelId,
|
|
262
272
|
// model specific settings:
|
|
263
|
-
top_k: this.settings.topK,
|
|
273
|
+
top_k: topK != null ? topK : this.settings.topK,
|
|
264
274
|
// standardized settings:
|
|
265
275
|
max_tokens: maxTokens != null ? maxTokens : 4096,
|
|
266
276
|
// 4096: max model output tokens
|
|
267
277
|
temperature,
|
|
268
278
|
top_p: topP,
|
|
279
|
+
stop_sequences: stopSequences,
|
|
269
280
|
// prompt:
|
|
270
281
|
system: messagesPrompt.system,
|
|
271
282
|
messages: messagesPrompt.messages
|
|
@@ -293,11 +304,6 @@ var AnthropicMessagesLanguageModel = class {
|
|
|
293
304
|
warnings
|
|
294
305
|
};
|
|
295
306
|
}
|
|
296
|
-
case "object-grammar": {
|
|
297
|
-
throw new UnsupportedFunctionalityError2({
|
|
298
|
-
functionality: "grammar-mode object generation"
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
307
|
default: {
|
|
302
308
|
const _exhaustiveCheck = type;
|
|
303
309
|
throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/anthropic-facade.ts","../src/anthropic-messages-language-model.ts","../src/anthropic-error.ts","../src/convert-to-anthropic-messages-prompt.ts","../src/map-anthropic-stop-reason.ts","../src/anthropic-provider.ts"],"sourcesContent":["import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { AnthropicProviderSettings } from './anthropic-provider';\n\n/**\n * @deprecated Use `createAnthropic` instead.\n */\nexport class Anthropic {\n /**\n * Base URL for Anthropic API calls.\n */\n readonly baseURL: string;\n\n readonly apiKey?: string;\n\n readonly headers?: Record<string, string>;\n\n /**\n * Creates a new Anthropic provider instance.\n */\n constructor(options: AnthropicProviderSettings = {}) {\n this.baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n this.apiKey = options.apiKey;\n this.headers = options.headers;\n }\n\n private get baseConfig() {\n return {\n baseURL: this.baseURL,\n headers: () => ({\n 'anthropic-version': '2023-06-01',\n 'anthropic-beta': 'tools-2024-04-04',\n 'x-api-key': loadApiKey({\n apiKey: this.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...this.headers,\n }),\n };\n }\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return this.chat(modelId, settings);\n }\n\n chat(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n ...this.baseConfig,\n });\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\ntype AnthropicMessagesConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: typeof fetch;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'tool';\n\n readonly modelId: AnthropicMessagesModelId;\n readonly settings: AnthropicMessagesSettings;\n\n private readonly config: AnthropicMessagesConfig;\n\n constructor(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings,\n config: AnthropicMessagesConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n const messagesPrompt = await convertToAnthropicMessagesPrompt({ prompt });\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n top_k: this.settings.topK,\n\n // standardized settings:\n max_tokens: maxTokens ?? 4096, // 4096: max model output tokens\n temperature,\n top_p: topP,\n\n // prompt:\n system: messagesPrompt.system,\n messages: messagesPrompt.messages,\n };\n\n switch (type) {\n case 'regular': {\n return {\n args: { ...baseArgs, ...prepareToolsAndToolChoice(mode) },\n warnings,\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n const { name, description, parameters } = mode.tool;\n\n return {\n args: {\n ...baseArgs,\n tools: [{ name, description, input_schema: parameters }],\n tool_choice: { type: 'tool', name },\n },\n warnings,\n };\n }\n\n case 'object-grammar': {\n throw new UnsupportedFunctionalityError({\n functionality: 'grammar-mode object generation',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n anthropicMessagesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n // extract text\n let text = '';\n for (const content of response.content) {\n if (content.type === 'text') {\n text += content.text;\n }\n }\n\n // extract tool calls\n let toolCalls: LanguageModelV1FunctionToolCall[] | undefined = undefined;\n if (response.content.some(content => content.type === 'tool_use')) {\n toolCalls = [];\n for (const content of response.content) {\n if (content.type === 'tool_use') {\n toolCalls.push({\n toolCallType: 'function',\n toolCallId: content.id,\n toolName: content.name,\n args: JSON.stringify(content.input),\n });\n }\n }\n }\n\n return {\n text,\n toolCalls,\n finishReason: mapAnthropicStopReason(response.stop_reason),\n usage: {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n anthropicMessagesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n const usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof anthropicMessagesChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n switch (value.type) {\n case 'ping': {\n return; // ignored\n }\n\n case 'content_block_start': {\n const contentBlockType = value.content_block.type;\n\n switch (contentBlockType) {\n case 'text': {\n return; // ignored\n }\n\n case 'tool_use': {\n toolCallContentBlocks[value.index] = {\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n jsonText: '',\n };\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = contentBlockType;\n throw new Error(\n `Unsupported content block type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'content_block_stop': {\n // when finishing a tool call block, send the full tool call:\n if (toolCallContentBlocks[value.index] != null) {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[value.index];\n }\n\n return;\n }\n\n case 'content_block_delta': {\n const deltaType = value.delta.type;\n switch (deltaType) {\n case 'text_delta': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.delta.text,\n });\n\n return;\n }\n\n case 'input_json_delta': {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: value.delta.partial_json,\n });\n\n contentBlock.jsonText += value.delta.partial_json;\n\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = deltaType;\n throw new Error(\n `Unsupported delta type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'message_start': {\n usage.promptTokens = value.message.usage.input_tokens;\n usage.completionTokens = value.message.usage.output_tokens;\n return;\n }\n\n case 'message_delta': {\n usage.completionTokens = value.usage.output_tokens;\n finishReason = mapAnthropicStopReason(value.delta.stop_reason);\n return;\n }\n\n case 'message_stop': {\n controller.enqueue({ type: 'finish', finishReason, usage });\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = value;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesResponseSchema = z.object({\n type: z.literal('message'),\n content: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.unknown(),\n }),\n ]),\n ),\n stop_reason: z.string().optional().nullable(),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message_start'),\n message: z.object({\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n z.object({\n type: z.literal('content_block_start'),\n index: z.number(),\n content_block: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_delta'),\n index: z.number(),\n delta: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('input_json_delta'),\n partial_json: z.string(),\n }),\n z.object({\n type: z.literal('text_delta'),\n text: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_stop'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message_delta'),\n delta: z.object({ stop_reason: z.string().optional().nullable() }),\n usage: z.object({ output_tokens: z.number() }),\n }),\n z.object({\n type: z.literal('message_stop'),\n }),\n z.object({\n type: z.literal('ping'),\n }),\n]);\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined };\n }\n\n const mappedTools = tools.map(tool => ({\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n }));\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, tool_choice: undefined };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, tool_choice: { type: 'auto' } };\n case 'required':\n return { tools: mappedTools, tool_choice: { type: 'any' } };\n case 'none':\n // Anthropic does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, tool_choice: undefined };\n case 'tool':\n return {\n tools: mappedTools,\n tool_choice: { type: 'tool', name: toolChoice.toolName },\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst anthropicErrorDataSchema = z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n});\n\nexport type AnthropicErrorData = z.infer<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: anthropicErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport {\n AnthropicMessage,\n AnthropicMessagesPrompt,\n AnthropicUserMessage,\n} from './anthropic-messages-prompt';\n\nexport async function convertToAnthropicMessagesPrompt({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<AnthropicMessagesPrompt> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: AnthropicMessage[] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const anthropicContent: AnthropicUserMessage['content'] = [];\n\n for (const { role, content } of block.messages) {\n switch (role) {\n case 'user': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n anthropicContent.push({ type: 'text', text: part.text });\n break;\n }\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n anthropicContent.push({\n type: 'image',\n source: {\n type: 'base64',\n media_type: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n anthropicContent.push({\n type: 'tool_result',\n tool_use_id: part.toolCallId,\n content: JSON.stringify(part.result),\n is_error: part.isError,\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: anthropicContent });\n\n break;\n }\n\n case 'assistant': {\n if (block.messages.length > 1) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple assistant messages in block',\n });\n }\n\n const { content } = block.messages[0];\n\n messages.push({\n role: 'assistant',\n content: content.map((part, j) => {\n switch (part.type) {\n case 'text': {\n // trim the last text part if it's the last message in the block\n // because Anthropic does not allow trailing whitespace\n // in pre-filled assistant responses\n if (\n i === blocks.length - 1 &&\n j === block.messages.length - 1\n ) {\n return { type: 'text', text: part.text.trim() };\n }\n\n return { type: 'text', text: part.text };\n }\n case 'tool-call': {\n return {\n type: 'tool_use',\n id: part.toolCallId,\n name: part.toolName,\n input: part.args,\n };\n }\n }\n }),\n });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapAnthropicStopReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'end_turn':\n case 'stop_sequence':\n return 'stop';\n case 'tool_use':\n return 'tool-calls';\n case 'max_tokens':\n return 'length';\n default:\n return 'other';\n }\n}\n","import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\n\nexport interface AnthropicProvider {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n chat(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n}\n\nexport interface AnthropicProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\n@deprecated Use `baseURL` instead.\n */\n baseUrl?: string;\n\n /**\nAPI key that is being send using the `x-api-key` header.\nIt defaults to the `ANTHROPIC_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate an Anthropic provider instance.\n */\nexport function createAnthropic(\n options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n\n const getHeaders = () => ({\n 'anthropic-version': '2023-06-01',\n 'x-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) =>\n new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n return provider as AnthropicProvider;\n}\n\n/**\nDefault Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n"],"mappings":"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","names":["UnsupportedFunctionalityError","z","UnsupportedFunctionalityError","z","loadApiKey","withoutTrailingSlash","withoutTrailingSlash","loadApiKey"]}
|
|
1
|
+
{"version":3,"sources":["../src/anthropic-facade.ts","../src/anthropic-messages-language-model.ts","../src/anthropic-error.ts","../src/convert-to-anthropic-messages-prompt.ts","../src/map-anthropic-stop-reason.ts","../src/anthropic-provider.ts"],"sourcesContent":["import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { AnthropicProviderSettings } from './anthropic-provider';\n\n/**\n * @deprecated Use `createAnthropic` instead.\n */\nexport class Anthropic {\n /**\n * Base URL for Anthropic API calls.\n */\n readonly baseURL: string;\n\n readonly apiKey?: string;\n\n readonly headers?: Record<string, string>;\n\n /**\n * Creates a new Anthropic provider instance.\n */\n constructor(options: AnthropicProviderSettings = {}) {\n this.baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n this.apiKey = options.apiKey;\n this.headers = options.headers;\n }\n\n private get baseConfig() {\n return {\n baseURL: this.baseURL,\n headers: () => ({\n 'anthropic-version': '2023-06-01',\n 'anthropic-beta': 'tools-2024-04-04',\n 'x-api-key': loadApiKey({\n apiKey: this.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...this.headers,\n }),\n };\n }\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return this.chat(modelId, settings);\n }\n\n chat(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) {\n return new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n ...this.baseConfig,\n });\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\ntype AnthropicMessagesConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: typeof fetch;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'tool';\n\n readonly modelId: AnthropicMessagesModelId;\n readonly settings: AnthropicMessagesSettings;\n\n private readonly config: AnthropicMessagesConfig;\n\n constructor(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings,\n config: AnthropicMessagesConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const messagesPrompt = await convertToAnthropicMessagesPrompt({ prompt });\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n top_k: topK ?? this.settings.topK,\n\n // standardized settings:\n max_tokens: maxTokens ?? 4096, // 4096: max model output tokens\n temperature,\n top_p: topP,\n stop_sequences: stopSequences,\n\n // prompt:\n system: messagesPrompt.system,\n messages: messagesPrompt.messages,\n };\n\n switch (type) {\n case 'regular': {\n return {\n args: { ...baseArgs, ...prepareToolsAndToolChoice(mode) },\n warnings,\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n const { name, description, parameters } = mode.tool;\n\n return {\n args: {\n ...baseArgs,\n tools: [{ name, description, input_schema: parameters }],\n tool_choice: { type: 'tool', name },\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n anthropicMessagesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n // extract text\n let text = '';\n for (const content of response.content) {\n if (content.type === 'text') {\n text += content.text;\n }\n }\n\n // extract tool calls\n let toolCalls: LanguageModelV1FunctionToolCall[] | undefined = undefined;\n if (response.content.some(content => content.type === 'tool_use')) {\n toolCalls = [];\n for (const content of response.content) {\n if (content.type === 'tool_use') {\n toolCalls.push({\n toolCallType: 'function',\n toolCallId: content.id,\n toolName: content.name,\n args: JSON.stringify(content.input),\n });\n }\n }\n }\n\n return {\n text,\n toolCalls,\n finishReason: mapAnthropicStopReason(response.stop_reason),\n usage: {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/messages`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n anthropicMessagesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n const usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof anthropicMessagesChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n switch (value.type) {\n case 'ping': {\n return; // ignored\n }\n\n case 'content_block_start': {\n const contentBlockType = value.content_block.type;\n\n switch (contentBlockType) {\n case 'text': {\n return; // ignored\n }\n\n case 'tool_use': {\n toolCallContentBlocks[value.index] = {\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n jsonText: '',\n };\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = contentBlockType;\n throw new Error(\n `Unsupported content block type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'content_block_stop': {\n // when finishing a tool call block, send the full tool call:\n if (toolCallContentBlocks[value.index] != null) {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[value.index];\n }\n\n return;\n }\n\n case 'content_block_delta': {\n const deltaType = value.delta.type;\n switch (deltaType) {\n case 'text_delta': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.delta.text,\n });\n\n return;\n }\n\n case 'input_json_delta': {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: value.delta.partial_json,\n });\n\n contentBlock.jsonText += value.delta.partial_json;\n\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = deltaType;\n throw new Error(\n `Unsupported delta type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'message_start': {\n usage.promptTokens = value.message.usage.input_tokens;\n usage.completionTokens = value.message.usage.output_tokens;\n return;\n }\n\n case 'message_delta': {\n usage.completionTokens = value.usage.output_tokens;\n finishReason = mapAnthropicStopReason(value.delta.stop_reason);\n return;\n }\n\n case 'message_stop': {\n controller.enqueue({ type: 'finish', finishReason, usage });\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = value;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesResponseSchema = z.object({\n type: z.literal('message'),\n content: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.unknown(),\n }),\n ]),\n ),\n stop_reason: z.string().optional().nullable(),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message_start'),\n message: z.object({\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n z.object({\n type: z.literal('content_block_start'),\n index: z.number(),\n content_block: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_delta'),\n index: z.number(),\n delta: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('input_json_delta'),\n partial_json: z.string(),\n }),\n z.object({\n type: z.literal('text_delta'),\n text: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_stop'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message_delta'),\n delta: z.object({ stop_reason: z.string().optional().nullable() }),\n usage: z.object({ output_tokens: z.number() }),\n }),\n z.object({\n type: z.literal('message_stop'),\n }),\n z.object({\n type: z.literal('ping'),\n }),\n]);\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined };\n }\n\n const mappedTools = tools.map(tool => ({\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n }));\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, tool_choice: undefined };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, tool_choice: { type: 'auto' } };\n case 'required':\n return { tools: mappedTools, tool_choice: { type: 'any' } };\n case 'none':\n // Anthropic does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, tool_choice: undefined };\n case 'tool':\n return {\n tools: mappedTools,\n tool_choice: { type: 'tool', name: toolChoice.toolName },\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst anthropicErrorDataSchema = z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n});\n\nexport type AnthropicErrorData = z.infer<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: anthropicErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport {\n AnthropicMessage,\n AnthropicMessagesPrompt,\n AnthropicUserMessage,\n} from './anthropic-messages-prompt';\n\nexport async function convertToAnthropicMessagesPrompt({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<AnthropicMessagesPrompt> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: AnthropicMessage[] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const anthropicContent: AnthropicUserMessage['content'] = [];\n\n for (const { role, content } of block.messages) {\n switch (role) {\n case 'user': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n anthropicContent.push({ type: 'text', text: part.text });\n break;\n }\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n anthropicContent.push({\n type: 'image',\n source: {\n type: 'base64',\n media_type: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n anthropicContent.push({\n type: 'tool_result',\n tool_use_id: part.toolCallId,\n content: JSON.stringify(part.result),\n is_error: part.isError,\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: anthropicContent });\n\n break;\n }\n\n case 'assistant': {\n if (block.messages.length > 1) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple assistant messages in block',\n });\n }\n\n const { content } = block.messages[0];\n\n messages.push({\n role: 'assistant',\n content: content.map((part, j) => {\n switch (part.type) {\n case 'text': {\n // trim the last text part if it's the last message in the block\n // because Anthropic does not allow trailing whitespace\n // in pre-filled assistant responses\n if (\n i === blocks.length - 1 &&\n j === block.messages.length - 1\n ) {\n return { type: 'text', text: part.text.trim() };\n }\n\n return { type: 'text', text: part.text };\n }\n case 'tool-call': {\n return {\n type: 'tool_use',\n id: part.toolCallId,\n name: part.toolName,\n input: part.args,\n };\n }\n }\n }),\n });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push({ role, content });\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapAnthropicStopReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'end_turn':\n case 'stop_sequence':\n return 'stop';\n case 'tool_use':\n return 'tool-calls';\n case 'max_tokens':\n return 'length';\n default:\n return 'other';\n }\n}\n","import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\n\nexport interface AnthropicProvider {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n chat(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n\n /**\n * @deprecated Use `chat()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): AnthropicMessagesLanguageModel;\n}\n\nexport interface AnthropicProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\n@deprecated Use `baseURL` instead.\n */\n baseUrl?: string;\n\n /**\nAPI key that is being send using the `x-api-key` header.\nIt defaults to the `ANTHROPIC_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate an Anthropic provider instance.\n */\nexport function createAnthropic(\n options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://api.anthropic.com/v1';\n\n const getHeaders = () => ({\n 'anthropic-version': '2023-06-01',\n 'x-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) =>\n new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n return provider as AnthropicProvider;\n}\n\n/**\nDefault Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n"],"mappings":"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","names":["UnsupportedFunctionalityError","z","UnsupportedFunctionalityError","z","loadApiKey","withoutTrailingSlash","withoutTrailingSlash","loadApiKey"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/anthropic",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.32",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@ai-sdk/provider": "0.0.
|
|
22
|
-
"@ai-sdk/provider-utils": "1.0.
|
|
21
|
+
"@ai-sdk/provider": "0.0.13",
|
|
22
|
+
"@ai-sdk/provider-utils": "1.0.4"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^18",
|