@ai-sdk/cohere 0.0.21 → 0.0.22

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 ADDED
@@ -0,0 +1,183 @@
1
+ # @ai-sdk/cohere
2
+
3
+ ## 0.0.22
4
+
5
+ ### Patch Changes
6
+
7
+ - cb2f0fa: feat (provider/cohere): add embedding support
8
+
9
+ ## 0.0.21
10
+
11
+ ### Patch Changes
12
+
13
+ - 26515cb: feat (ai/provider): introduce ProviderV1 specification
14
+ - Updated dependencies [26515cb]
15
+ - @ai-sdk/provider@0.0.22
16
+ - @ai-sdk/provider-utils@1.0.17
17
+
18
+ ## 0.0.20
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [09f895f]
23
+ - @ai-sdk/provider-utils@1.0.16
24
+
25
+ ## 0.0.19
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [d67fa9c]
30
+ - @ai-sdk/provider-utils@1.0.15
31
+
32
+ ## 0.0.18
33
+
34
+ ### Patch Changes
35
+
36
+ - 93b7b7c: feat (provider/cohere): support tool calls
37
+ - Updated dependencies [f2c025e]
38
+ - @ai-sdk/provider@0.0.21
39
+ - @ai-sdk/provider-utils@1.0.14
40
+
41
+ ## 0.0.17
42
+
43
+ ### Patch Changes
44
+
45
+ - Updated dependencies [6ac355e]
46
+ - @ai-sdk/provider@0.0.20
47
+ - @ai-sdk/provider-utils@1.0.13
48
+
49
+ ## 0.0.16
50
+
51
+ ### Patch Changes
52
+
53
+ - dd712ac: fix: use FetchFunction type to prevent self-reference
54
+ - Updated dependencies [dd712ac]
55
+ - @ai-sdk/provider-utils@1.0.12
56
+
57
+ ## 0.0.15
58
+
59
+ ### Patch Changes
60
+
61
+ - 89b18ca: fix (ai/provider): send finish reason 'unknown' by default
62
+ - Updated dependencies [dd4a0f5]
63
+ - @ai-sdk/provider@0.0.19
64
+ - @ai-sdk/provider-utils@1.0.11
65
+
66
+ ## 0.0.14
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [4bd27a9]
71
+ - Updated dependencies [845754b]
72
+ - @ai-sdk/provider-utils@1.0.10
73
+ - @ai-sdk/provider@0.0.18
74
+
75
+ ## 0.0.13
76
+
77
+ ### Patch Changes
78
+
79
+ - Updated dependencies [029af4c]
80
+ - @ai-sdk/provider@0.0.17
81
+ - @ai-sdk/provider-utils@1.0.9
82
+
83
+ ## 0.0.12
84
+
85
+ ### Patch Changes
86
+
87
+ - 6a5e2eb: fix (provider/cohere): send last message with request instead of first
88
+
89
+ ## 0.0.11
90
+
91
+ ### Patch Changes
92
+
93
+ - Updated dependencies [d58517b]
94
+ - @ai-sdk/provider@0.0.16
95
+ - @ai-sdk/provider-utils@1.0.8
96
+
97
+ ## 0.0.10
98
+
99
+ ### Patch Changes
100
+
101
+ - Updated dependencies [96aed25]
102
+ - @ai-sdk/provider@0.0.15
103
+ - @ai-sdk/provider-utils@1.0.7
104
+
105
+ ## 0.0.9
106
+
107
+ ### Patch Changes
108
+
109
+ - Updated dependencies [9614584]
110
+ - Updated dependencies [0762a22]
111
+ - @ai-sdk/provider-utils@1.0.6
112
+
113
+ ## 0.0.8
114
+
115
+ ### Patch Changes
116
+
117
+ - Updated dependencies [a8d1c9e9]
118
+ - @ai-sdk/provider-utils@1.0.5
119
+ - @ai-sdk/provider@0.0.14
120
+
121
+ ## 0.0.7
122
+
123
+ ### Patch Changes
124
+
125
+ - Updated dependencies [4f88248f]
126
+ - @ai-sdk/provider-utils@1.0.4
127
+
128
+ ## 0.0.6
129
+
130
+ ### Patch Changes
131
+
132
+ - 2b9da0f0: feat (core): support stopSequences setting.
133
+ - a5b58845: feat (core): support topK setting
134
+ - 4aa8deb3: feat (provider): support responseFormat setting in provider api
135
+ - 13b27ec6: chore (ai/core): remove grammar mode
136
+ - Updated dependencies [2b9da0f0]
137
+ - Updated dependencies [a5b58845]
138
+ - Updated dependencies [4aa8deb3]
139
+ - Updated dependencies [13b27ec6]
140
+ - @ai-sdk/provider@0.0.13
141
+ - @ai-sdk/provider-utils@1.0.3
142
+
143
+ ## 0.0.5
144
+
145
+ ### Patch Changes
146
+
147
+ - Updated dependencies [b7290943]
148
+ - @ai-sdk/provider@0.0.12
149
+ - @ai-sdk/provider-utils@1.0.2
150
+
151
+ ## 0.0.4
152
+
153
+ ### Patch Changes
154
+
155
+ - Updated dependencies [d481729f]
156
+ - @ai-sdk/provider-utils@1.0.1
157
+
158
+ ## 0.0.3
159
+
160
+ ### Patch Changes
161
+
162
+ - 5edc6110: feat (ai/core): add custom request header support
163
+ - Updated dependencies [5edc6110]
164
+ - Updated dependencies [5edc6110]
165
+ - Updated dependencies [5edc6110]
166
+ - @ai-sdk/provider@0.0.11
167
+ - @ai-sdk/provider-utils@1.0.0
168
+
169
+ ## 0.0.2
170
+
171
+ ### Patch Changes
172
+
173
+ - Updated dependencies [02f6a088]
174
+ - @ai-sdk/provider-utils@0.0.16
175
+
176
+ ## 0.0.1
177
+
178
+ ### Patch Changes
179
+
180
+ - 85712895: feat (@ai-sdk/cohere): add Cohere provider for text generation and streaming
181
+ - Updated dependencies [85712895]
182
+ - Updated dependencies [85712895]
183
+ - @ai-sdk/provider-utils@0.0.15
package/dist/index.d.mts CHANGED
@@ -1,16 +1,40 @@
1
- import { ProviderV1, LanguageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV1, LanguageModelV1, EmbeddingModelV1 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
 
4
4
  type CohereChatModelId = 'command-r-plus' | 'command-r' | 'command' | 'command-light' | (string & {});
5
5
  interface CohereChatSettings {
6
6
  }
7
7
 
8
+ type CohereEmbeddingModelId = 'embed-english-v3.0' | 'embed-multilingual-v3.0' | 'embed-english-light-v3.0' | 'embed-multilingual-light-v3.0' | 'embed-english-v2.0' | 'embed-english-light-v2.0' | 'embed-multilingual-v2.0' | (string & {});
9
+ interface CohereEmbeddingSettings {
10
+ /**
11
+ * Specifies the type of input passed to the model. Default is `search_query`.
12
+ *
13
+ * - "search_document": Used for embeddings stored in a vector database for search use-cases.
14
+ * - "search_query": Used for embeddings of search queries run against a vector DB to find relevant documents.
15
+ * - "classification": Used for embeddings passed through a text classifier.
16
+ * - "clustering": Used for embeddings run through a clustering algorithm.
17
+ */
18
+ inputType?: 'search_document' | 'search_query' | 'classification' | 'clustering';
19
+ /**
20
+ * Specifies how the API will handle inputs longer than the maximum token length.
21
+ * Default is `END`.
22
+ *
23
+ * - "NONE": If selected, when the input exceeds the maximum input token length will return an error.
24
+ * - "START": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.
25
+ * - "END": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.
26
+ */
27
+ truncate?: 'NONE' | 'START' | 'END';
28
+ }
29
+
8
30
  interface CohereProvider extends ProviderV1 {
9
31
  (modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;
10
32
  /**
11
33
  Creates a model for text generation.
12
34
  */
13
35
  languageModel(modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;
36
+ embedding(modelId: CohereEmbeddingModelId, settings?: CohereEmbeddingSettings): EmbeddingModelV1<string>;
37
+ textEmbeddingModel(modelId: CohereEmbeddingModelId, settings?: CohereEmbeddingSettings): EmbeddingModelV1<string>;
14
38
  }
15
39
  interface CohereProviderSettings {
16
40
  /**
package/dist/index.d.ts CHANGED
@@ -1,16 +1,40 @@
1
- import { ProviderV1, LanguageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV1, LanguageModelV1, EmbeddingModelV1 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
 
4
4
  type CohereChatModelId = 'command-r-plus' | 'command-r' | 'command' | 'command-light' | (string & {});
5
5
  interface CohereChatSettings {
6
6
  }
7
7
 
8
+ type CohereEmbeddingModelId = 'embed-english-v3.0' | 'embed-multilingual-v3.0' | 'embed-english-light-v3.0' | 'embed-multilingual-light-v3.0' | 'embed-english-v2.0' | 'embed-english-light-v2.0' | 'embed-multilingual-v2.0' | (string & {});
9
+ interface CohereEmbeddingSettings {
10
+ /**
11
+ * Specifies the type of input passed to the model. Default is `search_query`.
12
+ *
13
+ * - "search_document": Used for embeddings stored in a vector database for search use-cases.
14
+ * - "search_query": Used for embeddings of search queries run against a vector DB to find relevant documents.
15
+ * - "classification": Used for embeddings passed through a text classifier.
16
+ * - "clustering": Used for embeddings run through a clustering algorithm.
17
+ */
18
+ inputType?: 'search_document' | 'search_query' | 'classification' | 'clustering';
19
+ /**
20
+ * Specifies how the API will handle inputs longer than the maximum token length.
21
+ * Default is `END`.
22
+ *
23
+ * - "NONE": If selected, when the input exceeds the maximum input token length will return an error.
24
+ * - "START": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.
25
+ * - "END": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.
26
+ */
27
+ truncate?: 'NONE' | 'START' | 'END';
28
+ }
29
+
8
30
  interface CohereProvider extends ProviderV1 {
9
31
  (modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;
10
32
  /**
11
33
  Creates a model for text generation.
12
34
  */
13
35
  languageModel(modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;
36
+ embedding(modelId: CohereEmbeddingModelId, settings?: CohereEmbeddingSettings): EmbeddingModelV1<string>;
37
+ textEmbeddingModel(modelId: CohereEmbeddingModelId, settings?: CohereEmbeddingSettings): EmbeddingModelV1<string>;
14
38
  }
15
39
  interface CohereProviderSettings {
16
40
  /**
package/dist/index.js CHANGED
@@ -26,8 +26,7 @@ __export(src_exports, {
26
26
  module.exports = __toCommonJS(src_exports);
27
27
 
28
28
  // src/cohere-provider.ts
29
- var import_provider3 = require("@ai-sdk/provider");
30
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
29
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
31
30
 
32
31
  // src/cohere-chat-language-model.ts
33
32
  var import_provider2 = require("@ai-sdk/provider");
@@ -524,12 +523,74 @@ function prepareToolsAndToolChoice(mode) {
524
523
  }
525
524
  }
526
525
 
526
+ // src/cohere-embedding-model.ts
527
+ var import_provider3 = require("@ai-sdk/provider");
528
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
529
+ var import_zod3 = require("zod");
530
+ var CohereEmbeddingModel = class {
531
+ constructor(modelId, settings, config) {
532
+ this.specificationVersion = "v1";
533
+ this.maxEmbeddingsPerCall = 96;
534
+ this.supportsParallelCalls = true;
535
+ this.modelId = modelId;
536
+ this.settings = settings;
537
+ this.config = config;
538
+ }
539
+ get provider() {
540
+ return this.config.provider;
541
+ }
542
+ async doEmbed({
543
+ values,
544
+ headers,
545
+ abortSignal
546
+ }) {
547
+ var _a;
548
+ if (values.length > this.maxEmbeddingsPerCall) {
549
+ throw new import_provider3.TooManyEmbeddingValuesForCallError({
550
+ provider: this.provider,
551
+ modelId: this.modelId,
552
+ maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
553
+ values
554
+ });
555
+ }
556
+ const { responseHeaders, value: response } = await (0, import_provider_utils3.postJsonToApi)({
557
+ url: `${this.config.baseURL}/embed`,
558
+ headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), headers),
559
+ body: {
560
+ model: this.modelId,
561
+ texts: values,
562
+ input_type: (_a = this.settings.inputType) != null ? _a : "search_query",
563
+ truncate: this.settings.truncate
564
+ },
565
+ failedResponseHandler: cohereFailedResponseHandler,
566
+ successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
567
+ cohereTextEmbeddingResponseSchema
568
+ ),
569
+ abortSignal,
570
+ fetch: this.config.fetch
571
+ });
572
+ return {
573
+ embeddings: response.embeddings,
574
+ usage: { tokens: response.meta.billed_units.input_tokens },
575
+ rawResponse: { headers: responseHeaders }
576
+ };
577
+ }
578
+ };
579
+ var cohereTextEmbeddingResponseSchema = import_zod3.z.object({
580
+ embeddings: import_zod3.z.array(import_zod3.z.array(import_zod3.z.number())),
581
+ meta: import_zod3.z.object({
582
+ billed_units: import_zod3.z.object({
583
+ input_tokens: import_zod3.z.number()
584
+ })
585
+ })
586
+ });
587
+
527
588
  // src/cohere-provider.ts
528
589
  function createCohere(options = {}) {
529
590
  var _a;
530
- const baseURL = (_a = (0, import_provider_utils3.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.cohere.com/v1";
591
+ const baseURL = (_a = (0, import_provider_utils4.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.cohere.com/v1";
531
592
  const getHeaders = () => ({
532
- Authorization: `Bearer ${(0, import_provider_utils3.loadApiKey)({
593
+ Authorization: `Bearer ${(0, import_provider_utils4.loadApiKey)({
533
594
  apiKey: options.apiKey,
534
595
  environmentVariableName: "COHERE_API_KEY",
535
596
  description: "Cohere"
@@ -542,10 +603,16 @@ function createCohere(options = {}) {
542
603
  provider: "cohere.chat",
543
604
  baseURL,
544
605
  headers: getHeaders,
545
- generateId: (_a2 = options.generateId) != null ? _a2 : import_provider_utils3.generateId,
606
+ generateId: (_a2 = options.generateId) != null ? _a2 : import_provider_utils4.generateId,
546
607
  fetch: options.fetch
547
608
  });
548
609
  };
610
+ const createTextEmbeddingModel = (modelId, settings = {}) => new CohereEmbeddingModel(modelId, settings, {
611
+ provider: "cohere.textEmbedding",
612
+ baseURL,
613
+ headers: getHeaders,
614
+ fetch: options.fetch
615
+ });
549
616
  const provider = function(modelId, settings) {
550
617
  if (new.target) {
551
618
  throw new Error(
@@ -555,9 +622,8 @@ function createCohere(options = {}) {
555
622
  return createChatModel(modelId, settings);
556
623
  };
557
624
  provider.languageModel = createChatModel;
558
- provider.textEmbeddingModel = (modelId) => {
559
- throw new import_provider3.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
560
- };
625
+ provider.embedding = createTextEmbeddingModel;
626
+ provider.textEmbeddingModel = createTextEmbeddingModel;
561
627
  return provider;
562
628
  }
563
629
  var cohere = createCohere();
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"],"sourcesContent":["export { cohere, createCohere } from './cohere-provider';\nexport type { CohereProvider, CohereProviderSettings } from './cohere-provider';\n","import {\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\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, CohereChatSettings } from './cohere-chat-settings';\n\nexport interface CohereProvider extends ProviderV1 {\n (modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): LanguageModelV1;\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/v1`.\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 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/v1';\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 = (\n modelId: CohereChatModelId,\n settings: CohereChatSettings = {},\n ) =>\n new CohereChatLanguageModel(modelId, settings, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n generateId: options.generateId ?? generateId,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ) {\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, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider as CohereProvider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV1,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereChatModelId,\n CohereChatSettings,\n} from '../src/cohere-chat-settings';\nimport { cohereFailedResponseHandler } from '../src/cohere-error';\nimport { convertToCohereChatPrompt } from '../src/convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from '../src/map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: CohereChatModelId;\n readonly settings: CohereChatSettings;\n\n private readonly config: CohereChatConfig;\n\n constructor(\n modelId: CohereChatModelId,\n settings: CohereChatSettings,\n config: CohereChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const chatPrompt = convertToCohereChatPrompt(prompt);\n\n // Cohere distinguishes between the current message and the chat history\n const lastMessage = chatPrompt.at(-1);\n const history = chatPrompt.slice(0, -1);\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n // none\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxTokens,\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', schema: responseFormat.schema }\n : undefined,\n\n // messages:\n chat_history: history,\n ...(lastMessage?.role === 'TOOL'\n ? { tool_results: lastMessage.tool_results }\n : {}),\n message: lastMessage\n ? lastMessage.role === 'USER'\n ? lastMessage.message\n : undefined\n : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return { ...baseArgs, ...prepareToolsAndToolChoice(mode) };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-json mode',\n });\n }\n\n case 'object-tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-tool mode',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const args = 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,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n const generateId = this.config.generateId;\n\n return {\n text: response.text,\n toolCalls: response.tool_calls\n ? response.tool_calls.map(toolCall => ({\n toolCallId: generateId(),\n toolName: toolCall.name,\n args: JSON.stringify(toolCall.parameters),\n toolCallType: 'function',\n }))\n : [],\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n promptTokens: response.meta.tokens.input_tokens,\n completionTokens: response.meta.tokens.output_tokens,\n },\n rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: undefined,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const args = 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: {\n ...args,\n stream: true,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonStreamResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n const toolCalls: Array<{\n toolCallId: string;\n toolName: string;\n }> = [];\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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.event_type;\n\n switch (type) {\n case 'text-generation': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.text,\n });\n return;\n }\n\n case 'tool-calls-chunk': {\n if (value.tool_call_delta) {\n const { index } = value.tool_call_delta;\n\n if (toolCalls[index] === undefined) {\n const toolCallId = generateId();\n\n toolCalls[index] = {\n toolCallId,\n toolName: '',\n };\n }\n\n if (value.tool_call_delta.name) {\n toolCalls[index].toolName = value.tool_call_delta.name;\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: '',\n });\n } else if (value.tool_call_delta.parameters) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: value.tool_call_delta.parameters,\n });\n }\n }\n return;\n }\n\n case 'tool-calls-generation': {\n for (let index = 0; index < value.tool_calls.length; index++) {\n const toolCall = value.tool_calls[index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n toolCallType: 'function',\n args: JSON.stringify(toolCall.parameters),\n });\n }\n\n return;\n }\n\n case 'stream-end': {\n finishReason = mapCohereFinishReason(value.finish_reason);\n const tokens = value.response.meta.tokens;\n\n usage = {\n promptTokens: tokens.input_tokens,\n completionTokens: tokens.output_tokens,\n };\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 rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: [],\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatResponseSchema = z.object({\n text: z.string(),\n tool_calls: z\n .array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n )\n .optional(),\n finish_reason: z.string(),\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatChunkSchema = z.discriminatedUnion('event_type', [\n z.object({\n event_type: z.literal('stream-start'),\n }),\n z.object({\n event_type: z.literal('search-queries-generation'),\n }),\n z.object({\n event_type: z.literal('search-results'),\n }),\n z.object({\n event_type: z.literal('text-generation'),\n text: z.string(),\n }),\n z.object({\n event_type: z.literal('citation-generation'),\n }),\n z.object({\n event_type: z.literal('tool-calls-generation'),\n tool_calls: z.array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n ),\n }),\n z.object({\n event_type: z.literal('tool-calls-chunk'),\n text: z.string().optional(),\n tool_call_delta: z\n .object({\n index: z.number(),\n name: z.string().optional(),\n parameters: z.string().optional(),\n })\n .optional(),\n }),\n z.object({\n event_type: z.literal('stream-end'),\n finish_reason: z.string(),\n response: z.object({\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n]);\n\n// For reference: https://docs.cohere.com/docs/parameter-types-in-tool-use\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined };\n }\n\n const mappedTools = tools.map(tool => {\n const { properties, required } = tool.parameters;\n\n const parameterDefinitions: any = {};\n\n if (properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (typeof value === 'object' && value !== null) {\n const { type: JSONType, description } = value;\n\n let type: 'str' | 'float' | 'int' | 'bool';\n\n if (typeof JSONType === 'string') {\n switch (JSONType) {\n case 'string':\n type = 'str';\n break;\n case 'number':\n type = 'float';\n break;\n case 'integer':\n type = 'int';\n break;\n case 'boolean':\n type = 'bool';\n break;\n default:\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n\n parameterDefinitions[key] = {\n required: required ? required.includes(key) : false,\n type,\n description,\n };\n }\n }\n }\n\n return {\n name: tool.name,\n description: tool.description,\n parameterDefinitions,\n };\n });\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, force_single_step: false };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, force_single_step: false };\n case 'required':\n return { tools: mappedTools, force_single_step: true };\n\n // cohere does not support 'none' tool choice, so we remove the tools:\n case 'none':\n return { tools: undefined, force_single_step: false };\n\n // cohere does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case 'tool':\n return {\n tools: mappedTools.filter(tool => tool.name === toolChoice.toolName),\n force_single_step: true,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(\n prompt: LanguageModelV1Prompt,\n): CohereChatPrompt {\n const messages: CohereChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'SYSTEM', message: content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'USER',\n message: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'image': {\n throw new UnsupportedFunctionalityError({\n functionality: 'image-part',\n });\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n name: string;\n parameters: object;\n }> = [];\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 name: part.toolName,\n parameters: part.args as object,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'CHATBOT',\n message: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push({\n role: 'TOOL',\n tool_results: content.map(toolResult => ({\n call: {\n name: toolResult.toolName,\n\n /* \n Note: Currently the tool_results field requires we pass the parameters of the tool results again. It it is blank for two reasons:\n\n 1. The parameters are already present in chat_history as a tool message\n 2. The tool core message of the ai sdk does not include parameters\n \n It is possible to traverse through the chat history and get the parameters by id but it's currently empty since there wasn't any degradation in the output when left blank.\n */\n parameters: {},\n },\n outputs: [toolResult.result as object],\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;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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 case 'ERROR_LIMIT':\n return 'error';\n\n case 'ERROR_TOXIC':\n return 'content-filter';\n\n case 'USER_CANCEL':\n return 'other';\n\n default:\n return 'unknown';\n }\n}\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider","import_provider_utils","import_zod","generateId","type","_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-embedding-model.ts"],"sourcesContent":["export { cohere, createCohere } from './cohere-provider';\nexport type { CohereProvider, CohereProviderSettings } from './cohere-provider';\n","import {\n EmbeddingModelV1,\n LanguageModelV1,\n ProviderV1,\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, CohereChatSettings } from './cohere-chat-settings';\nimport { CohereEmbeddingModel } from './cohere-embedding-model';\nimport {\n CohereEmbeddingModelId,\n CohereEmbeddingSettings,\n} from './cohere-embedding-settings';\n\nexport interface CohereProvider extends ProviderV1 {\n (modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): LanguageModelV1;\n\n embedding(\n modelId: CohereEmbeddingModelId,\n settings?: CohereEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n textEmbeddingModel(\n modelId: CohereEmbeddingModelId,\n settings?: CohereEmbeddingSettings,\n ): EmbeddingModelV1<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/v1`.\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 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/v1';\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 = (\n modelId: CohereChatModelId,\n settings: CohereChatSettings = {},\n ) =>\n new CohereChatLanguageModel(modelId, settings, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n generateId: options.generateId ?? generateId,\n fetch: options.fetch,\n });\n\n const createTextEmbeddingModel = (\n modelId: CohereEmbeddingModelId,\n settings: CohereEmbeddingSettings = {},\n ) =>\n new CohereEmbeddingModel(modelId, settings, {\n provider: 'cohere.textEmbedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ) {\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, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.embedding = createTextEmbeddingModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n return provider as CohereProvider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV1,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereChatModelId,\n CohereChatSettings,\n} from '../src/cohere-chat-settings';\nimport { cohereFailedResponseHandler } from '../src/cohere-error';\nimport { convertToCohereChatPrompt } from '../src/convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from '../src/map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: CohereChatModelId;\n readonly settings: CohereChatSettings;\n\n private readonly config: CohereChatConfig;\n\n constructor(\n modelId: CohereChatModelId,\n settings: CohereChatSettings,\n config: CohereChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const chatPrompt = convertToCohereChatPrompt(prompt);\n\n // Cohere distinguishes between the current message and the chat history\n const lastMessage = chatPrompt.at(-1);\n const history = chatPrompt.slice(0, -1);\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n // none\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxTokens,\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', schema: responseFormat.schema }\n : undefined,\n\n // messages:\n chat_history: history,\n ...(lastMessage?.role === 'TOOL'\n ? { tool_results: lastMessage.tool_results }\n : {}),\n message: lastMessage\n ? lastMessage.role === 'USER'\n ? lastMessage.message\n : undefined\n : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return { ...baseArgs, ...prepareToolsAndToolChoice(mode) };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-json mode',\n });\n }\n\n case 'object-tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-tool mode',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const args = 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,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n const generateId = this.config.generateId;\n\n return {\n text: response.text,\n toolCalls: response.tool_calls\n ? response.tool_calls.map(toolCall => ({\n toolCallId: generateId(),\n toolName: toolCall.name,\n args: JSON.stringify(toolCall.parameters),\n toolCallType: 'function',\n }))\n : [],\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n promptTokens: response.meta.tokens.input_tokens,\n completionTokens: response.meta.tokens.output_tokens,\n },\n rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: undefined,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const args = 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: {\n ...args,\n stream: true,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonStreamResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n const toolCalls: Array<{\n toolCallId: string;\n toolName: string;\n }> = [];\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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.event_type;\n\n switch (type) {\n case 'text-generation': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.text,\n });\n return;\n }\n\n case 'tool-calls-chunk': {\n if (value.tool_call_delta) {\n const { index } = value.tool_call_delta;\n\n if (toolCalls[index] === undefined) {\n const toolCallId = generateId();\n\n toolCalls[index] = {\n toolCallId,\n toolName: '',\n };\n }\n\n if (value.tool_call_delta.name) {\n toolCalls[index].toolName = value.tool_call_delta.name;\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: '',\n });\n } else if (value.tool_call_delta.parameters) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: value.tool_call_delta.parameters,\n });\n }\n }\n return;\n }\n\n case 'tool-calls-generation': {\n for (let index = 0; index < value.tool_calls.length; index++) {\n const toolCall = value.tool_calls[index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n toolCallType: 'function',\n args: JSON.stringify(toolCall.parameters),\n });\n }\n\n return;\n }\n\n case 'stream-end': {\n finishReason = mapCohereFinishReason(value.finish_reason);\n const tokens = value.response.meta.tokens;\n\n usage = {\n promptTokens: tokens.input_tokens,\n completionTokens: tokens.output_tokens,\n };\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 rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: [],\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatResponseSchema = z.object({\n text: z.string(),\n tool_calls: z\n .array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n )\n .optional(),\n finish_reason: z.string(),\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatChunkSchema = z.discriminatedUnion('event_type', [\n z.object({\n event_type: z.literal('stream-start'),\n }),\n z.object({\n event_type: z.literal('search-queries-generation'),\n }),\n z.object({\n event_type: z.literal('search-results'),\n }),\n z.object({\n event_type: z.literal('text-generation'),\n text: z.string(),\n }),\n z.object({\n event_type: z.literal('citation-generation'),\n }),\n z.object({\n event_type: z.literal('tool-calls-generation'),\n tool_calls: z.array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n ),\n }),\n z.object({\n event_type: z.literal('tool-calls-chunk'),\n text: z.string().optional(),\n tool_call_delta: z\n .object({\n index: z.number(),\n name: z.string().optional(),\n parameters: z.string().optional(),\n })\n .optional(),\n }),\n z.object({\n event_type: z.literal('stream-end'),\n finish_reason: z.string(),\n response: z.object({\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n]);\n\n// For reference: https://docs.cohere.com/docs/parameter-types-in-tool-use\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined };\n }\n\n const mappedTools = tools.map(tool => {\n const { properties, required } = tool.parameters;\n\n const parameterDefinitions: any = {};\n\n if (properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (typeof value === 'object' && value !== null) {\n const { type: JSONType, description } = value;\n\n let type: 'str' | 'float' | 'int' | 'bool';\n\n if (typeof JSONType === 'string') {\n switch (JSONType) {\n case 'string':\n type = 'str';\n break;\n case 'number':\n type = 'float';\n break;\n case 'integer':\n type = 'int';\n break;\n case 'boolean':\n type = 'bool';\n break;\n default:\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n\n parameterDefinitions[key] = {\n required: required ? required.includes(key) : false,\n type,\n description,\n };\n }\n }\n }\n\n return {\n name: tool.name,\n description: tool.description,\n parameterDefinitions,\n };\n });\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, force_single_step: false };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, force_single_step: false };\n case 'required':\n return { tools: mappedTools, force_single_step: true };\n\n // cohere does not support 'none' tool choice, so we remove the tools:\n case 'none':\n return { tools: undefined, force_single_step: false };\n\n // cohere does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case 'tool':\n return {\n tools: mappedTools.filter(tool => tool.name === toolChoice.toolName),\n force_single_step: true,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(\n prompt: LanguageModelV1Prompt,\n): CohereChatPrompt {\n const messages: CohereChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'SYSTEM', message: content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'USER',\n message: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'image': {\n throw new UnsupportedFunctionalityError({\n functionality: 'image-part',\n });\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n name: string;\n parameters: object;\n }> = [];\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 name: part.toolName,\n parameters: part.args as object,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'CHATBOT',\n message: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push({\n role: 'TOOL',\n tool_results: content.map(toolResult => ({\n call: {\n name: toolResult.toolName,\n\n /* \n Note: Currently the tool_results field requires we pass the parameters of the tool results again. It it is blank for two reasons:\n\n 1. The parameters are already present in chat_history as a tool message\n 2. The tool core message of the ai sdk does not include parameters\n \n It is possible to traverse through the chat history and get the parameters by id but it's currently empty since there wasn't any degradation in the output when left blank.\n */\n parameters: {},\n },\n outputs: [toolResult.result as object],\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;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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 case 'ERROR_LIMIT':\n return 'error';\n\n case 'ERROR_TOXIC':\n return 'content-filter';\n\n case 'USER_CANCEL':\n return 'other';\n\n default:\n return 'unknown';\n }\n}\n","import {\n EmbeddingModelV1,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereEmbeddingModelId,\n CohereEmbeddingSettings,\n} from './cohere-embedding-settings';\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 EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\n readonly modelId: CohereEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 96;\n readonly supportsParallelCalls = true;\n\n private readonly config: CohereEmbeddingConfig;\n private readonly settings: CohereEmbeddingSettings;\n\n constructor(\n modelId: CohereEmbeddingModelId,\n settings: CohereEmbeddingSettings,\n config: CohereEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<string>['doEmbed']>>\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 { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n texts: values,\n input_type: this.settings.inputType ?? 'search_query',\n truncate: this.settings.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,\n usage: { tokens: response.meta.billed_units.input_tokens },\n rawResponse: { headers: responseHeaders },\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.array(z.array(z.number())),\n meta: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n }),\n }),\n});\n"],"mappings":"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","names":["import_provider_utils","import_provider","import_provider_utils","import_zod","generateId","type","import_provider","import_provider_utils","import_zod","_a"]}
package/dist/index.mjs CHANGED
@@ -1,7 +1,4 @@
1
1
  // src/cohere-provider.ts
2
- import {
3
- NoSuchModelError
4
- } from "@ai-sdk/provider";
5
2
  import {
6
3
  generateId,
7
4
  loadApiKey,
@@ -512,6 +509,74 @@ function prepareToolsAndToolChoice(mode) {
512
509
  }
513
510
  }
514
511
 
512
+ // src/cohere-embedding-model.ts
513
+ import {
514
+ TooManyEmbeddingValuesForCallError
515
+ } from "@ai-sdk/provider";
516
+ import {
517
+ combineHeaders as combineHeaders2,
518
+ createJsonResponseHandler as createJsonResponseHandler2,
519
+ postJsonToApi as postJsonToApi2
520
+ } from "@ai-sdk/provider-utils";
521
+ import { z as z3 } from "zod";
522
+ var CohereEmbeddingModel = class {
523
+ constructor(modelId, settings, config) {
524
+ this.specificationVersion = "v1";
525
+ this.maxEmbeddingsPerCall = 96;
526
+ this.supportsParallelCalls = true;
527
+ this.modelId = modelId;
528
+ this.settings = settings;
529
+ this.config = config;
530
+ }
531
+ get provider() {
532
+ return this.config.provider;
533
+ }
534
+ async doEmbed({
535
+ values,
536
+ headers,
537
+ abortSignal
538
+ }) {
539
+ var _a;
540
+ if (values.length > this.maxEmbeddingsPerCall) {
541
+ throw new TooManyEmbeddingValuesForCallError({
542
+ provider: this.provider,
543
+ modelId: this.modelId,
544
+ maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
545
+ values
546
+ });
547
+ }
548
+ const { responseHeaders, value: response } = await postJsonToApi2({
549
+ url: `${this.config.baseURL}/embed`,
550
+ headers: combineHeaders2(this.config.headers(), headers),
551
+ body: {
552
+ model: this.modelId,
553
+ texts: values,
554
+ input_type: (_a = this.settings.inputType) != null ? _a : "search_query",
555
+ truncate: this.settings.truncate
556
+ },
557
+ failedResponseHandler: cohereFailedResponseHandler,
558
+ successfulResponseHandler: createJsonResponseHandler2(
559
+ cohereTextEmbeddingResponseSchema
560
+ ),
561
+ abortSignal,
562
+ fetch: this.config.fetch
563
+ });
564
+ return {
565
+ embeddings: response.embeddings,
566
+ usage: { tokens: response.meta.billed_units.input_tokens },
567
+ rawResponse: { headers: responseHeaders }
568
+ };
569
+ }
570
+ };
571
+ var cohereTextEmbeddingResponseSchema = z3.object({
572
+ embeddings: z3.array(z3.array(z3.number())),
573
+ meta: z3.object({
574
+ billed_units: z3.object({
575
+ input_tokens: z3.number()
576
+ })
577
+ })
578
+ });
579
+
515
580
  // src/cohere-provider.ts
516
581
  function createCohere(options = {}) {
517
582
  var _a;
@@ -534,6 +599,12 @@ function createCohere(options = {}) {
534
599
  fetch: options.fetch
535
600
  });
536
601
  };
602
+ const createTextEmbeddingModel = (modelId, settings = {}) => new CohereEmbeddingModel(modelId, settings, {
603
+ provider: "cohere.textEmbedding",
604
+ baseURL,
605
+ headers: getHeaders,
606
+ fetch: options.fetch
607
+ });
537
608
  const provider = function(modelId, settings) {
538
609
  if (new.target) {
539
610
  throw new Error(
@@ -543,9 +614,8 @@ function createCohere(options = {}) {
543
614
  return createChatModel(modelId, settings);
544
615
  };
545
616
  provider.languageModel = createChatModel;
546
- provider.textEmbeddingModel = (modelId) => {
547
- throw new NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
548
- };
617
+ provider.embedding = createTextEmbeddingModel;
618
+ provider.textEmbeddingModel = createTextEmbeddingModel;
549
619
  return provider;
550
620
  }
551
621
  var cohere = createCohere();
@@ -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"],"sourcesContent":["import {\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\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, CohereChatSettings } from './cohere-chat-settings';\n\nexport interface CohereProvider extends ProviderV1 {\n (modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): LanguageModelV1;\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/v1`.\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 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/v1';\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 = (\n modelId: CohereChatModelId,\n settings: CohereChatSettings = {},\n ) =>\n new CohereChatLanguageModel(modelId, settings, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n generateId: options.generateId ?? generateId,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ) {\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, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider as CohereProvider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV1,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereChatModelId,\n CohereChatSettings,\n} from '../src/cohere-chat-settings';\nimport { cohereFailedResponseHandler } from '../src/cohere-error';\nimport { convertToCohereChatPrompt } from '../src/convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from '../src/map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: CohereChatModelId;\n readonly settings: CohereChatSettings;\n\n private readonly config: CohereChatConfig;\n\n constructor(\n modelId: CohereChatModelId,\n settings: CohereChatSettings,\n config: CohereChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const chatPrompt = convertToCohereChatPrompt(prompt);\n\n // Cohere distinguishes between the current message and the chat history\n const lastMessage = chatPrompt.at(-1);\n const history = chatPrompt.slice(0, -1);\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n // none\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxTokens,\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', schema: responseFormat.schema }\n : undefined,\n\n // messages:\n chat_history: history,\n ...(lastMessage?.role === 'TOOL'\n ? { tool_results: lastMessage.tool_results }\n : {}),\n message: lastMessage\n ? lastMessage.role === 'USER'\n ? lastMessage.message\n : undefined\n : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return { ...baseArgs, ...prepareToolsAndToolChoice(mode) };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-json mode',\n });\n }\n\n case 'object-tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-tool mode',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const args = 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,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n const generateId = this.config.generateId;\n\n return {\n text: response.text,\n toolCalls: response.tool_calls\n ? response.tool_calls.map(toolCall => ({\n toolCallId: generateId(),\n toolName: toolCall.name,\n args: JSON.stringify(toolCall.parameters),\n toolCallType: 'function',\n }))\n : [],\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n promptTokens: response.meta.tokens.input_tokens,\n completionTokens: response.meta.tokens.output_tokens,\n },\n rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: undefined,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const args = 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: {\n ...args,\n stream: true,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonStreamResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n const toolCalls: Array<{\n toolCallId: string;\n toolName: string;\n }> = [];\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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.event_type;\n\n switch (type) {\n case 'text-generation': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.text,\n });\n return;\n }\n\n case 'tool-calls-chunk': {\n if (value.tool_call_delta) {\n const { index } = value.tool_call_delta;\n\n if (toolCalls[index] === undefined) {\n const toolCallId = generateId();\n\n toolCalls[index] = {\n toolCallId,\n toolName: '',\n };\n }\n\n if (value.tool_call_delta.name) {\n toolCalls[index].toolName = value.tool_call_delta.name;\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: '',\n });\n } else if (value.tool_call_delta.parameters) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: value.tool_call_delta.parameters,\n });\n }\n }\n return;\n }\n\n case 'tool-calls-generation': {\n for (let index = 0; index < value.tool_calls.length; index++) {\n const toolCall = value.tool_calls[index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n toolCallType: 'function',\n args: JSON.stringify(toolCall.parameters),\n });\n }\n\n return;\n }\n\n case 'stream-end': {\n finishReason = mapCohereFinishReason(value.finish_reason);\n const tokens = value.response.meta.tokens;\n\n usage = {\n promptTokens: tokens.input_tokens,\n completionTokens: tokens.output_tokens,\n };\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 rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: [],\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatResponseSchema = z.object({\n text: z.string(),\n tool_calls: z\n .array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n )\n .optional(),\n finish_reason: z.string(),\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatChunkSchema = z.discriminatedUnion('event_type', [\n z.object({\n event_type: z.literal('stream-start'),\n }),\n z.object({\n event_type: z.literal('search-queries-generation'),\n }),\n z.object({\n event_type: z.literal('search-results'),\n }),\n z.object({\n event_type: z.literal('text-generation'),\n text: z.string(),\n }),\n z.object({\n event_type: z.literal('citation-generation'),\n }),\n z.object({\n event_type: z.literal('tool-calls-generation'),\n tool_calls: z.array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n ),\n }),\n z.object({\n event_type: z.literal('tool-calls-chunk'),\n text: z.string().optional(),\n tool_call_delta: z\n .object({\n index: z.number(),\n name: z.string().optional(),\n parameters: z.string().optional(),\n })\n .optional(),\n }),\n z.object({\n event_type: z.literal('stream-end'),\n finish_reason: z.string(),\n response: z.object({\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n]);\n\n// For reference: https://docs.cohere.com/docs/parameter-types-in-tool-use\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined };\n }\n\n const mappedTools = tools.map(tool => {\n const { properties, required } = tool.parameters;\n\n const parameterDefinitions: any = {};\n\n if (properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (typeof value === 'object' && value !== null) {\n const { type: JSONType, description } = value;\n\n let type: 'str' | 'float' | 'int' | 'bool';\n\n if (typeof JSONType === 'string') {\n switch (JSONType) {\n case 'string':\n type = 'str';\n break;\n case 'number':\n type = 'float';\n break;\n case 'integer':\n type = 'int';\n break;\n case 'boolean':\n type = 'bool';\n break;\n default:\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n\n parameterDefinitions[key] = {\n required: required ? required.includes(key) : false,\n type,\n description,\n };\n }\n }\n }\n\n return {\n name: tool.name,\n description: tool.description,\n parameterDefinitions,\n };\n });\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, force_single_step: false };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, force_single_step: false };\n case 'required':\n return { tools: mappedTools, force_single_step: true };\n\n // cohere does not support 'none' tool choice, so we remove the tools:\n case 'none':\n return { tools: undefined, force_single_step: false };\n\n // cohere does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case 'tool':\n return {\n tools: mappedTools.filter(tool => tool.name === toolChoice.toolName),\n force_single_step: true,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(\n prompt: LanguageModelV1Prompt,\n): CohereChatPrompt {\n const messages: CohereChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'SYSTEM', message: content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'USER',\n message: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'image': {\n throw new UnsupportedFunctionalityError({\n functionality: 'image-part',\n });\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n name: string;\n parameters: object;\n }> = [];\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 name: part.toolName,\n parameters: part.args as object,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'CHATBOT',\n message: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push({\n role: 'TOOL',\n tool_results: content.map(toolResult => ({\n call: {\n name: toolResult.toolName,\n\n /* \n Note: Currently the tool_results field requires we pass the parameters of the tool results again. It it is blank for two reasons:\n\n 1. The parameters are already present in chat_history as a tool message\n 2. The tool core message of the ai sdk does not include parameters\n \n It is possible to traverse through the chat history and get the parameters by id but it's currently empty since there wasn't any degradation in the output when left blank.\n */\n parameters: {},\n },\n outputs: [toolResult.result as object],\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;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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 case 'ERROR_LIMIT':\n return 'error';\n\n case 'ERROR_TOXIC':\n return 'content-filter';\n\n case 'USER_CANCEL':\n return 'other';\n\n default:\n return 'unknown';\n }\n}\n"],"mappings":"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","names":["UnsupportedFunctionalityError","z","UnsupportedFunctionalityError","generateId","z","type","_a"]}
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-embedding-model.ts"],"sourcesContent":["import {\n EmbeddingModelV1,\n LanguageModelV1,\n ProviderV1,\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, CohereChatSettings } from './cohere-chat-settings';\nimport { CohereEmbeddingModel } from './cohere-embedding-model';\nimport {\n CohereEmbeddingModelId,\n CohereEmbeddingSettings,\n} from './cohere-embedding-settings';\n\nexport interface CohereProvider extends ProviderV1 {\n (modelId: CohereChatModelId, settings?: CohereChatSettings): LanguageModelV1;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): LanguageModelV1;\n\n embedding(\n modelId: CohereEmbeddingModelId,\n settings?: CohereEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n textEmbeddingModel(\n modelId: CohereEmbeddingModelId,\n settings?: CohereEmbeddingSettings,\n ): EmbeddingModelV1<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/v1`.\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 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/v1';\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 = (\n modelId: CohereChatModelId,\n settings: CohereChatSettings = {},\n ) =>\n new CohereChatLanguageModel(modelId, settings, {\n provider: 'cohere.chat',\n baseURL,\n headers: getHeaders,\n generateId: options.generateId ?? generateId,\n fetch: options.fetch,\n });\n\n const createTextEmbeddingModel = (\n modelId: CohereEmbeddingModelId,\n settings: CohereEmbeddingSettings = {},\n ) =>\n new CohereEmbeddingModel(modelId, settings, {\n provider: 'cohere.textEmbedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ) {\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, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.embedding = createTextEmbeddingModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n return provider as CohereProvider;\n}\n\n/**\nDefault Cohere provider instance.\n */\nexport const cohere = createCohere();\n","import {\n LanguageModelV1,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereChatModelId,\n CohereChatSettings,\n} from '../src/cohere-chat-settings';\nimport { cohereFailedResponseHandler } from '../src/cohere-error';\nimport { convertToCohereChatPrompt } from '../src/convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from '../src/map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class CohereChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: CohereChatModelId;\n readonly settings: CohereChatSettings;\n\n private readonly config: CohereChatConfig;\n\n constructor(\n modelId: CohereChatModelId,\n settings: CohereChatSettings,\n config: CohereChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const chatPrompt = convertToCohereChatPrompt(prompt);\n\n // Cohere distinguishes between the current message and the chat history\n const lastMessage = chatPrompt.at(-1);\n const history = chatPrompt.slice(0, -1);\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n // none\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n max_tokens: maxTokens,\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', schema: responseFormat.schema }\n : undefined,\n\n // messages:\n chat_history: history,\n ...(lastMessage?.role === 'TOOL'\n ? { tool_results: lastMessage.tool_results }\n : {}),\n message: lastMessage\n ? lastMessage.role === 'USER'\n ? lastMessage.message\n : undefined\n : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return { ...baseArgs, ...prepareToolsAndToolChoice(mode) };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-json mode',\n });\n }\n\n case 'object-tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-tool mode',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const args = 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,\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n cohereChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n const generateId = this.config.generateId;\n\n return {\n text: response.text,\n toolCalls: response.tool_calls\n ? response.tool_calls.map(toolCall => ({\n toolCallId: generateId(),\n toolName: toolCall.name,\n args: JSON.stringify(toolCall.parameters),\n toolCallType: 'function',\n }))\n : [],\n finishReason: mapCohereFinishReason(response.finish_reason),\n usage: {\n promptTokens: response.meta.tokens.input_tokens,\n completionTokens: response.meta.tokens.output_tokens,\n },\n rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: undefined,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const args = 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: {\n ...args,\n stream: true,\n },\n failedResponseHandler: cohereFailedResponseHandler,\n successfulResponseHandler: createJsonStreamResponseHandler(\n cohereChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { chat_history, message, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n const toolCalls: Array<{\n toolCallId: string;\n toolName: string;\n }> = [];\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof cohereChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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.event_type;\n\n switch (type) {\n case 'text-generation': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.text,\n });\n return;\n }\n\n case 'tool-calls-chunk': {\n if (value.tool_call_delta) {\n const { index } = value.tool_call_delta;\n\n if (toolCalls[index] === undefined) {\n const toolCallId = generateId();\n\n toolCalls[index] = {\n toolCallId,\n toolName: '',\n };\n }\n\n if (value.tool_call_delta.name) {\n toolCalls[index].toolName = value.tool_call_delta.name;\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: '',\n });\n } else if (value.tool_call_delta.parameters) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n argsTextDelta: value.tool_call_delta.parameters,\n });\n }\n }\n return;\n }\n\n case 'tool-calls-generation': {\n for (let index = 0; index < value.tool_calls.length; index++) {\n const toolCall = value.tool_calls[index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCalls[index].toolCallId,\n toolName: toolCalls[index].toolName,\n toolCallType: 'function',\n args: JSON.stringify(toolCall.parameters),\n });\n }\n\n return;\n }\n\n case 'stream-end': {\n finishReason = mapCohereFinishReason(value.finish_reason);\n const tokens = value.response.meta.tokens;\n\n usage = {\n promptTokens: tokens.input_tokens,\n completionTokens: tokens.output_tokens,\n };\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 rawCall: {\n rawPrompt: {\n chat_history,\n message,\n },\n rawSettings,\n },\n rawResponse: { headers: responseHeaders },\n warnings: [],\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatResponseSchema = z.object({\n text: z.string(),\n tool_calls: z\n .array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n )\n .optional(),\n finish_reason: z.string(),\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst cohereChatChunkSchema = z.discriminatedUnion('event_type', [\n z.object({\n event_type: z.literal('stream-start'),\n }),\n z.object({\n event_type: z.literal('search-queries-generation'),\n }),\n z.object({\n event_type: z.literal('search-results'),\n }),\n z.object({\n event_type: z.literal('text-generation'),\n text: z.string(),\n }),\n z.object({\n event_type: z.literal('citation-generation'),\n }),\n z.object({\n event_type: z.literal('tool-calls-generation'),\n tool_calls: z.array(\n z.object({\n name: z.string(),\n parameters: z.unknown({}),\n }),\n ),\n }),\n z.object({\n event_type: z.literal('tool-calls-chunk'),\n text: z.string().optional(),\n tool_call_delta: z\n .object({\n index: z.number(),\n name: z.string().optional(),\n parameters: z.string().optional(),\n })\n .optional(),\n }),\n z.object({\n event_type: z.literal('stream-end'),\n finish_reason: z.string(),\n response: z.object({\n meta: z.object({\n tokens: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n }),\n }),\n }),\n }),\n]);\n\n// For reference: https://docs.cohere.com/docs/parameter-types-in-tool-use\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined };\n }\n\n const mappedTools = tools.map(tool => {\n const { properties, required } = tool.parameters;\n\n const parameterDefinitions: any = {};\n\n if (properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (typeof value === 'object' && value !== null) {\n const { type: JSONType, description } = value;\n\n let type: 'str' | 'float' | 'int' | 'bool';\n\n if (typeof JSONType === 'string') {\n switch (JSONType) {\n case 'string':\n type = 'str';\n break;\n case 'number':\n type = 'float';\n break;\n case 'integer':\n type = 'int';\n break;\n case 'boolean':\n type = 'bool';\n break;\n default:\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool call parameter of non-primitive type',\n });\n }\n\n parameterDefinitions[key] = {\n required: required ? required.includes(key) : false,\n type,\n description,\n };\n }\n }\n }\n\n return {\n name: tool.name,\n description: tool.description,\n parameterDefinitions,\n };\n });\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, force_single_step: false };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, force_single_step: false };\n case 'required':\n return { tools: mappedTools, force_single_step: true };\n\n // cohere does not support 'none' tool choice, so we remove the tools:\n case 'none':\n return { tools: undefined, force_single_step: false };\n\n // cohere does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case 'tool':\n return {\n tools: mappedTools.filter(tool => tool.name === toolChoice.toolName),\n force_single_step: true,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { CohereChatPrompt } from './cohere-chat-prompt';\n\nexport function convertToCohereChatPrompt(\n prompt: LanguageModelV1Prompt,\n): CohereChatPrompt {\n const messages: CohereChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'SYSTEM', message: content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'USER',\n message: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'image': {\n throw new UnsupportedFunctionalityError({\n functionality: 'image-part',\n });\n }\n }\n })\n .join(''),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n name: string;\n parameters: object;\n }> = [];\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 name: part.toolName,\n parameters: part.args as object,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'CHATBOT',\n message: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n case 'tool': {\n messages.push({\n role: 'TOOL',\n tool_results: content.map(toolResult => ({\n call: {\n name: toolResult.toolName,\n\n /* \n Note: Currently the tool_results field requires we pass the parameters of the tool results again. It it is blank for two reasons:\n\n 1. The parameters are already present in chat_history as a tool message\n 2. The tool core message of the ai sdk does not include parameters\n \n It is possible to traverse through the chat history and get the parameters by id but it's currently empty since there wasn't any degradation in the output when left blank.\n */\n parameters: {},\n },\n outputs: [toolResult.result as object],\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;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapCohereFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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 case 'ERROR_LIMIT':\n return 'error';\n\n case 'ERROR_TOXIC':\n return 'content-filter';\n\n case 'USER_CANCEL':\n return 'other';\n\n default:\n return 'unknown';\n }\n}\n","import {\n EmbeddingModelV1,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n CohereEmbeddingModelId,\n CohereEmbeddingSettings,\n} from './cohere-embedding-settings';\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 EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\n readonly modelId: CohereEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 96;\n readonly supportsParallelCalls = true;\n\n private readonly config: CohereEmbeddingConfig;\n private readonly settings: CohereEmbeddingSettings;\n\n constructor(\n modelId: CohereEmbeddingModelId,\n settings: CohereEmbeddingSettings,\n config: CohereEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<string>['doEmbed']>>\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 { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/embed`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n texts: values,\n input_type: this.settings.inputType ?? 'search_query',\n truncate: this.settings.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,\n usage: { tokens: response.meta.billed_units.input_tokens },\n rawResponse: { headers: responseHeaders },\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.array(z.array(z.number())),\n meta: z.object({\n billed_units: z.object({\n input_tokens: z.number(),\n }),\n }),\n});\n"],"mappings":"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","names":["UnsupportedFunctionalityError","z","UnsupportedFunctionalityError","generateId","z","type","combineHeaders","createJsonResponseHandler","postJsonToApi","z","postJsonToApi","combineHeaders","createJsonResponseHandler","z","_a"]}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@ai-sdk/cohere",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
8
8
  "types": "./dist/index.d.ts",
9
9
  "files": [
10
- "dist/**/*"
10
+ "dist/**/*",
11
+ "CHANGELOG.md"
11
12
  ],
12
13
  "exports": {
13
14
  "./package.json": "./package.json",