@ai-sdk/cohere 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -151,8 +151,11 @@ var CohereChatLanguageModel = class {
151
151
  maxTokens,
152
152
  temperature,
153
153
  topP,
154
+ topK,
154
155
  frequencyPenalty,
155
156
  presencePenalty,
157
+ stopSequences,
158
+ responseFormat,
156
159
  seed
157
160
  }) {
158
161
  const type = mode.type;
@@ -169,7 +172,11 @@ var CohereChatLanguageModel = class {
169
172
  max_tokens: maxTokens,
170
173
  temperature,
171
174
  p: topP,
175
+ k: topK,
172
176
  seed,
177
+ stop_sequences: stopSequences,
178
+ // response format:
179
+ response_format: (responseFormat == null ? void 0 : responseFormat.type) === "json" ? { type: "json_object", schema: responseFormat.schema } : void 0,
173
180
  // messages:
174
181
  chat_history: history,
175
182
  message: lastMessage.role === "USER" ? lastMessage.message : void 0
@@ -188,11 +195,6 @@ var CohereChatLanguageModel = class {
188
195
  functionality: "object-tool mode"
189
196
  });
190
197
  }
191
- case "object-grammar": {
192
- throw new import_provider2.UnsupportedFunctionalityError({
193
- functionality: "object-grammar mode"
194
- });
195
- }
196
198
  default: {
197
199
  const _exhaustiveCheck = type;
198
200
  throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
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 * from './cohere-provider';\n","import {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\n\nexport interface CohereProvider {\n (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\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 `MISTRAL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate 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: 'mistral.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\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 ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: typeof fetch;\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 frequencyPenalty,\n presencePenalty,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n // Cohere distinguishes between the current message and the chat history\n const chatPrompt = convertToCohereChatPrompt(prompt);\n const [lastMessage, ...history] = chatPrompt;\n\n const args = {\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 seed,\n\n // messages:\n chat_history: history,\n message: lastMessage.role === 'USER' ? lastMessage.message : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return args;\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 case 'object-grammar': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-grammar 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\n return {\n text: response.text,\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\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 '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 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, focussed 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 }),\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","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 throw new UnsupportedFunctionalityError({\n functionality: 'tool-call',\n });\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 throw new UnsupportedFunctionalityError({\n functionality: 'tool role',\n });\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_utils","import_provider","import_provider_utils","import_zod","_a"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/cohere-provider.ts","../src/cohere-chat-language-model.ts","../src/cohere-error.ts","../src/convert-to-cohere-chat-prompt.ts","../src/map-cohere-finish-reason.ts"],"sourcesContent":["export * from './cohere-provider';\n","import {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\n\nexport interface CohereProvider {\n (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\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 `MISTRAL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate 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: 'mistral.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\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 ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: typeof fetch;\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 // Cohere distinguishes between the current message and the chat history\n const chatPrompt = convertToCohereChatPrompt(prompt);\n const [lastMessage, ...history] = chatPrompt;\n\n const args = {\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 message: lastMessage.role === 'USER' ? lastMessage.message : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return args;\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\n return {\n text: response.text,\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\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 '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 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, focussed 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 }),\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","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 throw new UnsupportedFunctionalityError({\n functionality: 'tool-call',\n });\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 throw new UnsupportedFunctionalityError({\n functionality: 'tool role',\n });\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_utils","import_provider","import_provider_utils","import_zod","_a"]}
package/dist/index.mjs CHANGED
@@ -137,8 +137,11 @@ var CohereChatLanguageModel = class {
137
137
  maxTokens,
138
138
  temperature,
139
139
  topP,
140
+ topK,
140
141
  frequencyPenalty,
141
142
  presencePenalty,
143
+ stopSequences,
144
+ responseFormat,
142
145
  seed
143
146
  }) {
144
147
  const type = mode.type;
@@ -155,7 +158,11 @@ var CohereChatLanguageModel = class {
155
158
  max_tokens: maxTokens,
156
159
  temperature,
157
160
  p: topP,
161
+ k: topK,
158
162
  seed,
163
+ stop_sequences: stopSequences,
164
+ // response format:
165
+ response_format: (responseFormat == null ? void 0 : responseFormat.type) === "json" ? { type: "json_object", schema: responseFormat.schema } : void 0,
159
166
  // messages:
160
167
  chat_history: history,
161
168
  message: lastMessage.role === "USER" ? lastMessage.message : void 0
@@ -174,11 +181,6 @@ var CohereChatLanguageModel = class {
174
181
  functionality: "object-tool mode"
175
182
  });
176
183
  }
177
- case "object-grammar": {
178
- throw new UnsupportedFunctionalityError2({
179
- functionality: "object-grammar mode"
180
- });
181
- }
182
184
  default: {
183
185
  const _exhaustiveCheck = type;
184
186
  throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
@@ -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 generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\n\nexport interface CohereProvider {\n (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\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 `MISTRAL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate 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: 'mistral.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\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 ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: typeof fetch;\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 frequencyPenalty,\n presencePenalty,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n // Cohere distinguishes between the current message and the chat history\n const chatPrompt = convertToCohereChatPrompt(prompt);\n const [lastMessage, ...history] = chatPrompt;\n\n const args = {\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 seed,\n\n // messages:\n chat_history: history,\n message: lastMessage.role === 'USER' ? lastMessage.message : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return args;\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 case 'object-grammar': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-grammar 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\n return {\n text: response.text,\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\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 '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 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, focussed 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 }),\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","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 throw new UnsupportedFunctionalityError({\n functionality: 'tool-call',\n });\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 throw new UnsupportedFunctionalityError({\n functionality: 'tool role',\n });\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","z","_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"],"sourcesContent":["import {\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { CohereChatLanguageModel } from './cohere-chat-language-model';\n\nexport interface CohereProvider {\n (\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: CohereChatModelId,\n settings?: CohereChatSettings,\n ): CohereChatLanguageModel;\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 `MISTRAL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: typeof fetch;\n\n generateId?: () => string;\n}\n\n/**\nCreate 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: 'mistral.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\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 ParseResult,\n combineHeaders,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { CohereChatModelId, CohereChatSettings } from './cohere-chat-settings';\nimport { cohereFailedResponseHandler } from './cohere-error';\nimport { convertToCohereChatPrompt } from './convert-to-cohere-chat-prompt';\nimport { mapCohereFinishReason } from './map-cohere-finish-reason';\n\ntype CohereChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: typeof fetch;\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 // Cohere distinguishes between the current message and the chat history\n const chatPrompt = convertToCohereChatPrompt(prompt);\n const [lastMessage, ...history] = chatPrompt;\n\n const args = {\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 message: lastMessage.role === 'USER' ? lastMessage.message : undefined,\n };\n\n switch (type) {\n case 'regular': {\n return args;\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\n return {\n text: response.text,\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\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 '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 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, focussed 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 }),\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","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 throw new UnsupportedFunctionalityError({\n functionality: 'tool-call',\n });\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 throw new UnsupportedFunctionalityError({\n functionality: 'tool role',\n });\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","z","_a"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/cohere",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -18,8 +18,8 @@
18
18
  }
19
19
  },
20
20
  "dependencies": {
21
- "@ai-sdk/provider": "0.0.11",
22
- "@ai-sdk/provider-utils": "1.0.1"
21
+ "@ai-sdk/provider": "0.0.13",
22
+ "@ai-sdk/provider-utils": "1.0.3"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^18",