@ai-sdk/google-vertex 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -9,6 +9,8 @@ interface GoogleVertexSettings {
9
9
  Models use nucleus sampling or combined Top-k and nucleus sampling.
10
10
  Top-k sampling considers the set of topK most probable tokens.
11
11
  Models running with nucleus sampling don't allow topK setting.
12
+
13
+ @deprecated use the topK setting on the request instead.
12
14
  */
13
15
  topK?: number;
14
16
  /**
package/dist/index.d.ts CHANGED
@@ -9,6 +9,8 @@ interface GoogleVertexSettings {
9
9
  Models use nucleus sampling or combined Top-k and nucleus sampling.
10
10
  Top-k sampling considers the set of topK most probable tokens.
11
11
  Models running with nucleus sampling don't allow topK setting.
12
+
13
+ @deprecated use the topK setting on the request instead.
12
14
  */
13
15
  topK?: number;
14
16
  /**
package/dist/index.js CHANGED
@@ -293,14 +293,17 @@ var GoogleVertexLanguageModel = class {
293
293
  this.config = config;
294
294
  }
295
295
  async getArgs({
296
- prompt,
297
296
  mode,
298
- frequencyPenalty,
299
- presencePenalty,
300
- seed,
297
+ prompt,
301
298
  maxTokens,
302
299
  temperature,
303
300
  topP,
301
+ topK,
302
+ frequencyPenalty,
303
+ presencePenalty,
304
+ stopSequences,
305
+ responseFormat,
306
+ seed,
304
307
  headers
305
308
  }) {
306
309
  const warnings = [];
@@ -328,13 +331,21 @@ var GoogleVertexLanguageModel = class {
328
331
  setting: "headers"
329
332
  });
330
333
  }
334
+ if (responseFormat != null && responseFormat.type !== "text") {
335
+ warnings.push({
336
+ type: "unsupported-setting",
337
+ setting: "responseFormat",
338
+ details: "JSON response format is not supported."
339
+ });
340
+ }
331
341
  const generationConfig = {
332
342
  // model specific settings:
333
- topK: this.settings.topK,
343
+ topK: topK != null ? topK : this.settings.topK,
334
344
  // standardized settings:
335
345
  maxOutputTokens: maxTokens,
336
346
  temperature,
337
- topP
347
+ topP,
348
+ stopSequences
338
349
  };
339
350
  const type = mode.type;
340
351
  switch (type) {
@@ -360,11 +371,6 @@ var GoogleVertexLanguageModel = class {
360
371
  functionality: "object-tool mode"
361
372
  });
362
373
  }
363
- case "object-grammar": {
364
- throw new import_provider3.UnsupportedFunctionalityError({
365
- functionality: "object-grammar mode"
366
- });
367
- }
368
374
  default: {
369
375
  const _exhaustiveCheck = type;
370
376
  throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/google-vertex-provider.ts","../src/google-vertex-language-model.ts","../src/convert-to-google-vertex-content-request.ts","../src/map-google-vertex-finish-reason.ts","../src/prepare-function-declaration-schema.ts"],"sourcesContent":["export * from './google-vertex-provider';\n","import { generateId, loadSetting } from '@ai-sdk/provider-utils';\nimport { VertexAI, VertexInit } from '@google-cloud/vertexai';\nimport { GoogleVertexLanguageModel } from './google-vertex-language-model';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\n\nexport interface GoogleVertexProvider {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): GoogleVertexLanguageModel;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => GoogleVertexLanguageModel;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\nYour Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\nYour Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: string;\n\n /**\n Optional. The Authentication options provided by google-auth-library.\nComplete list of authentication options is documented in the\nGoogleAuthOptions interface:\nhttps://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.\n */\n googleAuthOptions?: VertexInit['googleAuthOptions'];\n\n // for testing\n generateId?: () => string;\n\n // for testing\n createVertexAI?: ({\n project,\n location,\n }: {\n project: string;\n location: string;\n }) => VertexAI;\n}\n\n/**\nCreate a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const createVertexAI = () => {\n const config = {\n project: loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n }),\n location: loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n }),\n googleAuthOptions: options.googleAuthOptions,\n };\n\n return options.createVertexAI?.(config) ?? new VertexAI(config);\n };\n\n const createChatModel = (\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings = {},\n ) =>\n new GoogleVertexLanguageModel(modelId, settings, {\n vertexAI: createVertexAI(),\n generateId: options.generateId ?? generateId,\n });\n\n const provider = function (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI 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 GoogleVertexProvider;\n}\n\n/**\nDefault Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n","import {\n LanguageModelV1,\n LanguageModelV1CallOptions,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n NoContentGeneratedError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertAsyncGeneratorToReadableStream } from '@ai-sdk/provider-utils';\nimport {\n GenerateContentResponse,\n GenerationConfig,\n Part,\n SafetySetting,\n VertexAI,\n} from '@google-cloud/vertexai';\nimport { convertToGoogleVertexContentRequest } from './convert-to-google-vertex-content-request';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\nimport { mapGoogleVertexFinishReason } from './map-google-vertex-finish-reason';\nimport { prepareFunctionDeclarationSchema } from './prepare-function-declaration-schema';\n\ntype GoogleVertexAIConfig = {\n vertexAI: VertexAI;\n generateId: () => string;\n};\n\nexport class GoogleVertexLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'google-vertex';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: GoogleVertexModelId;\n readonly settings: GoogleVertexSettings;\n\n private readonly config: GoogleVertexAIConfig;\n\n constructor(\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings,\n config: GoogleVertexAIConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private async getArgs({\n prompt,\n mode,\n frequencyPenalty,\n presencePenalty,\n seed,\n maxTokens,\n temperature,\n topP,\n headers,\n }: LanguageModelV1CallOptions) {\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n const generationConfig: GenerationConfig = {\n // model specific settings:\n topK: this.settings.topK,\n\n // standardized settings:\n maxOutputTokens: maxTokens,\n temperature,\n topP,\n };\n\n const type = mode.type;\n\n switch (type) {\n case 'regular': {\n return {\n model: this.config.vertexAI.getGenerativeModel({\n model: this.modelId,\n generationConfig,\n tools: prepareTools(mode),\n safetySettings: this.settings.safetySettings as\n | undefined\n | Array<SafetySetting>,\n }),\n contentRequest: await convertToGoogleVertexContentRequest({ prompt }),\n warnings,\n };\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 { model, contentRequest, warnings } = await this.getArgs(options);\n const { response } = await model.generateContent(contentRequest);\n\n const firstCandidate = response.candidates?.[0];\n\n if (firstCandidate == null) {\n throw new NoContentGeneratedError({ message: 'No candidates returned' });\n }\n\n const parts = firstCandidate.content.parts;\n const usageMetadata = response.usageMetadata;\n\n const toolCalls = getToolCallsFromParts({\n parts,\n generateId: this.config.generateId,\n });\n\n return {\n text: getTextFromParts(parts),\n toolCalls,\n finishReason: mapGoogleVertexFinishReason({\n finishReason: firstCandidate.finishReason,\n hasToolCalls: toolCalls != null && toolCalls.length > 0,\n }),\n usage: {\n promptTokens: usageMetadata?.promptTokenCount ?? NaN,\n completionTokens: usageMetadata?.candidatesTokenCount ?? NaN,\n },\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { model, contentRequest, warnings } = await this.getArgs(options);\n const { stream } = await model.generateContentStream(contentRequest);\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n let hasToolCalls = false;\n\n return {\n stream: convertAsyncGeneratorToReadableStream(stream).pipeThrough(\n new TransformStream<GenerateContentResponse, LanguageModelV1StreamPart>(\n {\n transform(chunk, controller) {\n const usageMetadata = chunk.usageMetadata;\n if (usageMetadata != null) {\n usage = {\n promptTokens: usageMetadata.promptTokenCount ?? NaN,\n completionTokens: usageMetadata.candidatesTokenCount ?? NaN,\n };\n }\n\n const candidate = chunk.candidates?.[0];\n\n if (candidate == null) {\n controller.enqueue({\n type: 'error',\n error: new NoContentGeneratedError({\n message: 'No candidates in chunk.',\n }),\n });\n return;\n }\n\n if (candidate.finishReason != null) {\n finishReason = mapGoogleVertexFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls,\n });\n }\n\n const content = candidate.content;\n\n const deltaText = getTextFromParts(content.parts);\n if (deltaText != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: deltaText,\n });\n }\n\n const toolCallDeltas = getToolCallsFromParts({\n parts: content.parts,\n generateId,\n });\n\n if (toolCallDeltas != null) {\n for (const toolCall of toolCallDeltas) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n args: toolCall.args,\n });\n\n hasToolCalls = true;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n },\n ),\n ),\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n}\n\nfunction prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return undefined;\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice?.type === 'none') {\n return undefined;\n }\n\n if (toolChoice == null || toolChoice.type === 'auto') {\n return [\n {\n functionDeclarations: tools.map(tool => ({\n name: tool.name,\n description: tool.description ?? '',\n parameters: prepareFunctionDeclarationSchema(tool.parameters),\n })),\n },\n ];\n }\n\n // forcing tool calls or a specific tool call is not supported by Vertex:\n throw new UnsupportedFunctionalityError({\n functionality: `toolChoice: ${toolChoice.type}`,\n });\n}\n\nfunction getToolCallsFromParts({\n parts,\n generateId,\n}: {\n parts: Part[];\n generateId: () => string;\n}) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n return parts.flatMap(part =>\n part.functionCall == null\n ? []\n : {\n toolCallType: 'function' as const,\n toolCallId: generateId(),\n toolName: part.functionCall.name,\n args: JSON.stringify(part.functionCall.args),\n },\n );\n}\n\nfunction getTextFromParts(parts: Part[] | undefined) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n const textParts = parts.filter(part => 'text' in part) as Array<\n Part & { text: string }\n >;\n\n return textParts.length === 0\n ? undefined\n : textParts.map(part => part.text).join('');\n}\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport { Content, GenerateContentRequest, Part } from '@google-cloud/vertexai';\n\nexport async function convertToGoogleVertexContentRequest({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<GenerateContentRequest> {\n const systemInstructionParts: Part[] = [];\n const contents: Content[] = [];\n let systemMessagesAllowed = true;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (!systemMessagesAllowed) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'system messages are only supported at the beginning of the conversation',\n });\n }\n systemInstructionParts.push({ text: content });\n break;\n }\n\n case 'user': {\n systemMessagesAllowed = false;\n\n const parts: Content['parts'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n parts.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n parts.push({\n inlineData: {\n mimeType: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n contents.push({ role: 'user', parts });\n break;\n }\n\n case 'assistant': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'assistant',\n parts: content\n .filter(part => part.type !== 'text' || part.text.length > 0)\n .map(part => {\n switch (part.type) {\n case 'text': {\n return { text: part.text };\n }\n\n case 'tool-call': {\n return {\n functionCall: {\n name: part.toolName,\n args: part.args as object,\n },\n };\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }),\n });\n\n break;\n }\n\n case 'tool': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'user',\n parts: content.map(part => ({\n functionResponse: {\n name: part.toolName,\n response: part.result as object,\n },\n })),\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new UnsupportedFunctionalityError({\n functionality: `role: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n return {\n systemInstruction:\n systemInstructionParts.length > 0\n ? { role: 'system', parts: systemInstructionParts }\n : undefined,\n contents,\n };\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { FinishReason } from '@google-cloud/vertexai';\n\nexport function mapGoogleVertexFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: FinishReason | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'STOP':\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'MAX_TOKENS':\n return 'length';\n case 'BLOCKLIST':\n case 'PROHIBITED_CONTENT':\n case 'SPII':\n case 'RECITATION':\n case 'SAFETY':\n return 'content-filter';\n case 'FINISH_REASON_UNSPECIFIED':\n case 'OTHER':\n default:\n return 'other';\n }\n}\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport {\n FunctionDeclarationSchema,\n FunctionDeclarationSchemaProperty,\n FunctionDeclarationSchemaType,\n} from '@google-cloud/vertexai';\nimport { JSONSchema7Definition } from 'json-schema';\n\nconst primitiveTypes = {\n string: FunctionDeclarationSchemaType.STRING,\n number: FunctionDeclarationSchemaType.NUMBER,\n integer: FunctionDeclarationSchemaType.INTEGER,\n boolean: FunctionDeclarationSchemaType.BOOLEAN,\n};\n\n/**\nConverts the tool parameters JSON schema to the format required by Vertex AI.\n */\nexport function prepareFunctionDeclarationSchema(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchema {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n properties: {},\n };\n }\n\n const type = jsonSchema.type;\n switch (type) {\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string':\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n properties: {},\n };\n\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchemaProperty(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchemaProperty>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n\n case 'array':\n throw new UnsupportedFunctionalityError({\n functionality:\n 'arrays are not supported as root or as array parameters',\n });\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `json schema type: ${type}`,\n });\n }\n }\n}\n\nfunction prepareFunctionDeclarationSchemaProperty(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchemaProperty {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n };\n }\n\n const type = jsonSchema.type;\n\n switch (type) {\n // primitive types:\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string': {\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n }\n // array:\n case 'array': {\n const items = jsonSchema.items;\n\n if (items == null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Array without items is not supported in tool parameters',\n });\n }\n\n if (Array.isArray(items)) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tuple arrays are not supported in tool parameters',\n });\n }\n\n return {\n type: FunctionDeclarationSchemaType.ARRAY,\n description: jsonSchema.description,\n required: jsonSchema.required,\n items: prepareFunctionDeclarationSchema(items),\n };\n }\n // nested object:\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchema(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchema>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n"],"mappings":"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","names":["import_provider_utils","import_vertexai","import_provider","import_provider_utils","import_provider","generateId","_a"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/google-vertex-provider.ts","../src/google-vertex-language-model.ts","../src/convert-to-google-vertex-content-request.ts","../src/map-google-vertex-finish-reason.ts","../src/prepare-function-declaration-schema.ts"],"sourcesContent":["export * from './google-vertex-provider';\n","import { generateId, loadSetting } from '@ai-sdk/provider-utils';\nimport { VertexAI, VertexInit } from '@google-cloud/vertexai';\nimport { GoogleVertexLanguageModel } from './google-vertex-language-model';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\n\nexport interface GoogleVertexProvider {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): GoogleVertexLanguageModel;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => GoogleVertexLanguageModel;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\nYour Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\nYour Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: string;\n\n /**\n Optional. The Authentication options provided by google-auth-library.\nComplete list of authentication options is documented in the\nGoogleAuthOptions interface:\nhttps://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.\n */\n googleAuthOptions?: VertexInit['googleAuthOptions'];\n\n // for testing\n generateId?: () => string;\n\n // for testing\n createVertexAI?: ({\n project,\n location,\n }: {\n project: string;\n location: string;\n }) => VertexAI;\n}\n\n/**\nCreate a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const createVertexAI = () => {\n const config = {\n project: loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n }),\n location: loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n }),\n googleAuthOptions: options.googleAuthOptions,\n };\n\n return options.createVertexAI?.(config) ?? new VertexAI(config);\n };\n\n const createChatModel = (\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings = {},\n ) =>\n new GoogleVertexLanguageModel(modelId, settings, {\n vertexAI: createVertexAI(),\n generateId: options.generateId ?? generateId,\n });\n\n const provider = function (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI 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 GoogleVertexProvider;\n}\n\n/**\nDefault Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n","import {\n LanguageModelV1,\n LanguageModelV1CallOptions,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n NoContentGeneratedError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertAsyncGeneratorToReadableStream } from '@ai-sdk/provider-utils';\nimport {\n GenerateContentResponse,\n GenerationConfig,\n Part,\n SafetySetting,\n VertexAI,\n} from '@google-cloud/vertexai';\nimport { convertToGoogleVertexContentRequest } from './convert-to-google-vertex-content-request';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\nimport { mapGoogleVertexFinishReason } from './map-google-vertex-finish-reason';\nimport { prepareFunctionDeclarationSchema } from './prepare-function-declaration-schema';\n\ntype GoogleVertexAIConfig = {\n vertexAI: VertexAI;\n generateId: () => string;\n};\n\nexport class GoogleVertexLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'google-vertex';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: GoogleVertexModelId;\n readonly settings: GoogleVertexSettings;\n\n private readonly config: GoogleVertexAIConfig;\n\n constructor(\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings,\n config: GoogleVertexAIConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n headers,\n }: LanguageModelV1CallOptions) {\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const generationConfig: GenerationConfig = {\n // model specific settings:\n topK: topK ?? this.settings.topK,\n\n // standardized settings:\n maxOutputTokens: maxTokens,\n temperature,\n topP,\n stopSequences,\n };\n\n const type = mode.type;\n\n switch (type) {\n case 'regular': {\n return {\n model: this.config.vertexAI.getGenerativeModel({\n model: this.modelId,\n generationConfig,\n tools: prepareTools(mode),\n safetySettings: this.settings.safetySettings as\n | undefined\n | Array<SafetySetting>,\n }),\n contentRequest: await convertToGoogleVertexContentRequest({ prompt }),\n warnings,\n };\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 { model, contentRequest, warnings } = await this.getArgs(options);\n const { response } = await model.generateContent(contentRequest);\n\n const firstCandidate = response.candidates?.[0];\n\n if (firstCandidate == null) {\n throw new NoContentGeneratedError({ message: 'No candidates returned' });\n }\n\n const parts = firstCandidate.content.parts;\n const usageMetadata = response.usageMetadata;\n\n const toolCalls = getToolCallsFromParts({\n parts,\n generateId: this.config.generateId,\n });\n\n return {\n text: getTextFromParts(parts),\n toolCalls,\n finishReason: mapGoogleVertexFinishReason({\n finishReason: firstCandidate.finishReason,\n hasToolCalls: toolCalls != null && toolCalls.length > 0,\n }),\n usage: {\n promptTokens: usageMetadata?.promptTokenCount ?? NaN,\n completionTokens: usageMetadata?.candidatesTokenCount ?? NaN,\n },\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { model, contentRequest, warnings } = await this.getArgs(options);\n const { stream } = await model.generateContentStream(contentRequest);\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n let hasToolCalls = false;\n\n return {\n stream: convertAsyncGeneratorToReadableStream(stream).pipeThrough(\n new TransformStream<GenerateContentResponse, LanguageModelV1StreamPart>(\n {\n transform(chunk, controller) {\n const usageMetadata = chunk.usageMetadata;\n if (usageMetadata != null) {\n usage = {\n promptTokens: usageMetadata.promptTokenCount ?? NaN,\n completionTokens: usageMetadata.candidatesTokenCount ?? NaN,\n };\n }\n\n const candidate = chunk.candidates?.[0];\n\n if (candidate == null) {\n controller.enqueue({\n type: 'error',\n error: new NoContentGeneratedError({\n message: 'No candidates in chunk.',\n }),\n });\n return;\n }\n\n if (candidate.finishReason != null) {\n finishReason = mapGoogleVertexFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls,\n });\n }\n\n const content = candidate.content;\n\n const deltaText = getTextFromParts(content.parts);\n if (deltaText != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: deltaText,\n });\n }\n\n const toolCallDeltas = getToolCallsFromParts({\n parts: content.parts,\n generateId,\n });\n\n if (toolCallDeltas != null) {\n for (const toolCall of toolCallDeltas) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n args: toolCall.args,\n });\n\n hasToolCalls = true;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n },\n ),\n ),\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n}\n\nfunction prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return undefined;\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice?.type === 'none') {\n return undefined;\n }\n\n if (toolChoice == null || toolChoice.type === 'auto') {\n return [\n {\n functionDeclarations: tools.map(tool => ({\n name: tool.name,\n description: tool.description ?? '',\n parameters: prepareFunctionDeclarationSchema(tool.parameters),\n })),\n },\n ];\n }\n\n // forcing tool calls or a specific tool call is not supported by Vertex:\n throw new UnsupportedFunctionalityError({\n functionality: `toolChoice: ${toolChoice.type}`,\n });\n}\n\nfunction getToolCallsFromParts({\n parts,\n generateId,\n}: {\n parts: Part[];\n generateId: () => string;\n}) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n return parts.flatMap(part =>\n part.functionCall == null\n ? []\n : {\n toolCallType: 'function' as const,\n toolCallId: generateId(),\n toolName: part.functionCall.name,\n args: JSON.stringify(part.functionCall.args),\n },\n );\n}\n\nfunction getTextFromParts(parts: Part[] | undefined) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n const textParts = parts.filter(part => 'text' in part) as Array<\n Part & { text: string }\n >;\n\n return textParts.length === 0\n ? undefined\n : textParts.map(part => part.text).join('');\n}\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport { Content, GenerateContentRequest, Part } from '@google-cloud/vertexai';\n\nexport async function convertToGoogleVertexContentRequest({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<GenerateContentRequest> {\n const systemInstructionParts: Part[] = [];\n const contents: Content[] = [];\n let systemMessagesAllowed = true;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (!systemMessagesAllowed) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'system messages are only supported at the beginning of the conversation',\n });\n }\n systemInstructionParts.push({ text: content });\n break;\n }\n\n case 'user': {\n systemMessagesAllowed = false;\n\n const parts: Content['parts'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n parts.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n parts.push({\n inlineData: {\n mimeType: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n contents.push({ role: 'user', parts });\n break;\n }\n\n case 'assistant': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'assistant',\n parts: content\n .filter(part => part.type !== 'text' || part.text.length > 0)\n .map(part => {\n switch (part.type) {\n case 'text': {\n return { text: part.text };\n }\n\n case 'tool-call': {\n return {\n functionCall: {\n name: part.toolName,\n args: part.args as object,\n },\n };\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }),\n });\n\n break;\n }\n\n case 'tool': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'user',\n parts: content.map(part => ({\n functionResponse: {\n name: part.toolName,\n response: part.result as object,\n },\n })),\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new UnsupportedFunctionalityError({\n functionality: `role: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n return {\n systemInstruction:\n systemInstructionParts.length > 0\n ? { role: 'system', parts: systemInstructionParts }\n : undefined,\n contents,\n };\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { FinishReason } from '@google-cloud/vertexai';\n\nexport function mapGoogleVertexFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: FinishReason | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'STOP':\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'MAX_TOKENS':\n return 'length';\n case 'BLOCKLIST':\n case 'PROHIBITED_CONTENT':\n case 'SPII':\n case 'RECITATION':\n case 'SAFETY':\n return 'content-filter';\n case 'FINISH_REASON_UNSPECIFIED':\n case 'OTHER':\n default:\n return 'other';\n }\n}\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport {\n FunctionDeclarationSchema,\n FunctionDeclarationSchemaProperty,\n FunctionDeclarationSchemaType,\n} from '@google-cloud/vertexai';\nimport { JSONSchema7Definition } from 'json-schema';\n\nconst primitiveTypes = {\n string: FunctionDeclarationSchemaType.STRING,\n number: FunctionDeclarationSchemaType.NUMBER,\n integer: FunctionDeclarationSchemaType.INTEGER,\n boolean: FunctionDeclarationSchemaType.BOOLEAN,\n};\n\n/**\nConverts the tool parameters JSON schema to the format required by Vertex AI.\n */\nexport function prepareFunctionDeclarationSchema(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchema {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n properties: {},\n };\n }\n\n const type = jsonSchema.type;\n switch (type) {\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string':\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n properties: {},\n };\n\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchemaProperty(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchemaProperty>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n\n case 'array':\n throw new UnsupportedFunctionalityError({\n functionality:\n 'arrays are not supported as root or as array parameters',\n });\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `json schema type: ${type}`,\n });\n }\n }\n}\n\nfunction prepareFunctionDeclarationSchemaProperty(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchemaProperty {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n };\n }\n\n const type = jsonSchema.type;\n\n switch (type) {\n // primitive types:\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string': {\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n }\n // array:\n case 'array': {\n const items = jsonSchema.items;\n\n if (items == null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Array without items is not supported in tool parameters',\n });\n }\n\n if (Array.isArray(items)) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tuple arrays are not supported in tool parameters',\n });\n }\n\n return {\n type: FunctionDeclarationSchemaType.ARRAY,\n description: jsonSchema.description,\n required: jsonSchema.required,\n items: prepareFunctionDeclarationSchema(items),\n };\n }\n // nested object:\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchema(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchema>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n"],"mappings":"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","names":["import_provider_utils","import_vertexai","import_provider","import_provider_utils","import_provider","generateId","_a"]}
package/dist/index.mjs CHANGED
@@ -273,14 +273,17 @@ var GoogleVertexLanguageModel = class {
273
273
  this.config = config;
274
274
  }
275
275
  async getArgs({
276
- prompt,
277
276
  mode,
278
- frequencyPenalty,
279
- presencePenalty,
280
- seed,
277
+ prompt,
281
278
  maxTokens,
282
279
  temperature,
283
280
  topP,
281
+ topK,
282
+ frequencyPenalty,
283
+ presencePenalty,
284
+ stopSequences,
285
+ responseFormat,
286
+ seed,
284
287
  headers
285
288
  }) {
286
289
  const warnings = [];
@@ -308,13 +311,21 @@ var GoogleVertexLanguageModel = class {
308
311
  setting: "headers"
309
312
  });
310
313
  }
