@ai-sdk/cohere 2.0.0-beta.1 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/index.js +106 -106
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @ai-sdk/cohere
|
|
2
2
|
|
|
3
|
+
## 2.0.0-beta.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d1a034f: feature: using Zod 4 for internal stuff
|
|
8
|
+
- Updated dependencies [0571b98]
|
|
9
|
+
- Updated dependencies [39a4fab]
|
|
10
|
+
- Updated dependencies [d1a034f]
|
|
11
|
+
- @ai-sdk/provider-utils@3.0.0-beta.2
|
|
12
|
+
|
|
3
13
|
## 2.0.0-beta.1
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -31,13 +31,13 @@ var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
|
31
31
|
|
|
32
32
|
// src/cohere-chat-language-model.ts
|
|
33
33
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
34
|
-
var
|
|
34
|
+
var import_v42 = require("zod/v4");
|
|
35
35
|
|
|
36
36
|
// src/cohere-error.ts
|
|
37
37
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
38
|
-
var
|
|
39
|
-
var cohereErrorDataSchema =
|
|
40
|
-
message:
|
|
38
|
+
var import_v4 = require("zod/v4");
|
|
39
|
+
var cohereErrorDataSchema = import_v4.z.object({
|
|
40
|
+
message: import_v4.z.string()
|
|
41
41
|
});
|
|
42
42
|
var cohereFailedResponseHandler = (0, import_provider_utils.createJsonErrorResponseHandler)({
|
|
43
43
|
errorSchema: cohereErrorDataSchema,
|
|
@@ -512,120 +512,120 @@ var CohereChatLanguageModel = class {
|
|
|
512
512
|
};
|
|
513
513
|
}
|
|
514
514
|
};
|
|
515
|
-
var cohereChatResponseSchema =
|
|
516
|
-
generation_id:
|
|
517
|
-
message:
|
|
518
|
-
role:
|
|
519
|
-
content:
|
|
520
|
-
|
|
521
|
-
type:
|
|
522
|
-
text:
|
|
515
|
+
var cohereChatResponseSchema = import_v42.z.object({
|
|
516
|
+
generation_id: import_v42.z.string().nullish(),
|
|
517
|
+
message: import_v42.z.object({
|
|
518
|
+
role: import_v42.z.string(),
|
|
519
|
+
content: import_v42.z.array(
|
|
520
|
+
import_v42.z.object({
|
|
521
|
+
type: import_v42.z.string(),
|
|
522
|
+
text: import_v42.z.string()
|
|
523
523
|
})
|
|
524
524
|
).nullish(),
|
|
525
|
-
tool_plan:
|
|
526
|
-
tool_calls:
|
|
527
|
-
|
|
528
|
-
id:
|
|
529
|
-
type:
|
|
530
|
-
function:
|
|
531
|
-
name:
|
|
532
|
-
arguments:
|
|
525
|
+
tool_plan: import_v42.z.string().nullish(),
|
|
526
|
+
tool_calls: import_v42.z.array(
|
|
527
|
+
import_v42.z.object({
|
|
528
|
+
id: import_v42.z.string(),
|
|
529
|
+
type: import_v42.z.literal("function"),
|
|
530
|
+
function: import_v42.z.object({
|
|
531
|
+
name: import_v42.z.string(),
|
|
532
|
+
arguments: import_v42.z.string()
|
|
533
533
|
})
|
|
534
534
|
})
|
|
535
535
|
).nullish(),
|
|
536
|
-
citations:
|
|
537
|
-
|
|
538
|
-
start:
|
|
539
|
-
end:
|
|
540
|
-
text:
|
|
541
|
-
sources:
|
|
542
|
-
|
|
543
|
-
type:
|
|
544
|
-
id:
|
|
545
|
-
document:
|
|
546
|
-
id:
|
|
547
|
-
text:
|
|
548
|
-
title:
|
|
536
|
+
citations: import_v42.z.array(
|
|
537
|
+
import_v42.z.object({
|
|
538
|
+
start: import_v42.z.number(),
|
|
539
|
+
end: import_v42.z.number(),
|
|
540
|
+
text: import_v42.z.string(),
|
|
541
|
+
sources: import_v42.z.array(
|
|
542
|
+
import_v42.z.object({
|
|
543
|
+
type: import_v42.z.string().optional(),
|
|
544
|
+
id: import_v42.z.string().optional(),
|
|
545
|
+
document: import_v42.z.object({
|
|
546
|
+
id: import_v42.z.string().optional(),
|
|
547
|
+
text: import_v42.z.string(),
|
|
548
|
+
title: import_v42.z.string()
|
|
549
549
|
})
|
|
550
550
|
})
|
|
551
551
|
),
|
|
552
|
-
type:
|
|
552
|
+
type: import_v42.z.string().optional()
|
|
553
553
|
})
|
|
554
554
|
).nullish()
|
|
555
555
|
}),
|
|
556
|
-
finish_reason:
|
|
557
|
-
usage:
|
|
558
|
-
billed_units:
|
|
559
|
-
input_tokens:
|
|
560
|
-
output_tokens:
|
|
556
|
+
finish_reason: import_v42.z.string(),
|
|
557
|
+
usage: import_v42.z.object({
|
|
558
|
+
billed_units: import_v42.z.object({
|
|
559
|
+
input_tokens: import_v42.z.number(),
|
|
560
|
+
output_tokens: import_v42.z.number()
|
|
561
561
|
}),
|
|
562
|
-
tokens:
|
|
563
|
-
input_tokens:
|
|
564
|
-
output_tokens:
|
|
562
|
+
tokens: import_v42.z.object({
|
|
563
|
+
input_tokens: import_v42.z.number(),
|
|
564
|
+
output_tokens: import_v42.z.number()
|
|
565
565
|
})
|
|
566
566
|
})
|
|
567
567
|
});
|
|
568
|
-
var cohereChatChunkSchema =
|
|
569
|
-
|
|
570
|
-
type:
|
|
568
|
+
var cohereChatChunkSchema = import_v42.z.discriminatedUnion("type", [
|
|
569
|
+
import_v42.z.object({
|
|
570
|
+
type: import_v42.z.literal("citation-start")
|
|
571
571
|
}),
|
|
572
|
-
|
|
573
|
-
type:
|
|
572
|
+
import_v42.z.object({
|
|
573
|
+
type: import_v42.z.literal("citation-end")
|
|
574
574
|
}),
|
|
575
|
-
|
|
576
|
-
type:
|
|
577
|
-
index:
|
|
575
|
+
import_v42.z.object({
|
|
576
|
+
type: import_v42.z.literal("content-start"),
|
|
577
|
+
index: import_v42.z.number()
|
|
578
578
|
}),
|
|
579
|
-
|
|
580
|
-
type:
|
|
581
|
-
index:
|
|
582
|
-
delta:
|
|
583
|
-
message:
|
|
584
|
-
content:
|
|
585
|
-
text:
|
|
579
|
+
import_v42.z.object({
|
|
580
|
+
type: import_v42.z.literal("content-delta"),
|
|
581
|
+
index: import_v42.z.number(),
|
|
582
|
+
delta: import_v42.z.object({
|
|
583
|
+
message: import_v42.z.object({
|
|
584
|
+
content: import_v42.z.object({
|
|
585
|
+
text: import_v42.z.string()
|
|
586
586
|
})
|
|
587
587
|
})
|
|
588
588
|
})
|
|
589
589
|
}),
|
|
590
|
-
|
|
591
|
-
type:
|
|
592
|
-
index:
|
|
590
|
+
import_v42.z.object({
|
|
591
|
+
type: import_v42.z.literal("content-end"),
|
|
592
|
+
index: import_v42.z.number()
|
|
593
593
|
}),
|
|
594
|
-
|
|
595
|
-
type:
|
|
596
|
-
id:
|
|
594
|
+
import_v42.z.object({
|
|
595
|
+
type: import_v42.z.literal("message-start"),
|
|
596
|
+
id: import_v42.z.string().nullish()
|
|
597
597
|
}),
|
|
598
|
-
|
|
599
|
-
type:
|
|
600
|
-
delta:
|
|
601
|
-
finish_reason:
|
|
602
|
-
usage:
|
|
603
|
-
tokens:
|
|
604
|
-
input_tokens:
|
|
605
|
-
output_tokens:
|
|
598
|
+
import_v42.z.object({
|
|
599
|
+
type: import_v42.z.literal("message-end"),
|
|
600
|
+
delta: import_v42.z.object({
|
|
601
|
+
finish_reason: import_v42.z.string(),
|
|
602
|
+
usage: import_v42.z.object({
|
|
603
|
+
tokens: import_v42.z.object({
|
|
604
|
+
input_tokens: import_v42.z.number(),
|
|
605
|
+
output_tokens: import_v42.z.number()
|
|
606
606
|
})
|
|
607
607
|
})
|
|
608
608
|
})
|
|
609
609
|
}),
|
|
610
610
|
// https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling
|
|
611
|
-
|
|
612
|
-
type:
|
|
613
|
-
delta:
|
|
614
|
-
message:
|
|
615
|
-
tool_plan:
|
|
611
|
+
import_v42.z.object({
|
|
612
|
+
type: import_v42.z.literal("tool-plan-delta"),
|
|
613
|
+
delta: import_v42.z.object({
|
|
614
|
+
message: import_v42.z.object({
|
|
615
|
+
tool_plan: import_v42.z.string()
|
|
616
616
|
})
|
|
617
617
|
})
|
|
618
618
|
}),
|
|
619
|
-
|
|
620
|
-
type:
|
|
621
|
-
delta:
|
|
622
|
-
message:
|
|
623
|
-
tool_calls:
|
|
624
|
-
id:
|
|
625
|
-
type:
|
|
626
|
-
function:
|
|
627
|
-
name:
|
|
628
|
-
arguments:
|
|
619
|
+
import_v42.z.object({
|
|
620
|
+
type: import_v42.z.literal("tool-call-start"),
|
|
621
|
+
delta: import_v42.z.object({
|
|
622
|
+
message: import_v42.z.object({
|
|
623
|
+
tool_calls: import_v42.z.object({
|
|
624
|
+
id: import_v42.z.string(),
|
|
625
|
+
type: import_v42.z.literal("function"),
|
|
626
|
+
function: import_v42.z.object({
|
|
627
|
+
name: import_v42.z.string(),
|
|
628
|
+
arguments: import_v42.z.string()
|
|
629
629
|
})
|
|
630
630
|
})
|
|
631
631
|
})
|
|
@@ -634,31 +634,31 @@ var cohereChatChunkSchema = import_zod2.z.discriminatedUnion("type", [
|
|
|
634
634
|
// A single tool call's `arguments` stream in chunks and must be accumulated
|
|
635
635
|
// in a string and so the full tool object info can only be parsed once we see
|
|
636
636
|
// `tool-call-end`.
|
|
637
|
-
|
|
638
|
-
type:
|
|
639
|
-
delta:
|
|
640
|
-
message:
|
|
641
|
-
tool_calls:
|
|
642
|
-
function:
|
|
643
|
-
arguments:
|
|
637
|
+
import_v42.z.object({
|
|
638
|
+
type: import_v42.z.literal("tool-call-delta"),
|
|
639
|
+
delta: import_v42.z.object({
|
|
640
|
+
message: import_v42.z.object({
|
|
641
|
+
tool_calls: import_v42.z.object({
|
|
642
|
+
function: import_v42.z.object({
|
|
643
|
+
arguments: import_v42.z.string()
|
|
644
644
|
})
|
|
645
645
|
})
|
|
646
646
|
})
|
|
647
647
|
})
|
|
648
648
|
}),
|
|
649
|
-
|
|
650
|
-
type:
|
|
649
|
+
import_v42.z.object({
|
|
650
|
+
type: import_v42.z.literal("tool-call-end")
|
|
651
651
|
})
|
|
652
652
|
]);
|
|
653
653
|
|
|
654
654
|
// src/cohere-embedding-model.ts
|
|
655
655
|
var import_provider3 = require("@ai-sdk/provider");
|
|
656
656
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
657
|
-
var
|
|
657
|
+
var import_v44 = require("zod/v4");
|
|
658
658
|
|
|
659
659
|
// src/cohere-embedding-options.ts
|
|
660
|
-
var
|
|
661
|
-
var cohereEmbeddingOptions =
|
|
660
|
+
var import_v43 = require("zod/v4");
|
|
661
|
+
var cohereEmbeddingOptions = import_v43.z.object({
|
|
662
662
|
/**
|
|
663
663
|
* Specifies the type of input passed to the model. Default is `search_query`.
|
|
664
664
|
*
|
|
@@ -667,7 +667,7 @@ var cohereEmbeddingOptions = import_zod3.z.object({
|
|
|
667
667
|
* - "classification": Used for embeddings passed through a text classifier.
|
|
668
668
|
* - "clustering": Used for embeddings run through a clustering algorithm.
|
|
669
669
|
*/
|
|
670
|
-
inputType:
|
|
670
|
+
inputType: import_v43.z.enum(["search_document", "search_query", "classification", "clustering"]).optional(),
|
|
671
671
|
/**
|
|
672
672
|
* Specifies how the API will handle inputs longer than the maximum token length.
|
|
673
673
|
* Default is `END`.
|
|
@@ -676,7 +676,7 @@ var cohereEmbeddingOptions = import_zod3.z.object({
|
|
|
676
676
|
* - "START": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.
|
|
677
677
|
* - "END": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.
|
|
678
678
|
*/
|
|
679
|
-
truncate:
|
|
679
|
+
truncate: import_v43.z.enum(["NONE", "START", "END"]).optional()
|
|
680
680
|
});
|
|
681
681
|
|
|
682
682
|
// src/cohere-embedding-model.ts
|
|
@@ -742,13 +742,13 @@ var CohereEmbeddingModel = class {
|
|
|
742
742
|
};
|
|
743
743
|
}
|
|
744
744
|
};
|
|
745
|
-
var cohereTextEmbeddingResponseSchema =
|
|
746
|
-
embeddings:
|
|
747
|
-
float:
|
|
745
|
+
var cohereTextEmbeddingResponseSchema = import_v44.z.object({
|
|
746
|
+
embeddings: import_v44.z.object({
|
|
747
|
+
float: import_v44.z.array(import_v44.z.array(import_v44.z.number()))
|
|
748
748
|
}),
|
|
749
|
-
meta:
|
|
750
|
-
billed_units:
|
|
751
|
-
input_tokens:
|
|
749
|
+
meta: import_v44.z.object({
|
|
750
|
+
billed_units: import_v44.z.object({
|
|
751
|
+
input_tokens: import_v44.z.number()
|
|
752
752
|
})
|
|
753
753
|
})
|
|
754
754
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/cohere-provider.ts","../src/cohere-chat-language-model.ts","../src/cohere-error.ts","../src/convert-to-cohere-chat-prompt.ts","../src/map-cohere-finish-reason.ts","../src/cohere-prepare-tools.ts","../src/cohere-embedding-model.ts","../src/cohere-embedding-options.ts"],"sourcesContent":["export { cohere, createCohere } from './cohere-provider';\nexport type { CohereProvider, CohereProviderSettings } from './cohere-provider';\n","import {\n EmbeddingModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { CohereEmbeddingModel } from './cohere-embedding-model';\nimport { CohereEmbeddingModelId } from './cohere-embedding-options';\n\nexport interface CohereProvider extends ProviderV2 {\n (modelId: CohereChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: CohereChatModelId): LanguageModelV2;\n\n embedding(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbeddingModel(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n}\n\nexport interface CohereProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.cohere.com/v2`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `Authorization` header.\nIt defaults to the `COHERE_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?: FetchFunction;\n\n /**\nOptional function to generate a unique ID for each request.\n */\n generateId?: () => string;\n}\n\n/**\nCreate a Cohere AI provider instance.\n */\nexport function createCohere(\n options: CohereProviderSettings = {},\n): CohereProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.cohere.com/v2';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COHERE_API_KEY',\n description: 'Cohere',\n })}`,\n ...options.headers,\n });\n\n const createChatModel = (modelId: CohereChatModelId) =>\n new CohereChatLanguageModel(modelId, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n\n const createTextEmbeddingModel = (modelId: CohereEmbeddingModelId) =>\n new CohereEmbeddingModel(modelId, {\n provider: 'cohere.textEmbedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: CohereChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Cohere model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.embedding = createTextEmbeddingModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\nimport { prepareTools } from './cohere-prepare-tools';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: CohereChatModelId;\n\n readonly supportedUrls = {\n // No URLs are supported.\n };\n\n private readonly config: CohereChatConfig;\n\n constructor(modelId: CohereChatModelId, config: CohereChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const {\n messages: chatPrompt,\n documents: cohereDocuments,\n warnings: promptWarnings,\n } = convertToCohereChatPrompt(prompt);\n\n const {\n tools: cohereTools,\n toolChoice: cohereToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxOutputTokens,\n temperature,\n p: topP,\n k: topK,\n seed,\n stop_sequences: stopSequences,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? { type: 'json_object', json_schema: responseFormat.schema }\n : undefined,\n\n // messages:\n messages: chatPrompt,\n\n // tools:\n tools: cohereTools,\n tool_choice: cohereToolChoice,\n\n // documents for RAG:\n ...(cohereDocuments.length > 0 && { documents: cohereDocuments }),\n },\n warnings: [...toolWarnings, ...promptWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n if (\n response.message.content?.[0]?.text != null &&\n response.message.content?.[0]?.text.length > 0\n ) {\n content.push({ type: 'text', text: response.message.content[0].text });\n }\n\n // citations:\n for (const citation of response.message.citations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId(),\n mediaType: 'text/plain',\n title: citation.sources[0]?.document?.title || 'Document',\n providerMetadata: {\n cohere: {\n start: citation.start,\n end: citation.end,\n text: citation.text,\n sources: citation.sources,\n ...(citation.type && { citationType: citation.type }),\n },\n },\n });\n }\n\n // tool calls:\n for (const toolCall of response.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n // Cohere sometimes returns `null` for tool call arguments for tools\n // defined as having no arguments.\n input: toolCall.function.arguments.replace(/^null$/, '{}'),\n });\n }\n\n return {\n content,\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n inputTokens: response.usage.tokens.input_tokens,\n outputTokens: response.usage.tokens.output_tokens,\n totalTokens:\n response.usage.tokens.input_tokens +\n response.usage.tokens.output_tokens,\n },\n request: { body: args },\n response: {\n // TODO timestamp, model id\n id: response.generation_id ?? undefined,\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n let pendingToolCall: {\n id: string;\n name: string;\n arguments: string;\n hasFinished: boolean;\n } | null = null;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n const type = value.type;\n\n switch (type) {\n case 'content-start': {\n controller.enqueue({\n type: 'text-start',\n id: String(value.index),\n });\n return;\n }\n\n case 'content-delta': {\n controller.enqueue({\n type: 'text-delta',\n id: String(value.index),\n delta: value.delta.message.content.text,\n });\n return;\n }\n\n case 'content-end': {\n controller.enqueue({\n type: 'text-end',\n id: String(value.index),\n });\n return;\n }\n\n case 'tool-call-start': {\n const toolId = value.delta.message.tool_calls.id;\n const toolName = value.delta.message.tool_calls.function.name;\n const initialArgs =\n value.delta.message.tool_calls.function.arguments;\n\n pendingToolCall = {\n id: toolId,\n name: toolName,\n arguments: initialArgs,\n hasFinished: false,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolId,\n toolName,\n });\n\n if (initialArgs.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolId,\n delta: initialArgs,\n });\n }\n return;\n }\n\n case 'tool-call-delta': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n const argsDelta =\n value.delta.message.tool_calls.function.arguments;\n pendingToolCall.arguments += argsDelta;\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: pendingToolCall.id,\n delta: argsDelta,\n });\n }\n return;\n }\n\n case 'tool-call-end': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n controller.enqueue({\n type: 'tool-input-end',\n id: pendingToolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: pendingToolCall.id,\n toolName: pendingToolCall.name,\n input: JSON.stringify(\n JSON.parse(pendingToolCall.arguments?.trim() || '{}'),\n ),\n });\n\n pendingToolCall.hasFinished = true;\n pendingToolCall = null;\n }\n return;\n }\n\n case 'message-start': {\n controller.enqueue({\n type: 'response-metadata',\n id: value.id ?? undefined,\n });\n return;\n }\n\n case 'message-end': {\n finishReason = mapCohereFinishReason(value.delta.finish_reason);\n const tokens = value.delta.usage.tokens;\n\n usage.inputTokens = tokens.input_tokens;\n usage.outputTokens = tokens.output_tokens;\n usage.totalTokens = tokens.input_tokens + tokens.output_tokens;\n return;\n }\n\n default: {\n return;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n }),\n ),\n request: { body: { ...args, stream: true } },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst cohereChatResponseSchema = z.object({\n generation_id: z.string().nullish(),\n message: z.object({\n role: z.string(),\n content: z\n .array(\n z.object({\n type: z.string(),\n text: z.string(),\n }),\n )\n .nullish(),\n tool_plan: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n citations: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n sources: z.array(\n z.object({\n type: z.string().optional(),\n id: z.string().optional(),\n document: z.object({\n id: z.string().optional(),\n text: z.string(),\n title: z.string(),\n }),\n }),\n ),\n type: z.string().optional(),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string(),\n usage: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\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 cohereChatChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('citation-start'),\n }),\n z.object({\n type: z.literal('citation-end'),\n }),\n z.object({\n type: z.literal('content-start'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('content-delta'),\n index: z.number(),\n delta: z.object({\n message: z.object({\n content: z.object({\n text: z.string(),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('content-end'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message-start'),\n id: z.string().nullish(),\n }),\n z.object({\n type: z.literal('message-end'),\n delta: z.object({\n finish_reason: z.string(),\n usage: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling\n z.object({\n type: z.literal('tool-plan-delta'),\n delta: z.object({\n message: z.object({\n tool_plan: z.string(),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-start'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n // A single tool call's `arguments` stream in chunks and must be accumulated\n // in a string and so the full tool object info can only be parsed once we see\n // `tool-call-end`.\n z.object({\n type: z.literal('tool-call-delta'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n function: z.object({\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-end'),\n }),\n]);\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst cohereErrorDataSchema = z.object({\n message: z.string(),\n});\n\nexport type CohereErrorData = z.infer<typeof cohereErrorDataSchema>;\n\nexport const cohereFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: cohereErrorDataSchema,\n errorToMessage: data => data.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereAssistantMessage, CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(prompt: LanguageModelV2Prompt): {\n messages: CohereChatPrompt;\n documents: Array<{\n data: { text: string; title?: string };\n }>;\n warnings: LanguageModelV2CallWarning[];\n} {\n const messages: CohereChatPrompt = [];\n const documents: Array<{ data: { text: string; title?: string } }> = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'file': {\n // Extract documents for RAG\n let textContent: string;\n\n if (typeof part.data === 'string') {\n // Base64 or text data\n textContent = part.data;\n } else if (part.data instanceof Uint8Array) {\n // Check if the media type is supported for text extraction\n if (\n !(\n part.mediaType?.startsWith('text/') ||\n part.mediaType === 'application/json'\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `document media type: ${part.mediaType}`,\n message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`,\n });\n }\n textContent = new TextDecoder().decode(part.data);\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n message:\n 'URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue.',\n });\n }\n\n documents.push({\n data: {\n text: textContent,\n title: part.filename,\n },\n });\n\n // Files are handled separately via the documents parameter\n // Return empty string to not include file content in message text\n return '';\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: CohereAssistantMessage['tool_calls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function' as const,\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? undefined : text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n tool_plan: undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push(\n ...content.map(toolResult => {\n const output = toolResult.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n return {\n role: 'tool' as const,\n content: contentValue,\n tool_call_id: toolResult.toolCallId,\n };\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 return { messages, documents, warnings };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'COMPLETE':\n case 'STOP_SEQUENCE':\n return 'stop';\n\n case 'MAX_TOKENS':\n return 'length';\n\n case 'ERROR':\n return 'error';\n\n case 'TOOL_CALL':\n return 'tool-calls';\n\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereToolChoice } from './cohere-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string | undefined;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: CohereToolChoice;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const cohereTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n cohereTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n\n case 'none':\n return { tools: cohereTools, toolChoice: 'NONE', toolWarnings };\n\n case 'required':\n return { tools: cohereTools, toolChoice: 'REQUIRED', toolWarnings };\n\n case 'tool':\n return {\n tools: cohereTools.filter(\n tool => tool.function.name === toolChoice.toolName,\n ),\n toolChoice: 'REQUIRED',\n toolWarnings,\n };\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereEmbeddingModelId,\n cohereEmbeddingOptions,\n} from './cohere-embedding-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\n\ntype CohereEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class CohereEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: CohereEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 96;\n readonly supportsParallelCalls = true;\n\n private readonly config: CohereEmbeddingConfig;\n\n constructor(modelId: CohereEmbeddingModelId, config: CohereEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'cohere',\n providerOptions,\n schema: cohereEmbeddingOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n // The AI SDK only supports 'float' embeddings which are also the only ones\n // the Cohere API docs state are supported for all models.\n // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types\n embedding_types: ['float'],\n texts: values,\n input_type: embeddingOptions?.inputType ?? 'search_query',\n truncate: embeddingOptions?.truncate,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.embeddings.float,\n usage: { tokens: response.meta.billed_units.input_tokens },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal 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 cohereTextEmbeddingResponseSchema = z.object({\n embeddings: z.object({\n float: z.array(z.array(z.number())),\n }),\n meta: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n }),\n }),\n});\n","import { z } from 'zod';\n\nexport type CohereEmbeddingModelId =\n | 'embed-english-v3.0'\n | 'embed-multilingual-v3.0'\n | 'embed-english-light-v3.0'\n | 'embed-multilingual-light-v3.0'\n | 'embed-english-v2.0'\n | 'embed-english-light-v2.0'\n | 'embed-multilingual-v2.0'\n | (string & {});\n\nexport const cohereEmbeddingOptions = z.object({\n /**\n * Specifies the type of input passed to the model. Default is `search_query`.\n *\n * - \"search_document\": Used for embeddings stored in a vector database for search use-cases.\n * - \"search_query\": Used for embeddings of search queries run against a vector DB to find relevant documents.\n * - \"classification\": Used for embeddings passed through a text classifier.\n * - \"clustering\": Used for embeddings run through a clustering algorithm.\n */\n inputType: z\n .enum(['search_document', 'search_query', 'classification', 'clustering'])\n .optional(),\n\n /**\n * Specifies how the API will handle inputs longer than the maximum token length.\n * Default is `END`.\n *\n * - \"NONE\": If selected, when the input exceeds the maximum input token length will return an error.\n * - \"START\": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.\n * - \"END\": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.\n */\n truncate: z.enum(['NONE', 'START', 'END']).optional(),\n});\n\nexport type CohereEmbeddingOptions = z.infer<typeof cohereEmbeddingOptions>;\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider_utils","import_zod","import_provider","import_provider","import_provider_utils","import_zod","import_zod","_a"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/cohere-provider.ts","../src/cohere-chat-language-model.ts","../src/cohere-error.ts","../src/convert-to-cohere-chat-prompt.ts","../src/map-cohere-finish-reason.ts","../src/cohere-prepare-tools.ts","../src/cohere-embedding-model.ts","../src/cohere-embedding-options.ts"],"sourcesContent":["export { cohere, createCohere } from './cohere-provider';\nexport type { CohereProvider, CohereProviderSettings } from './cohere-provider';\n","import {\n EmbeddingModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { CohereEmbeddingModel } from './cohere-embedding-model';\nimport { CohereEmbeddingModelId } from './cohere-embedding-options';\n\nexport interface CohereProvider extends ProviderV2 {\n (modelId: CohereChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: CohereChatModelId): LanguageModelV2;\n\n embedding(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbeddingModel(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n}\n\nexport interface CohereProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.cohere.com/v2`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `Authorization` header.\nIt defaults to the `COHERE_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?: FetchFunction;\n\n /**\nOptional function to generate a unique ID for each request.\n */\n generateId?: () => string;\n}\n\n/**\nCreate a Cohere AI provider instance.\n */\nexport function createCohere(\n options: CohereProviderSettings = {},\n): CohereProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.cohere.com/v2';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COHERE_API_KEY',\n description: 'Cohere',\n })}`,\n ...options.headers,\n });\n\n const createChatModel = (modelId: CohereChatModelId) =>\n new CohereChatLanguageModel(modelId, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n\n const createTextEmbeddingModel = (modelId: CohereEmbeddingModelId) =>\n new CohereEmbeddingModel(modelId, {\n provider: 'cohere.textEmbedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: CohereChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Cohere model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.embedding = createTextEmbeddingModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\nimport { prepareTools } from './cohere-prepare-tools';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: CohereChatModelId;\n\n readonly supportedUrls = {\n // No URLs are supported.\n };\n\n private readonly config: CohereChatConfig;\n\n constructor(modelId: CohereChatModelId, config: CohereChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const {\n messages: chatPrompt,\n documents: cohereDocuments,\n warnings: promptWarnings,\n } = convertToCohereChatPrompt(prompt);\n\n const {\n tools: cohereTools,\n toolChoice: cohereToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxOutputTokens,\n temperature,\n p: topP,\n k: topK,\n seed,\n stop_sequences: stopSequences,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? { type: 'json_object', json_schema: responseFormat.schema }\n : undefined,\n\n // messages:\n messages: chatPrompt,\n\n // tools:\n tools: cohereTools,\n tool_choice: cohereToolChoice,\n\n // documents for RAG:\n ...(cohereDocuments.length > 0 && { documents: cohereDocuments }),\n },\n warnings: [...toolWarnings, ...promptWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n if (\n response.message.content?.[0]?.text != null &&\n response.message.content?.[0]?.text.length > 0\n ) {\n content.push({ type: 'text', text: response.message.content[0].text });\n }\n\n // citations:\n for (const citation of response.message.citations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId(),\n mediaType: 'text/plain',\n title: citation.sources[0]?.document?.title || 'Document',\n providerMetadata: {\n cohere: {\n start: citation.start,\n end: citation.end,\n text: citation.text,\n sources: citation.sources,\n ...(citation.type && { citationType: citation.type }),\n },\n },\n });\n }\n\n // tool calls:\n for (const toolCall of response.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n // Cohere sometimes returns `null` for tool call arguments for tools\n // defined as having no arguments.\n input: toolCall.function.arguments.replace(/^null$/, '{}'),\n });\n }\n\n return {\n content,\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n inputTokens: response.usage.tokens.input_tokens,\n outputTokens: response.usage.tokens.output_tokens,\n totalTokens:\n response.usage.tokens.input_tokens +\n response.usage.tokens.output_tokens,\n },\n request: { body: args },\n response: {\n // TODO timestamp, model id\n id: response.generation_id ?? undefined,\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n let pendingToolCall: {\n id: string;\n name: string;\n arguments: string;\n hasFinished: boolean;\n } | null = null;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n const type = value.type;\n\n switch (type) {\n case 'content-start': {\n controller.enqueue({\n type: 'text-start',\n id: String(value.index),\n });\n return;\n }\n\n case 'content-delta': {\n controller.enqueue({\n type: 'text-delta',\n id: String(value.index),\n delta: value.delta.message.content.text,\n });\n return;\n }\n\n case 'content-end': {\n controller.enqueue({\n type: 'text-end',\n id: String(value.index),\n });\n return;\n }\n\n case 'tool-call-start': {\n const toolId = value.delta.message.tool_calls.id;\n const toolName = value.delta.message.tool_calls.function.name;\n const initialArgs =\n value.delta.message.tool_calls.function.arguments;\n\n pendingToolCall = {\n id: toolId,\n name: toolName,\n arguments: initialArgs,\n hasFinished: false,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolId,\n toolName,\n });\n\n if (initialArgs.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolId,\n delta: initialArgs,\n });\n }\n return;\n }\n\n case 'tool-call-delta': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n const argsDelta =\n value.delta.message.tool_calls.function.arguments;\n pendingToolCall.arguments += argsDelta;\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: pendingToolCall.id,\n delta: argsDelta,\n });\n }\n return;\n }\n\n case 'tool-call-end': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n controller.enqueue({\n type: 'tool-input-end',\n id: pendingToolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: pendingToolCall.id,\n toolName: pendingToolCall.name,\n input: JSON.stringify(\n JSON.parse(pendingToolCall.arguments?.trim() || '{}'),\n ),\n });\n\n pendingToolCall.hasFinished = true;\n pendingToolCall = null;\n }\n return;\n }\n\n case 'message-start': {\n controller.enqueue({\n type: 'response-metadata',\n id: value.id ?? undefined,\n });\n return;\n }\n\n case 'message-end': {\n finishReason = mapCohereFinishReason(value.delta.finish_reason);\n const tokens = value.delta.usage.tokens;\n\n usage.inputTokens = tokens.input_tokens;\n usage.outputTokens = tokens.output_tokens;\n usage.totalTokens = tokens.input_tokens + tokens.output_tokens;\n return;\n }\n\n default: {\n return;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n }),\n ),\n request: { body: { ...args, stream: true } },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst cohereChatResponseSchema = z.object({\n generation_id: z.string().nullish(),\n message: z.object({\n role: z.string(),\n content: z\n .array(\n z.object({\n type: z.string(),\n text: z.string(),\n }),\n )\n .nullish(),\n tool_plan: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n citations: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n sources: z.array(\n z.object({\n type: z.string().optional(),\n id: z.string().optional(),\n document: z.object({\n id: z.string().optional(),\n text: z.string(),\n title: z.string(),\n }),\n }),\n ),\n type: z.string().optional(),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string(),\n usage: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\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 cohereChatChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('citation-start'),\n }),\n z.object({\n type: z.literal('citation-end'),\n }),\n z.object({\n type: z.literal('content-start'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('content-delta'),\n index: z.number(),\n delta: z.object({\n message: z.object({\n content: z.object({\n text: z.string(),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('content-end'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message-start'),\n id: z.string().nullish(),\n }),\n z.object({\n type: z.literal('message-end'),\n delta: z.object({\n finish_reason: z.string(),\n usage: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling\n z.object({\n type: z.literal('tool-plan-delta'),\n delta: z.object({\n message: z.object({\n tool_plan: z.string(),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-start'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n // A single tool call's `arguments` stream in chunks and must be accumulated\n // in a string and so the full tool object info can only be parsed once we see\n // `tool-call-end`.\n z.object({\n type: z.literal('tool-call-delta'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n function: z.object({\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-end'),\n }),\n]);\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst cohereErrorDataSchema = z.object({\n message: z.string(),\n});\n\nexport type CohereErrorData = z.infer<typeof cohereErrorDataSchema>;\n\nexport const cohereFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: cohereErrorDataSchema,\n errorToMessage: data => data.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereAssistantMessage, CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(prompt: LanguageModelV2Prompt): {\n messages: CohereChatPrompt;\n documents: Array<{\n data: { text: string; title?: string };\n }>;\n warnings: LanguageModelV2CallWarning[];\n} {\n const messages: CohereChatPrompt = [];\n const documents: Array<{ data: { text: string; title?: string } }> = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'file': {\n // Extract documents for RAG\n let textContent: string;\n\n if (typeof part.data === 'string') {\n // Base64 or text data\n textContent = part.data;\n } else if (part.data instanceof Uint8Array) {\n // Check if the media type is supported for text extraction\n if (\n !(\n part.mediaType?.startsWith('text/') ||\n part.mediaType === 'application/json'\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `document media type: ${part.mediaType}`,\n message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`,\n });\n }\n textContent = new TextDecoder().decode(part.data);\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n message:\n 'URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue.',\n });\n }\n\n documents.push({\n data: {\n text: textContent,\n title: part.filename,\n },\n });\n\n // Files are handled separately via the documents parameter\n // Return empty string to not include file content in message text\n return '';\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: CohereAssistantMessage['tool_calls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function' as const,\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? undefined : text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n tool_plan: undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push(\n ...content.map(toolResult => {\n const output = toolResult.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n return {\n role: 'tool' as const,\n content: contentValue,\n tool_call_id: toolResult.toolCallId,\n };\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 return { messages, documents, warnings };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'COMPLETE':\n case 'STOP_SEQUENCE':\n return 'stop';\n\n case 'MAX_TOKENS':\n return 'length';\n\n case 'ERROR':\n return 'error';\n\n case 'TOOL_CALL':\n return 'tool-calls';\n\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereToolChoice } from './cohere-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string | undefined;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: CohereToolChoice;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const cohereTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n cohereTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n\n case 'none':\n return { tools: cohereTools, toolChoice: 'NONE', toolWarnings };\n\n case 'required':\n return { tools: cohereTools, toolChoice: 'REQUIRED', toolWarnings };\n\n case 'tool':\n return {\n tools: cohereTools.filter(\n tool => tool.function.name === toolChoice.toolName,\n ),\n toolChoice: 'REQUIRED',\n toolWarnings,\n };\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n CohereEmbeddingModelId,\n cohereEmbeddingOptions,\n} from './cohere-embedding-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\n\ntype CohereEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class CohereEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: CohereEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 96;\n readonly supportsParallelCalls = true;\n\n private readonly config: CohereEmbeddingConfig;\n\n constructor(modelId: CohereEmbeddingModelId, config: CohereEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'cohere',\n providerOptions,\n schema: cohereEmbeddingOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n // The AI SDK only supports 'float' embeddings which are also the only ones\n // the Cohere API docs state are supported for all models.\n // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types\n embedding_types: ['float'],\n texts: values,\n input_type: embeddingOptions?.inputType ?? 'search_query',\n truncate: embeddingOptions?.truncate,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.embeddings.float,\n usage: { tokens: response.meta.billed_units.input_tokens },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal 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 cohereTextEmbeddingResponseSchema = z.object({\n embeddings: z.object({\n float: z.array(z.array(z.number())),\n }),\n meta: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n }),\n }),\n});\n","import { z } from 'zod/v4';\n\nexport type CohereEmbeddingModelId =\n | 'embed-english-v3.0'\n | 'embed-multilingual-v3.0'\n | 'embed-english-light-v3.0'\n | 'embed-multilingual-light-v3.0'\n | 'embed-english-v2.0'\n | 'embed-english-light-v2.0'\n | 'embed-multilingual-v2.0'\n | (string & {});\n\nexport const cohereEmbeddingOptions = z.object({\n /**\n * Specifies the type of input passed to the model. Default is `search_query`.\n *\n * - \"search_document\": Used for embeddings stored in a vector database for search use-cases.\n * - \"search_query\": Used for embeddings of search queries run against a vector DB to find relevant documents.\n * - \"classification\": Used for embeddings passed through a text classifier.\n * - \"clustering\": Used for embeddings run through a clustering algorithm.\n */\n inputType: z\n .enum(['search_document', 'search_query', 'classification', 'clustering'])\n .optional(),\n\n /**\n * Specifies how the API will handle inputs longer than the maximum token length.\n * Default is `END`.\n *\n * - \"NONE\": If selected, when the input exceeds the maximum input token length will return an error.\n * - \"START\": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.\n * - \"END\": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.\n */\n truncate: z.enum(['NONE', 'START', 'END']).optional(),\n});\n\nexport type CohereEmbeddingOptions = z.infer<typeof cohereEmbeddingOptions>;\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_provider","import_provider","import_provider_utils","import_v4","import_v4","_a"]}
|
package/dist/index.mjs
CHANGED
|
@@ -15,11 +15,11 @@ import {
|
|
|
15
15
|
createJsonResponseHandler,
|
|
16
16
|
postJsonToApi
|
|
17
17
|
} from "@ai-sdk/provider-utils";
|
|
18
|
-
import { z as z2 } from "zod";
|
|
18
|
+
import { z as z2 } from "zod/v4";
|
|
19
19
|
|
|
20
20
|
// src/cohere-error.ts
|
|
21
21
|
import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
|
|
22
|
-
import { z } from "zod";
|
|
22
|
+
import { z } from "zod/v4";
|
|
23
23
|
var cohereErrorDataSchema = z.object({
|
|
24
24
|
message: z.string()
|
|
25
25
|
});
|
|
@@ -649,10 +649,10 @@ import {
|
|
|
649
649
|
parseProviderOptions,
|
|
650
650
|
postJsonToApi as postJsonToApi2
|
|
651
651
|
} from "@ai-sdk/provider-utils";
|
|
652
|
-
import { z as z4 } from "zod";
|
|
652
|
+
import { z as z4 } from "zod/v4";
|
|
653
653
|
|
|
654
654
|
// src/cohere-embedding-options.ts
|
|
655
|
-
import { z as z3 } from "zod";
|
|
655
|
+
import { z as z3 } from "zod/v4";
|
|
656
656
|
var cohereEmbeddingOptions = z3.object({
|
|
657
657
|
/**
|
|
658
658
|
* Specifies the type of input passed to the model. Default is `search_query`.
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cohere-provider.ts","../src/cohere-chat-language-model.ts","../src/cohere-error.ts","../src/convert-to-cohere-chat-prompt.ts","../src/map-cohere-finish-reason.ts","../src/cohere-prepare-tools.ts","../src/cohere-embedding-model.ts","../src/cohere-embedding-options.ts"],"sourcesContent":["import {\n EmbeddingModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { CohereEmbeddingModel } from './cohere-embedding-model';\nimport { CohereEmbeddingModelId } from './cohere-embedding-options';\n\nexport interface CohereProvider extends ProviderV2 {\n (modelId: CohereChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: CohereChatModelId): LanguageModelV2;\n\n embedding(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbeddingModel(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n}\n\nexport interface CohereProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.cohere.com/v2`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `Authorization` header.\nIt defaults to the `COHERE_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?: FetchFunction;\n\n /**\nOptional function to generate a unique ID for each request.\n */\n generateId?: () => string;\n}\n\n/**\nCreate a Cohere AI provider instance.\n */\nexport function createCohere(\n options: CohereProviderSettings = {},\n): CohereProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.cohere.com/v2';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COHERE_API_KEY',\n description: 'Cohere',\n })}`,\n ...options.headers,\n });\n\n const createChatModel = (modelId: CohereChatModelId) =>\n new CohereChatLanguageModel(modelId, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n\n const createTextEmbeddingModel = (modelId: CohereEmbeddingModelId) =>\n new CohereEmbeddingModel(modelId, {\n provider: 'cohere.textEmbedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: CohereChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Cohere model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.embedding = createTextEmbeddingModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\nimport { prepareTools } from './cohere-prepare-tools';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: CohereChatModelId;\n\n readonly supportedUrls = {\n // No URLs are supported.\n };\n\n private readonly config: CohereChatConfig;\n\n constructor(modelId: CohereChatModelId, config: CohereChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const {\n messages: chatPrompt,\n documents: cohereDocuments,\n warnings: promptWarnings,\n } = convertToCohereChatPrompt(prompt);\n\n const {\n tools: cohereTools,\n toolChoice: cohereToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxOutputTokens,\n temperature,\n p: topP,\n k: topK,\n seed,\n stop_sequences: stopSequences,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? { type: 'json_object', json_schema: responseFormat.schema }\n : undefined,\n\n // messages:\n messages: chatPrompt,\n\n // tools:\n tools: cohereTools,\n tool_choice: cohereToolChoice,\n\n // documents for RAG:\n ...(cohereDocuments.length > 0 && { documents: cohereDocuments }),\n },\n warnings: [...toolWarnings, ...promptWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n if (\n response.message.content?.[0]?.text != null &&\n response.message.content?.[0]?.text.length > 0\n ) {\n content.push({ type: 'text', text: response.message.content[0].text });\n }\n\n // citations:\n for (const citation of response.message.citations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId(),\n mediaType: 'text/plain',\n title: citation.sources[0]?.document?.title || 'Document',\n providerMetadata: {\n cohere: {\n start: citation.start,\n end: citation.end,\n text: citation.text,\n sources: citation.sources,\n ...(citation.type && { citationType: citation.type }),\n },\n },\n });\n }\n\n // tool calls:\n for (const toolCall of response.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n // Cohere sometimes returns `null` for tool call arguments for tools\n // defined as having no arguments.\n input: toolCall.function.arguments.replace(/^null$/, '{}'),\n });\n }\n\n return {\n content,\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n inputTokens: response.usage.tokens.input_tokens,\n outputTokens: response.usage.tokens.output_tokens,\n totalTokens:\n response.usage.tokens.input_tokens +\n response.usage.tokens.output_tokens,\n },\n request: { body: args },\n response: {\n // TODO timestamp, model id\n id: response.generation_id ?? undefined,\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n let pendingToolCall: {\n id: string;\n name: string;\n arguments: string;\n hasFinished: boolean;\n } | null = null;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n const type = value.type;\n\n switch (type) {\n case 'content-start': {\n controller.enqueue({\n type: 'text-start',\n id: String(value.index),\n });\n return;\n }\n\n case 'content-delta': {\n controller.enqueue({\n type: 'text-delta',\n id: String(value.index),\n delta: value.delta.message.content.text,\n });\n return;\n }\n\n case 'content-end': {\n controller.enqueue({\n type: 'text-end',\n id: String(value.index),\n });\n return;\n }\n\n case 'tool-call-start': {\n const toolId = value.delta.message.tool_calls.id;\n const toolName = value.delta.message.tool_calls.function.name;\n const initialArgs =\n value.delta.message.tool_calls.function.arguments;\n\n pendingToolCall = {\n id: toolId,\n name: toolName,\n arguments: initialArgs,\n hasFinished: false,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolId,\n toolName,\n });\n\n if (initialArgs.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolId,\n delta: initialArgs,\n });\n }\n return;\n }\n\n case 'tool-call-delta': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n const argsDelta =\n value.delta.message.tool_calls.function.arguments;\n pendingToolCall.arguments += argsDelta;\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: pendingToolCall.id,\n delta: argsDelta,\n });\n }\n return;\n }\n\n case 'tool-call-end': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n controller.enqueue({\n type: 'tool-input-end',\n id: pendingToolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: pendingToolCall.id,\n toolName: pendingToolCall.name,\n input: JSON.stringify(\n JSON.parse(pendingToolCall.arguments?.trim() || '{}'),\n ),\n });\n\n pendingToolCall.hasFinished = true;\n pendingToolCall = null;\n }\n return;\n }\n\n case 'message-start': {\n controller.enqueue({\n type: 'response-metadata',\n id: value.id ?? undefined,\n });\n return;\n }\n\n case 'message-end': {\n finishReason = mapCohereFinishReason(value.delta.finish_reason);\n const tokens = value.delta.usage.tokens;\n\n usage.inputTokens = tokens.input_tokens;\n usage.outputTokens = tokens.output_tokens;\n usage.totalTokens = tokens.input_tokens + tokens.output_tokens;\n return;\n }\n\n default: {\n return;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n }),\n ),\n request: { body: { ...args, stream: true } },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst cohereChatResponseSchema = z.object({\n generation_id: z.string().nullish(),\n message: z.object({\n role: z.string(),\n content: z\n .array(\n z.object({\n type: z.string(),\n text: z.string(),\n }),\n )\n .nullish(),\n tool_plan: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n citations: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n sources: z.array(\n z.object({\n type: z.string().optional(),\n id: z.string().optional(),\n document: z.object({\n id: z.string().optional(),\n text: z.string(),\n title: z.string(),\n }),\n }),\n ),\n type: z.string().optional(),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string(),\n usage: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\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 cohereChatChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('citation-start'),\n }),\n z.object({\n type: z.literal('citation-end'),\n }),\n z.object({\n type: z.literal('content-start'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('content-delta'),\n index: z.number(),\n delta: z.object({\n message: z.object({\n content: z.object({\n text: z.string(),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('content-end'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message-start'),\n id: z.string().nullish(),\n }),\n z.object({\n type: z.literal('message-end'),\n delta: z.object({\n finish_reason: z.string(),\n usage: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling\n z.object({\n type: z.literal('tool-plan-delta'),\n delta: z.object({\n message: z.object({\n tool_plan: z.string(),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-start'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n // A single tool call's `arguments` stream in chunks and must be accumulated\n // in a string and so the full tool object info can only be parsed once we see\n // `tool-call-end`.\n z.object({\n type: z.literal('tool-call-delta'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n function: z.object({\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-end'),\n }),\n]);\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst cohereErrorDataSchema = z.object({\n message: z.string(),\n});\n\nexport type CohereErrorData = z.infer<typeof cohereErrorDataSchema>;\n\nexport const cohereFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: cohereErrorDataSchema,\n errorToMessage: data => data.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereAssistantMessage, CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(prompt: LanguageModelV2Prompt): {\n messages: CohereChatPrompt;\n documents: Array<{\n data: { text: string; title?: string };\n }>;\n warnings: LanguageModelV2CallWarning[];\n} {\n const messages: CohereChatPrompt = [];\n const documents: Array<{ data: { text: string; title?: string } }> = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'file': {\n // Extract documents for RAG\n let textContent: string;\n\n if (typeof part.data === 'string') {\n // Base64 or text data\n textContent = part.data;\n } else if (part.data instanceof Uint8Array) {\n // Check if the media type is supported for text extraction\n if (\n !(\n part.mediaType?.startsWith('text/') ||\n part.mediaType === 'application/json'\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `document media type: ${part.mediaType}`,\n message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`,\n });\n }\n textContent = new TextDecoder().decode(part.data);\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n message:\n 'URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue.',\n });\n }\n\n documents.push({\n data: {\n text: textContent,\n title: part.filename,\n },\n });\n\n // Files are handled separately via the documents parameter\n // Return empty string to not include file content in message text\n return '';\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: CohereAssistantMessage['tool_calls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function' as const,\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? undefined : text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n tool_plan: undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push(\n ...content.map(toolResult => {\n const output = toolResult.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n return {\n role: 'tool' as const,\n content: contentValue,\n tool_call_id: toolResult.toolCallId,\n };\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 return { messages, documents, warnings };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'COMPLETE':\n case 'STOP_SEQUENCE':\n return 'stop';\n\n case 'MAX_TOKENS':\n return 'length';\n\n case 'ERROR':\n return 'error';\n\n case 'TOOL_CALL':\n return 'tool-calls';\n\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereToolChoice } from './cohere-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string | undefined;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: CohereToolChoice;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const cohereTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n cohereTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n\n case 'none':\n return { tools: cohereTools, toolChoice: 'NONE', toolWarnings };\n\n case 'required':\n return { tools: cohereTools, toolChoice: 'REQUIRED', toolWarnings };\n\n case 'tool':\n return {\n tools: cohereTools.filter(\n tool => tool.function.name === toolChoice.toolName,\n ),\n toolChoice: 'REQUIRED',\n toolWarnings,\n };\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereEmbeddingModelId,\n cohereEmbeddingOptions,\n} from './cohere-embedding-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\n\ntype CohereEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class CohereEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: CohereEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 96;\n readonly supportsParallelCalls = true;\n\n private readonly config: CohereEmbeddingConfig;\n\n constructor(modelId: CohereEmbeddingModelId, config: CohereEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'cohere',\n providerOptions,\n schema: cohereEmbeddingOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n // The AI SDK only supports 'float' embeddings which are also the only ones\n // the Cohere API docs state are supported for all models.\n // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types\n embedding_types: ['float'],\n texts: values,\n input_type: embeddingOptions?.inputType ?? 'search_query',\n truncate: embeddingOptions?.truncate,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.embeddings.float,\n usage: { tokens: response.meta.billed_units.input_tokens },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal 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 cohereTextEmbeddingResponseSchema = z.object({\n embeddings: z.object({\n float: z.array(z.array(z.number())),\n }),\n meta: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n }),\n }),\n});\n","import { z } from 'zod';\n\nexport type CohereEmbeddingModelId =\n | 'embed-english-v3.0'\n | 'embed-multilingual-v3.0'\n | 'embed-english-light-v3.0'\n | 'embed-multilingual-light-v3.0'\n | 'embed-english-v2.0'\n | 'embed-english-light-v2.0'\n | 'embed-multilingual-v2.0'\n | (string & {});\n\nexport const cohereEmbeddingOptions = z.object({\n /**\n * Specifies the type of input passed to the model. Default is `search_query`.\n *\n * - \"search_document\": Used for embeddings stored in a vector database for search use-cases.\n * - \"search_query\": Used for embeddings of search queries run against a vector DB to find relevant documents.\n * - \"classification\": Used for embeddings passed through a text classifier.\n * - \"clustering\": Used for embeddings run through a clustering algorithm.\n */\n inputType: z\n .enum(['search_document', 'search_query', 'classification', 'clustering'])\n .optional(),\n\n /**\n * Specifies how the API will handle inputs longer than the maximum token length.\n * Default is `END`.\n *\n * - \"NONE\": If selected, when the input exceeds the maximum input token length will return an error.\n * - \"START\": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.\n * - \"END\": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.\n */\n truncate: z.enum(['NONE', 'START', 'END']).optional(),\n});\n\nexport type CohereEmbeddingOptions = z.infer<typeof cohereEmbeddingOptions>;\n"],"mappings":"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","names":["generateId","z","UnsupportedFunctionalityError","z","combineHeaders","createJsonResponseHandler","postJsonToApi","z","z","postJsonToApi","combineHeaders","createJsonResponseHandler","z","_a","generateId"]}
|
|
1
|
+
{"version":3,"sources":["../src/cohere-provider.ts","../src/cohere-chat-language-model.ts","../src/cohere-error.ts","../src/convert-to-cohere-chat-prompt.ts","../src/map-cohere-finish-reason.ts","../src/cohere-prepare-tools.ts","../src/cohere-embedding-model.ts","../src/cohere-embedding-options.ts"],"sourcesContent":["import {\n EmbeddingModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { CohereEmbeddingModel } from './cohere-embedding-model';\nimport { CohereEmbeddingModelId } from './cohere-embedding-options';\n\nexport interface CohereProvider extends ProviderV2 {\n (modelId: CohereChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: CohereChatModelId): LanguageModelV2;\n\n embedding(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbeddingModel(modelId: CohereEmbeddingModelId): EmbeddingModelV2<string>;\n}\n\nexport interface CohereProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.cohere.com/v2`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `Authorization` header.\nIt defaults to the `COHERE_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?: FetchFunction;\n\n /**\nOptional function to generate a unique ID for each request.\n */\n generateId?: () => string;\n}\n\n/**\nCreate a Cohere AI provider instance.\n */\nexport function createCohere(\n options: CohereProviderSettings = {},\n): CohereProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.cohere.com/v2';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'COHERE_API_KEY',\n description: 'Cohere',\n })}`,\n ...options.headers,\n });\n\n const createChatModel = (modelId: CohereChatModelId) =>\n new CohereChatLanguageModel(modelId, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n\n const createTextEmbeddingModel = (modelId: CohereEmbeddingModelId) =>\n new CohereEmbeddingModel(modelId, {\n provider: 'cohere.textEmbedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: CohereChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Cohere model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.embedding = createTextEmbeddingModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { CohereChatModelId } from './cohere-chat-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\nimport { prepareTools } from './cohere-prepare-tools';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: CohereChatModelId;\n\n readonly supportedUrls = {\n // No URLs are supported.\n };\n\n private readonly config: CohereChatConfig;\n\n constructor(modelId: CohereChatModelId, config: CohereChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const {\n messages: chatPrompt,\n documents: cohereDocuments,\n warnings: promptWarnings,\n } = convertToCohereChatPrompt(prompt);\n\n const {\n tools: cohereTools,\n toolChoice: cohereToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxOutputTokens,\n temperature,\n p: topP,\n k: topK,\n seed,\n stop_sequences: stopSequences,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? { type: 'json_object', json_schema: responseFormat.schema }\n : undefined,\n\n // messages:\n messages: chatPrompt,\n\n // tools:\n tools: cohereTools,\n tool_choice: cohereToolChoice,\n\n // documents for RAG:\n ...(cohereDocuments.length > 0 && { documents: cohereDocuments }),\n },\n warnings: [...toolWarnings, ...promptWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n if (\n response.message.content?.[0]?.text != null &&\n response.message.content?.[0]?.text.length > 0\n ) {\n content.push({ type: 'text', text: response.message.content[0].text });\n }\n\n // citations:\n for (const citation of response.message.citations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId(),\n mediaType: 'text/plain',\n title: citation.sources[0]?.document?.title || 'Document',\n providerMetadata: {\n cohere: {\n start: citation.start,\n end: citation.end,\n text: citation.text,\n sources: citation.sources,\n ...(citation.type && { citationType: citation.type }),\n },\n },\n });\n }\n\n // tool calls:\n for (const toolCall of response.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n // Cohere sometimes returns `null` for tool call arguments for tools\n // defined as having no arguments.\n input: toolCall.function.arguments.replace(/^null$/, '{}'),\n });\n }\n\n return {\n content,\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n inputTokens: response.usage.tokens.input_tokens,\n outputTokens: response.usage.tokens.output_tokens,\n totalTokens:\n response.usage.tokens.input_tokens +\n response.usage.tokens.output_tokens,\n },\n request: { body: args },\n response: {\n // TODO timestamp, model id\n id: response.generation_id ?? undefined,\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n let pendingToolCall: {\n id: string;\n name: string;\n arguments: string;\n hasFinished: boolean;\n } | null = null;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n const type = value.type;\n\n switch (type) {\n case 'content-start': {\n controller.enqueue({\n type: 'text-start',\n id: String(value.index),\n });\n return;\n }\n\n case 'content-delta': {\n controller.enqueue({\n type: 'text-delta',\n id: String(value.index),\n delta: value.delta.message.content.text,\n });\n return;\n }\n\n case 'content-end': {\n controller.enqueue({\n type: 'text-end',\n id: String(value.index),\n });\n return;\n }\n\n case 'tool-call-start': {\n const toolId = value.delta.message.tool_calls.id;\n const toolName = value.delta.message.tool_calls.function.name;\n const initialArgs =\n value.delta.message.tool_calls.function.arguments;\n\n pendingToolCall = {\n id: toolId,\n name: toolName,\n arguments: initialArgs,\n hasFinished: false,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolId,\n toolName,\n });\n\n if (initialArgs.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolId,\n delta: initialArgs,\n });\n }\n return;\n }\n\n case 'tool-call-delta': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n const argsDelta =\n value.delta.message.tool_calls.function.arguments;\n pendingToolCall.arguments += argsDelta;\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: pendingToolCall.id,\n delta: argsDelta,\n });\n }\n return;\n }\n\n case 'tool-call-end': {\n if (pendingToolCall && !pendingToolCall.hasFinished) {\n controller.enqueue({\n type: 'tool-input-end',\n id: pendingToolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: pendingToolCall.id,\n toolName: pendingToolCall.name,\n input: JSON.stringify(\n JSON.parse(pendingToolCall.arguments?.trim() || '{}'),\n ),\n });\n\n pendingToolCall.hasFinished = true;\n pendingToolCall = null;\n }\n return;\n }\n\n case 'message-start': {\n controller.enqueue({\n type: 'response-metadata',\n id: value.id ?? undefined,\n });\n return;\n }\n\n case 'message-end': {\n finishReason = mapCohereFinishReason(value.delta.finish_reason);\n const tokens = value.delta.usage.tokens;\n\n usage.inputTokens = tokens.input_tokens;\n usage.outputTokens = tokens.output_tokens;\n usage.totalTokens = tokens.input_tokens + tokens.output_tokens;\n return;\n }\n\n default: {\n return;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n }),\n ),\n request: { body: { ...args, stream: true } },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst cohereChatResponseSchema = z.object({\n generation_id: z.string().nullish(),\n message: z.object({\n role: z.string(),\n content: z\n .array(\n z.object({\n type: z.string(),\n text: z.string(),\n }),\n )\n .nullish(),\n tool_plan: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n citations: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n sources: z.array(\n z.object({\n type: z.string().optional(),\n id: z.string().optional(),\n document: z.object({\n id: z.string().optional(),\n text: z.string(),\n title: z.string(),\n }),\n }),\n ),\n type: z.string().optional(),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string(),\n usage: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\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 cohereChatChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('citation-start'),\n }),\n z.object({\n type: z.literal('citation-end'),\n }),\n z.object({\n type: z.literal('content-start'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('content-delta'),\n index: z.number(),\n delta: z.object({\n message: z.object({\n content: z.object({\n text: z.string(),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('content-end'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('message-start'),\n id: z.string().nullish(),\n }),\n z.object({\n type: z.literal('message-end'),\n delta: z.object({\n finish_reason: z.string(),\n usage: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling\n z.object({\n type: z.literal('tool-plan-delta'),\n delta: z.object({\n message: z.object({\n tool_plan: z.string(),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-start'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n // A single tool call's `arguments` stream in chunks and must be accumulated\n // in a string and so the full tool object info can only be parsed once we see\n // `tool-call-end`.\n z.object({\n type: z.literal('tool-call-delta'),\n delta: z.object({\n message: z.object({\n tool_calls: z.object({\n function: z.object({\n arguments: z.string(),\n }),\n }),\n }),\n }),\n }),\n z.object({\n type: z.literal('tool-call-end'),\n }),\n]);\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst cohereErrorDataSchema = z.object({\n message: z.string(),\n});\n\nexport type CohereErrorData = z.infer<typeof cohereErrorDataSchema>;\n\nexport const cohereFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: cohereErrorDataSchema,\n errorToMessage: data => data.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereAssistantMessage, CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(prompt: LanguageModelV2Prompt): {\n messages: CohereChatPrompt;\n documents: Array<{\n data: { text: string; title?: string };\n }>;\n warnings: LanguageModelV2CallWarning[];\n} {\n const messages: CohereChatPrompt = [];\n const documents: Array<{ data: { text: string; title?: string } }> = [];\n const warnings: LanguageModelV2CallWarning[] = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'file': {\n // Extract documents for RAG\n let textContent: string;\n\n if (typeof part.data === 'string') {\n // Base64 or text data\n textContent = part.data;\n } else if (part.data instanceof Uint8Array) {\n // Check if the media type is supported for text extraction\n if (\n !(\n part.mediaType?.startsWith('text/') ||\n part.mediaType === 'application/json'\n )\n ) {\n throw new UnsupportedFunctionalityError({\n functionality: `document media type: ${part.mediaType}`,\n message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`,\n });\n }\n textContent = new TextDecoder().decode(part.data);\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n message:\n 'URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue.',\n });\n }\n\n documents.push({\n data: {\n text: textContent,\n title: part.filename,\n },\n });\n\n // Files are handled separately via the documents parameter\n // Return empty string to not include file content in message text\n return '';\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: CohereAssistantMessage['tool_calls'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function' as const,\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: toolCalls.length > 0 ? undefined : text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n tool_plan: undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push(\n ...content.map(toolResult => {\n const output = toolResult.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n return {\n role: 'tool' as const,\n content: contentValue,\n tool_call_id: toolResult.toolCallId,\n };\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 return { messages, documents, warnings };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'COMPLETE':\n case 'STOP_SEQUENCE':\n return 'stop';\n\n case 'MAX_TOKENS':\n return 'length';\n\n case 'ERROR':\n return 'error';\n\n case 'TOOL_CALL':\n return 'tool-calls';\n\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereToolChoice } from './cohere-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string | undefined;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: CohereToolChoice;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const cohereTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n cohereTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: cohereTools, toolChoice: undefined, toolWarnings };\n\n case 'none':\n return { tools: cohereTools, toolChoice: 'NONE', toolWarnings };\n\n case 'required':\n return { tools: cohereTools, toolChoice: 'REQUIRED', toolWarnings };\n\n case 'tool':\n return {\n tools: cohereTools.filter(\n tool => tool.function.name === toolChoice.toolName,\n ),\n toolChoice: 'REQUIRED',\n toolWarnings,\n };\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n CohereEmbeddingModelId,\n cohereEmbeddingOptions,\n} from './cohere-embedding-options';\nimport { cohereFailedResponseHandler } from './cohere-error';\n\ntype CohereEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class CohereEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: CohereEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 96;\n readonly supportsParallelCalls = true;\n\n private readonly config: CohereEmbeddingConfig;\n\n constructor(modelId: CohereEmbeddingModelId, config: CohereEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'cohere',\n providerOptions,\n schema: cohereEmbeddingOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n // The AI SDK only supports 'float' embeddings which are also the only ones\n // the Cohere API docs state are supported for all models.\n // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types\n embedding_types: ['float'],\n texts: values,\n input_type: embeddingOptions?.inputType ?? 'search_query',\n truncate: embeddingOptions?.truncate,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.embeddings.float,\n usage: { tokens: response.meta.billed_units.input_tokens },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal 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 cohereTextEmbeddingResponseSchema = z.object({\n embeddings: z.object({\n float: z.array(z.array(z.number())),\n }),\n meta: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n }),\n }),\n});\n","import { z } from 'zod/v4';\n\nexport type CohereEmbeddingModelId =\n | 'embed-english-v3.0'\n | 'embed-multilingual-v3.0'\n | 'embed-english-light-v3.0'\n | 'embed-multilingual-light-v3.0'\n | 'embed-english-v2.0'\n | 'embed-english-light-v2.0'\n | 'embed-multilingual-v2.0'\n | (string & {});\n\nexport const cohereEmbeddingOptions = z.object({\n /**\n * Specifies the type of input passed to the model. Default is `search_query`.\n *\n * - \"search_document\": Used for embeddings stored in a vector database for search use-cases.\n * - \"search_query\": Used for embeddings of search queries run against a vector DB to find relevant documents.\n * - \"classification\": Used for embeddings passed through a text classifier.\n * - \"clustering\": Used for embeddings run through a clustering algorithm.\n */\n inputType: z\n .enum(['search_document', 'search_query', 'classification', 'clustering'])\n .optional(),\n\n /**\n * Specifies how the API will handle inputs longer than the maximum token length.\n * Default is `END`.\n *\n * - \"NONE\": If selected, when the input exceeds the maximum input token length will return an error.\n * - \"START\": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.\n * - \"END\": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.\n */\n truncate: z.enum(['NONE', 'START', 'END']).optional(),\n});\n\nexport type CohereEmbeddingOptions = z.infer<typeof cohereEmbeddingOptions>;\n"],"mappings":"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","names":["generateId","z","UnsupportedFunctionalityError","z","combineHeaders","createJsonResponseHandler","postJsonToApi","z","z","postJsonToApi","combineHeaders","createJsonResponseHandler","z","_a","generateId"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/cohere",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@ai-sdk/provider": "2.0.0-beta.1",
|
|
23
|
-
"@ai-sdk/provider-utils": "3.0.0-beta.
|
|
23
|
+
"@ai-sdk/provider-utils": "3.0.0-beta.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/node": "20.17.24",
|