314
+ if (responseFormat != null && responseFormat.type !== "text") {
315
+ warnings.push({
316
+ type: "unsupported-setting",
317
+ setting: "responseFormat",
318
+ details: "JSON response format is not supported."
319
+ });
320
+ }
311
321
  const generationConfig = {
312
322
  // model specific settings:
313
- topK: this.settings.topK,
323
+ topK: topK != null ? topK : this.settings.topK,
314
324
  // standardized settings:
315
325
  maxOutputTokens: maxTokens,
316
326
  temperature,
317
- topP
327
+ topP,
328
+ stopSequences
318
329
  };
319
330
  const type = mode.type;
320
331
  switch (type) {
@@ -340,11 +351,6 @@ var GoogleVertexLanguageModel = class {
340
351
  functionality: "object-tool mode"
341
352
  });
342
353
  }
343
- case "object-grammar": {
344
- throw new UnsupportedFunctionalityError3({
345
- functionality: "object-grammar mode"
346
- });
347
- }
348
354
  default: {
349
355
  const _exhaustiveCheck = type;
350
356
  throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/google-vertex-provider.ts","../src/google-vertex-language-model.ts","../src/convert-to-google-vertex-content-request.ts","../src/map-google-vertex-finish-reason.ts","../src/prepare-function-declaration-schema.ts"],"sourcesContent":["import { generateId, loadSetting } from '@ai-sdk/provider-utils';\nimport { VertexAI, VertexInit } from '@google-cloud/vertexai';\nimport { GoogleVertexLanguageModel } from './google-vertex-language-model';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\n\nexport interface GoogleVertexProvider {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): GoogleVertexLanguageModel;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => GoogleVertexLanguageModel;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\nYour Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\nYour Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: string;\n\n /**\n Optional. The Authentication options provided by google-auth-library.\nComplete list of authentication options is documented in the\nGoogleAuthOptions interface:\nhttps://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.\n */\n googleAuthOptions?: VertexInit['googleAuthOptions'];\n\n // for testing\n generateId?: () => string;\n\n // for testing\n createVertexAI?: ({\n project,\n location,\n }: {\n project: string;\n location: string;\n }) => VertexAI;\n}\n\n/**\nCreate a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const createVertexAI = () => {\n const config = {\n project: loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n }),\n location: loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n }),\n googleAuthOptions: options.googleAuthOptions,\n };\n\n return options.createVertexAI?.(config) ?? new VertexAI(config);\n };\n\n const createChatModel = (\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings = {},\n ) =>\n new GoogleVertexLanguageModel(modelId, settings, {\n vertexAI: createVertexAI(),\n generateId: options.generateId ?? generateId,\n });\n\n const provider = function (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI 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 GoogleVertexProvider;\n}\n\n/**\nDefault Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n","import {\n LanguageModelV1,\n LanguageModelV1CallOptions,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n NoContentGeneratedError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertAsyncGeneratorToReadableStream } from '@ai-sdk/provider-utils';\nimport {\n GenerateContentResponse,\n GenerationConfig,\n Part,\n SafetySetting,\n VertexAI,\n} from '@google-cloud/vertexai';\nimport { convertToGoogleVertexContentRequest } from './convert-to-google-vertex-content-request';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\nimport { mapGoogleVertexFinishReason } from './map-google-vertex-finish-reason';\nimport { prepareFunctionDeclarationSchema } from './prepare-function-declaration-schema';\n\ntype GoogleVertexAIConfig = {\n vertexAI: VertexAI;\n generateId: () => string;\n};\n\nexport class GoogleVertexLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'google-vertex';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: GoogleVertexModelId;\n readonly settings: GoogleVertexSettings;\n\n private readonly config: GoogleVertexAIConfig;\n\n constructor(\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings,\n config: GoogleVertexAIConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private async getArgs({\n prompt,\n mode,\n frequencyPenalty,\n presencePenalty,\n seed,\n maxTokens,\n temperature,\n topP,\n headers,\n }: LanguageModelV1CallOptions) {\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n const generationConfig: GenerationConfig = {\n // model specific settings:\n topK: this.settings.topK,\n\n // standardized settings:\n maxOutputTokens: maxTokens,\n temperature,\n topP,\n };\n\n const type = mode.type;\n\n switch (type) {\n case 'regular': {\n return {\n model: this.config.vertexAI.getGenerativeModel({\n model: this.modelId,\n generationConfig,\n tools: prepareTools(mode),\n safetySettings: this.settings.safetySettings as\n | undefined\n | Array<SafetySetting>,\n }),\n contentRequest: await convertToGoogleVertexContentRequest({ prompt }),\n warnings,\n };\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 { model, contentRequest, warnings } = await this.getArgs(options);\n const { response } = await model.generateContent(contentRequest);\n\n const firstCandidate = response.candidates?.[0];\n\n if (firstCandidate == null) {\n throw new NoContentGeneratedError({ message: 'No candidates returned' });\n }\n\n const parts = firstCandidate.content.parts;\n const usageMetadata = response.usageMetadata;\n\n const toolCalls = getToolCallsFromParts({\n parts,\n generateId: this.config.generateId,\n });\n\n return {\n text: getTextFromParts(parts),\n toolCalls,\n finishReason: mapGoogleVertexFinishReason({\n finishReason: firstCandidate.finishReason,\n hasToolCalls: toolCalls != null && toolCalls.length > 0,\n }),\n usage: {\n promptTokens: usageMetadata?.promptTokenCount ?? NaN,\n completionTokens: usageMetadata?.candidatesTokenCount ?? NaN,\n },\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { model, contentRequest, warnings } = await this.getArgs(options);\n const { stream } = await model.generateContentStream(contentRequest);\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n let hasToolCalls = false;\n\n return {\n stream: convertAsyncGeneratorToReadableStream(stream).pipeThrough(\n new TransformStream<GenerateContentResponse, LanguageModelV1StreamPart>(\n {\n transform(chunk, controller) {\n const usageMetadata = chunk.usageMetadata;\n if (usageMetadata != null) {\n usage = {\n promptTokens: usageMetadata.promptTokenCount ?? NaN,\n completionTokens: usageMetadata.candidatesTokenCount ?? NaN,\n };\n }\n\n const candidate = chunk.candidates?.[0];\n\n if (candidate == null) {\n controller.enqueue({\n type: 'error',\n error: new NoContentGeneratedError({\n message: 'No candidates in chunk.',\n }),\n });\n return;\n }\n\n if (candidate.finishReason != null) {\n finishReason = mapGoogleVertexFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls,\n });\n }\n\n const content = candidate.content;\n\n const deltaText = getTextFromParts(content.parts);\n if (deltaText != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: deltaText,\n });\n }\n\n const toolCallDeltas = getToolCallsFromParts({\n parts: content.parts,\n generateId,\n });\n\n if (toolCallDeltas != null) {\n for (const toolCall of toolCallDeltas) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n args: toolCall.args,\n });\n\n hasToolCalls = true;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n },\n ),\n ),\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n}\n\nfunction prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return undefined;\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice?.type === 'none') {\n return undefined;\n }\n\n if (toolChoice == null || toolChoice.type === 'auto') {\n return [\n {\n functionDeclarations: tools.map(tool => ({\n name: tool.name,\n description: tool.description ?? '',\n parameters: prepareFunctionDeclarationSchema(tool.parameters),\n })),\n },\n ];\n }\n\n // forcing tool calls or a specific tool call is not supported by Vertex:\n throw new UnsupportedFunctionalityError({\n functionality: `toolChoice: ${toolChoice.type}`,\n });\n}\n\nfunction getToolCallsFromParts({\n parts,\n generateId,\n}: {\n parts: Part[];\n generateId: () => string;\n}) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n return parts.flatMap(part =>\n part.functionCall == null\n ? []\n : {\n toolCallType: 'function' as const,\n toolCallId: generateId(),\n toolName: part.functionCall.name,\n args: JSON.stringify(part.functionCall.args),\n },\n );\n}\n\nfunction getTextFromParts(parts: Part[] | undefined) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n const textParts = parts.filter(part => 'text' in part) as Array<\n Part & { text: string }\n >;\n\n return textParts.length === 0\n ? undefined\n : textParts.map(part => part.text).join('');\n}\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport { Content, GenerateContentRequest, Part } from '@google-cloud/vertexai';\n\nexport async function convertToGoogleVertexContentRequest({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<GenerateContentRequest> {\n const systemInstructionParts: Part[] = [];\n const contents: Content[] = [];\n let systemMessagesAllowed = true;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (!systemMessagesAllowed) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'system messages are only supported at the beginning of the conversation',\n });\n }\n systemInstructionParts.push({ text: content });\n break;\n }\n\n case 'user': {\n systemMessagesAllowed = false;\n\n const parts: Content['parts'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n parts.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n parts.push({\n inlineData: {\n mimeType: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n contents.push({ role: 'user', parts });\n break;\n }\n\n case 'assistant': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'assistant',\n parts: content\n .filter(part => part.type !== 'text' || part.text.length > 0)\n .map(part => {\n switch (part.type) {\n case 'text': {\n return { text: part.text };\n }\n\n case 'tool-call': {\n return {\n functionCall: {\n name: part.toolName,\n args: part.args as object,\n },\n };\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }),\n });\n\n break;\n }\n\n case 'tool': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'user',\n parts: content.map(part => ({\n functionResponse: {\n name: part.toolName,\n response: part.result as object,\n },\n })),\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new UnsupportedFunctionalityError({\n functionality: `role: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n return {\n systemInstruction:\n systemInstructionParts.length > 0\n ? { role: 'system', parts: systemInstructionParts }\n : undefined,\n contents,\n };\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { FinishReason } from '@google-cloud/vertexai';\n\nexport function mapGoogleVertexFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: FinishReason | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'STOP':\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'MAX_TOKENS':\n return 'length';\n case 'BLOCKLIST':\n case 'PROHIBITED_CONTENT':\n case 'SPII':\n case 'RECITATION':\n case 'SAFETY':\n return 'content-filter';\n case 'FINISH_REASON_UNSPECIFIED':\n case 'OTHER':\n default:\n return 'other';\n }\n}\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport {\n FunctionDeclarationSchema,\n FunctionDeclarationSchemaProperty,\n FunctionDeclarationSchemaType,\n} from '@google-cloud/vertexai';\nimport { JSONSchema7Definition } from 'json-schema';\n\nconst primitiveTypes = {\n string: FunctionDeclarationSchemaType.STRING,\n number: FunctionDeclarationSchemaType.NUMBER,\n integer: FunctionDeclarationSchemaType.INTEGER,\n boolean: FunctionDeclarationSchemaType.BOOLEAN,\n};\n\n/**\nConverts the tool parameters JSON schema to the format required by Vertex AI.\n */\nexport function prepareFunctionDeclarationSchema(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchema {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n properties: {},\n };\n }\n\n const type = jsonSchema.type;\n switch (type) {\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string':\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n properties: {},\n };\n\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchemaProperty(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchemaProperty>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n\n case 'array':\n throw new UnsupportedFunctionalityError({\n functionality:\n 'arrays are not supported as root or as array parameters',\n });\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `json schema type: ${type}`,\n });\n }\n }\n}\n\nfunction prepareFunctionDeclarationSchemaProperty(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchemaProperty {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n };\n }\n\n const type = jsonSchema.type;\n\n switch (type) {\n // primitive types:\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string': {\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n }\n // array:\n case 'array': {\n const items = jsonSchema.items;\n\n if (items == null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Array without items is not supported in tool parameters',\n });\n }\n\n if (Array.isArray(items)) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tuple arrays are not supported in tool parameters',\n });\n }\n\n return {\n type: FunctionDeclarationSchemaType.ARRAY,\n description: jsonSchema.description,\n required: jsonSchema.required,\n items: prepareFunctionDeclarationSchema(items),\n };\n }\n // nested object:\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchema(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchema>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n"],"mappings":"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","names":["UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","generateId","_a"]}
1
+ {"version":3,"sources":["../src/google-vertex-provider.ts","../src/google-vertex-language-model.ts","../src/convert-to-google-vertex-content-request.ts","../src/map-google-vertex-finish-reason.ts","../src/prepare-function-declaration-schema.ts"],"sourcesContent":["import { generateId, loadSetting } from '@ai-sdk/provider-utils';\nimport { VertexAI, VertexInit } from '@google-cloud/vertexai';\nimport { GoogleVertexLanguageModel } from './google-vertex-language-model';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\n\nexport interface GoogleVertexProvider {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): GoogleVertexLanguageModel;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => GoogleVertexLanguageModel;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\nYour Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\nYour Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: string;\n\n /**\n Optional. The Authentication options provided by google-auth-library.\nComplete list of authentication options is documented in the\nGoogleAuthOptions interface:\nhttps://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.\n */\n googleAuthOptions?: VertexInit['googleAuthOptions'];\n\n // for testing\n generateId?: () => string;\n\n // for testing\n createVertexAI?: ({\n project,\n location,\n }: {\n project: string;\n location: string;\n }) => VertexAI;\n}\n\n/**\nCreate a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const createVertexAI = () => {\n const config = {\n project: loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n }),\n location: loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n }),\n googleAuthOptions: options.googleAuthOptions,\n };\n\n return options.createVertexAI?.(config) ?? new VertexAI(config);\n };\n\n const createChatModel = (\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings = {},\n ) =>\n new GoogleVertexLanguageModel(modelId, settings, {\n vertexAI: createVertexAI(),\n generateId: options.generateId ?? generateId,\n });\n\n const provider = function (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI 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 GoogleVertexProvider;\n}\n\n/**\nDefault Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n","import {\n LanguageModelV1,\n LanguageModelV1CallOptions,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n NoContentGeneratedError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertAsyncGeneratorToReadableStream } from '@ai-sdk/provider-utils';\nimport {\n GenerateContentResponse,\n GenerationConfig,\n Part,\n SafetySetting,\n VertexAI,\n} from '@google-cloud/vertexai';\nimport { convertToGoogleVertexContentRequest } from './convert-to-google-vertex-content-request';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\nimport { mapGoogleVertexFinishReason } from './map-google-vertex-finish-reason';\nimport { prepareFunctionDeclarationSchema } from './prepare-function-declaration-schema';\n\ntype GoogleVertexAIConfig = {\n vertexAI: VertexAI;\n generateId: () => string;\n};\n\nexport class GoogleVertexLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'google-vertex';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: GoogleVertexModelId;\n readonly settings: GoogleVertexSettings;\n\n private readonly config: GoogleVertexAIConfig;\n\n constructor(\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings,\n config: GoogleVertexAIConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n headers,\n }: LanguageModelV1CallOptions) {\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const generationConfig: GenerationConfig = {\n // model specific settings:\n topK: topK ?? this.settings.topK,\n\n // standardized settings:\n maxOutputTokens: maxTokens,\n temperature,\n topP,\n stopSequences,\n };\n\n const type = mode.type;\n\n switch (type) {\n case 'regular': {\n return {\n model: this.config.vertexAI.getGenerativeModel({\n model: this.modelId,\n generationConfig,\n tools: prepareTools(mode),\n safetySettings: this.settings.safetySettings as\n | undefined\n | Array<SafetySetting>,\n }),\n contentRequest: await convertToGoogleVertexContentRequest({ prompt }),\n warnings,\n };\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 { model, contentRequest, warnings } = await this.getArgs(options);\n const { response } = await model.generateContent(contentRequest);\n\n const firstCandidate = response.candidates?.[0];\n\n if (firstCandidate == null) {\n throw new NoContentGeneratedError({ message: 'No candidates returned' });\n }\n\n const parts = firstCandidate.content.parts;\n const usageMetadata = response.usageMetadata;\n\n const toolCalls = getToolCallsFromParts({\n parts,\n generateId: this.config.generateId,\n });\n\n return {\n text: getTextFromParts(parts),\n toolCalls,\n finishReason: mapGoogleVertexFinishReason({\n finishReason: firstCandidate.finishReason,\n hasToolCalls: toolCalls != null && toolCalls.length > 0,\n }),\n usage: {\n promptTokens: usageMetadata?.promptTokenCount ?? NaN,\n completionTokens: usageMetadata?.candidatesTokenCount ?? NaN,\n },\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { model, contentRequest, warnings } = await this.getArgs(options);\n const { stream } = await model.generateContentStream(contentRequest);\n\n let finishReason: LanguageModelV1FinishReason = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const generateId = this.config.generateId;\n let hasToolCalls = false;\n\n return {\n stream: convertAsyncGeneratorToReadableStream(stream).pipeThrough(\n new TransformStream<GenerateContentResponse, LanguageModelV1StreamPart>(\n {\n transform(chunk, controller) {\n const usageMetadata = chunk.usageMetadata;\n if (usageMetadata != null) {\n usage = {\n promptTokens: usageMetadata.promptTokenCount ?? NaN,\n completionTokens: usageMetadata.candidatesTokenCount ?? NaN,\n };\n }\n\n const candidate = chunk.candidates?.[0];\n\n if (candidate == null) {\n controller.enqueue({\n type: 'error',\n error: new NoContentGeneratedError({\n message: 'No candidates in chunk.',\n }),\n });\n return;\n }\n\n if (candidate.finishReason != null) {\n finishReason = mapGoogleVertexFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls,\n });\n }\n\n const content = candidate.content;\n\n const deltaText = getTextFromParts(content.parts);\n if (deltaText != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: deltaText,\n });\n }\n\n const toolCallDeltas = getToolCallsFromParts({\n parts: content.parts,\n generateId,\n });\n\n if (toolCallDeltas != null) {\n for (const toolCall of toolCallDeltas) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n args: toolCall.args,\n });\n\n hasToolCalls = true;\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n },\n ),\n ),\n rawCall: {\n rawPrompt: contentRequest,\n rawSettings: {},\n },\n warnings,\n };\n }\n}\n\nfunction prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n) {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return undefined;\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice?.type === 'none') {\n return undefined;\n }\n\n if (toolChoice == null || toolChoice.type === 'auto') {\n return [\n {\n functionDeclarations: tools.map(tool => ({\n name: tool.name,\n description: tool.description ?? '',\n parameters: prepareFunctionDeclarationSchema(tool.parameters),\n })),\n },\n ];\n }\n\n // forcing tool calls or a specific tool call is not supported by Vertex:\n throw new UnsupportedFunctionalityError({\n functionality: `toolChoice: ${toolChoice.type}`,\n });\n}\n\nfunction getToolCallsFromParts({\n parts,\n generateId,\n}: {\n parts: Part[];\n generateId: () => string;\n}) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n return parts.flatMap(part =>\n part.functionCall == null\n ? []\n : {\n toolCallType: 'function' as const,\n toolCallId: generateId(),\n toolName: part.functionCall.name,\n args: JSON.stringify(part.functionCall.args),\n },\n );\n}\n\nfunction getTextFromParts(parts: Part[] | undefined) {\n if (parts == null) {\n return undefined; // parts are sometimes undefined when using safety settings\n }\n\n const textParts = parts.filter(part => 'text' in part) as Array<\n Part & { text: string }\n >;\n\n return textParts.length === 0\n ? undefined\n : textParts.map(part => part.text).join('');\n}\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64, download } from '@ai-sdk/provider-utils';\nimport { Content, GenerateContentRequest, Part } from '@google-cloud/vertexai';\n\nexport async function convertToGoogleVertexContentRequest({\n prompt,\n downloadImplementation = download,\n}: {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n}): Promise<GenerateContentRequest> {\n const systemInstructionParts: Part[] = [];\n const contents: Content[] = [];\n let systemMessagesAllowed = true;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (!systemMessagesAllowed) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'system messages are only supported at the beginning of the conversation',\n });\n }\n systemInstructionParts.push({ text: content });\n break;\n }\n\n case 'user': {\n systemMessagesAllowed = false;\n\n const parts: Content['parts'] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n parts.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n parts.push({\n inlineData: {\n mimeType: mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(data),\n },\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n contents.push({ role: 'user', parts });\n break;\n }\n\n case 'assistant': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'assistant',\n parts: content\n .filter(part => part.type !== 'text' || part.text.length > 0)\n .map(part => {\n switch (part.type) {\n case 'text': {\n return { text: part.text };\n }\n\n case 'tool-call': {\n return {\n functionCall: {\n name: part.toolName,\n args: part.args as object,\n },\n };\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `prompt part: ${_exhaustiveCheck}`,\n });\n }\n }\n }),\n });\n\n break;\n }\n\n case 'tool': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'user',\n parts: content.map(part => ({\n functionResponse: {\n name: part.toolName,\n response: part.result as object,\n },\n })),\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new UnsupportedFunctionalityError({\n functionality: `role: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n return {\n systemInstruction:\n systemInstructionParts.length > 0\n ? { role: 'system', parts: systemInstructionParts }\n : undefined,\n contents,\n };\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { FinishReason } from '@google-cloud/vertexai';\n\nexport function mapGoogleVertexFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: FinishReason | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'STOP':\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'MAX_TOKENS':\n return 'length';\n case 'BLOCKLIST':\n case 'PROHIBITED_CONTENT':\n case 'SPII':\n case 'RECITATION':\n case 'SAFETY':\n return 'content-filter';\n case 'FINISH_REASON_UNSPECIFIED':\n case 'OTHER':\n default:\n return 'other';\n }\n}\n","import { UnsupportedFunctionalityError } from '@ai-sdk/provider';\nimport {\n FunctionDeclarationSchema,\n FunctionDeclarationSchemaProperty,\n FunctionDeclarationSchemaType,\n} from '@google-cloud/vertexai';\nimport { JSONSchema7Definition } from 'json-schema';\n\nconst primitiveTypes = {\n string: FunctionDeclarationSchemaType.STRING,\n number: FunctionDeclarationSchemaType.NUMBER,\n integer: FunctionDeclarationSchemaType.INTEGER,\n boolean: FunctionDeclarationSchemaType.BOOLEAN,\n};\n\n/**\nConverts the tool parameters JSON schema to the format required by Vertex AI.\n */\nexport function prepareFunctionDeclarationSchema(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchema {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n properties: {},\n };\n }\n\n const type = jsonSchema.type;\n switch (type) {\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string':\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n properties: {},\n };\n\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchemaProperty(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchemaProperty>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n\n case 'array':\n throw new UnsupportedFunctionalityError({\n functionality:\n 'arrays are not supported as root or as array parameters',\n });\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `json schema type: ${type}`,\n });\n }\n }\n}\n\nfunction prepareFunctionDeclarationSchemaProperty(\n jsonSchema: JSONSchema7Definition,\n): FunctionDeclarationSchemaProperty {\n if (typeof jsonSchema === 'boolean') {\n return {\n type: FunctionDeclarationSchemaType.BOOLEAN,\n };\n }\n\n const type = jsonSchema.type;\n\n switch (type) {\n // primitive types:\n case 'number':\n case 'integer':\n case 'boolean':\n case 'string': {\n return {\n type: primitiveTypes[type],\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n }\n // array:\n case 'array': {\n const items = jsonSchema.items;\n\n if (items == null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Array without items is not supported in tool parameters',\n });\n }\n\n if (Array.isArray(items)) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tuple arrays are not supported in tool parameters',\n });\n }\n\n return {\n type: FunctionDeclarationSchemaType.ARRAY,\n description: jsonSchema.description,\n required: jsonSchema.required,\n items: prepareFunctionDeclarationSchema(items),\n };\n }\n // nested object:\n case 'object':\n return {\n type: FunctionDeclarationSchemaType.OBJECT,\n properties: Object.entries(jsonSchema.properties ?? {}).reduce(\n (acc, [key, value]) => {\n acc[key] = prepareFunctionDeclarationSchema(value);\n return acc;\n },\n {} as Record<string, FunctionDeclarationSchema>,\n ),\n description: jsonSchema.description,\n required: jsonSchema.required,\n };\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n"],"mappings":"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","names":["UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","generateId","_a"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/google-vertex",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
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.12",
22
- "@ai-sdk/provider-utils": "1.0.2",
21
+ "@ai-sdk/provider": "0.0.13",
22
+ "@ai-sdk/provider-utils": "1.0.4",
23
23
  "json-schema": "0.4.0"
24
24
  },
25
25
  "devDependencies": {