@ai-sdk/google-vertex 0.0.18 → 0.0.20
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 +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +9 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -18
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
@@ -30,6 +30,7 @@ declare class GoogleVertexLanguageModel implements LanguageModelV1 {
|
|
30
30
|
readonly specificationVersion = "v1";
|
31
31
|
readonly provider = "google-vertex";
|
32
32
|
readonly defaultObjectGenerationMode: undefined;
|
33
|
+
readonly supportsImageUrls = false;
|
33
34
|
readonly modelId: GoogleVertexModelId;
|
34
35
|
readonly settings: GoogleVertexSettings;
|
35
36
|
private readonly config;
|
package/dist/index.d.ts
CHANGED
@@ -30,6 +30,7 @@ declare class GoogleVertexLanguageModel implements LanguageModelV1 {
|
|
30
30
|
readonly specificationVersion = "v1";
|
31
31
|
readonly provider = "google-vertex";
|
32
32
|
readonly defaultObjectGenerationMode: undefined;
|
33
|
+
readonly supportsImageUrls = false;
|
33
34
|
readonly modelId: GoogleVertexModelId;
|
34
35
|
readonly settings: GoogleVertexSettings;
|
35
36
|
private readonly config;
|
package/dist/index.js
CHANGED
@@ -36,10 +36,8 @@ var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
36
36
|
// src/convert-to-google-vertex-content-request.ts
|
37
37
|
var import_provider = require("@ai-sdk/provider");
|
38
38
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
39
|
-
|
40
|
-
|
41
|
-
downloadImplementation = import_provider_utils.download
|
42
|
-
}) {
|
39
|
+
function convertToGoogleVertexContentRequest(prompt) {
|
40
|
+
var _a;
|
43
41
|
const systemInstructionParts = [];
|
44
42
|
const contents = [];
|
45
43
|
let systemMessagesAllowed = true;
|
@@ -48,7 +46,7 @@ async function convertToGoogleVertexContentRequest({
|
|
48
46
|
case "system": {
|
49
47
|
if (!systemMessagesAllowed) {
|
50
48
|
throw new import_provider.UnsupportedFunctionalityError({
|
51
|
-
functionality: "system messages
|
49
|
+
functionality: "system messages after first user message"
|
52
50
|
});
|
53
51
|
}
|
54
52
|
systemInstructionParts.push({ text: content });
|
@@ -64,22 +62,15 @@ async function convertToGoogleVertexContentRequest({
|
|
64
62
|
break;
|
65
63
|
}
|
66
64
|
case "image": {
|
67
|
-
let data;
|
68
|
-
let mimeType;
|
69
65
|
if (part.image instanceof URL) {
|
70
|
-
|
71
|
-
|
66
|
+
throw new import_provider.UnsupportedFunctionalityError({
|
67
|
+
functionality: "Image URLs in user messages"
|
72
68
|
});
|
73
|
-
data = downloadResult.data;
|
74
|
-
mimeType = downloadResult.mimeType;
|
75
|
-
} else {
|
76
|
-
data = part.image;
|
77
|
-
mimeType = part.mimeType;
|
78
69
|
}
|
79
70
|
parts.push({
|
80
71
|
inlineData: {
|
81
|
-
mimeType: mimeType != null ?
|
82
|
-
data: (0, import_provider_utils.convertUint8ArrayToBase64)(
|
72
|
+
mimeType: (_a = part.mimeType) != null ? _a : "image/jpeg",
|
73
|
+
data: (0, import_provider_utils.convertUint8ArrayToBase64)(part.image)
|
83
74
|
}
|
84
75
|
});
|
85
76
|
break;
|
@@ -288,6 +279,7 @@ var GoogleVertexLanguageModel = class {
|
|
288
279
|
this.specificationVersion = "v1";
|
289
280
|
this.provider = "google-vertex";
|
290
281
|
this.defaultObjectGenerationMode = void 0;
|
282
|
+
this.supportsImageUrls = false;
|
291
283
|
this.modelId = modelId;
|
292
284
|
this.settings = settings;
|
293
285
|
this.config = config;
|
@@ -357,7 +349,7 @@ var GoogleVertexLanguageModel = class {
|
|
357
349
|
tools: prepareTools(mode),
|
358
350
|
safetySettings: this.settings.safetySettings
|
359
351
|
}),
|
360
|
-
contentRequest:
|
352
|
+
contentRequest: convertToGoogleVertexContentRequest(prompt),
|
361
353
|
warnings
|
362
354
|
};
|
363
355
|
}
|
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 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"]}
|
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 readonly supportsImageUrls = false;\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: 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 } from '@ai-sdk/provider-utils';\nimport { Content, GenerateContentRequest, Part } from '@google-cloud/vertexai';\n\nexport function convertToGoogleVertexContentRequest(\n prompt: LanguageModelV1Prompt,\n): 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: 'system messages after first user message',\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 if (part.image instanceof URL) {\n // The AI SDK automatically downloads images for user image parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'Image URLs in user messages',\n });\n }\n\n parts.push({\n inlineData: {\n mimeType: part.mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(part.image),\n },\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
@@ -13,11 +13,9 @@ import { convertAsyncGeneratorToReadableStream } from "@ai-sdk/provider-utils";
|
|
13
13
|
import {
|
14
14
|
UnsupportedFunctionalityError
|
15
15
|
} from "@ai-sdk/provider";
|
16
|
-
import { convertUint8ArrayToBase64
|
17
|
-
|
18
|
-
|
19
|
-
downloadImplementation = download
|
20
|
-
}) {
|
16
|
+
import { convertUint8ArrayToBase64 } from "@ai-sdk/provider-utils";
|
17
|
+
function convertToGoogleVertexContentRequest(prompt) {
|
18
|
+
var _a;
|
21
19
|
const systemInstructionParts = [];
|
22
20
|
const contents = [];
|
23
21
|
let systemMessagesAllowed = true;
|
@@ -26,7 +24,7 @@ async function convertToGoogleVertexContentRequest({
|
|
26
24
|
case "system": {
|
27
25
|
if (!systemMessagesAllowed) {
|
28
26
|
throw new UnsupportedFunctionalityError({
|
29
|
-
functionality: "system messages
|
27
|
+
functionality: "system messages after first user message"
|
30
28
|
});
|
31
29
|
}
|
32
30
|
systemInstructionParts.push({ text: content });
|
@@ -42,22 +40,15 @@ async function convertToGoogleVertexContentRequest({
|
|
42
40
|
break;
|
43
41
|
}
|
44
42
|
case "image": {
|
45
|
-
let data;
|
46
|
-
let mimeType;
|
47
43
|
if (part.image instanceof URL) {
|
48
|
-
|
49
|
-
|
44
|
+
throw new UnsupportedFunctionalityError({
|
45
|
+
functionality: "Image URLs in user messages"
|
50
46
|
});
|
51
|
-
data = downloadResult.data;
|
52
|
-
mimeType = downloadResult.mimeType;
|
53
|
-
} else {
|
54
|
-
data = part.image;
|
55
|
-
mimeType = part.mimeType;
|
56
47
|
}
|
57
48
|
parts.push({
|
58
49
|
inlineData: {
|
59
|
-
mimeType: mimeType != null ?
|
60
|
-
data: convertUint8ArrayToBase64(
|
50
|
+
mimeType: (_a = part.mimeType) != null ? _a : "image/jpeg",
|
51
|
+
data: convertUint8ArrayToBase64(part.image)
|
61
52
|
}
|
62
53
|
});
|
63
54
|
break;
|
@@ -268,6 +259,7 @@ var GoogleVertexLanguageModel = class {
|
|
268
259
|
this.specificationVersion = "v1";
|
269
260
|
this.provider = "google-vertex";
|
270
261
|
this.defaultObjectGenerationMode = void 0;
|
262
|
+
this.supportsImageUrls = false;
|
271
263
|
this.modelId = modelId;
|
272
264
|
this.settings = settings;
|
273
265
|
this.config = config;
|
@@ -337,7 +329,7 @@ var GoogleVertexLanguageModel = class {
|
|
337
329
|
tools: prepareTools(mode),
|
338
330
|
safetySettings: this.settings.safetySettings
|
339
331
|
}),
|
340
|
-
contentRequest:
|
332
|
+
contentRequest: convertToGoogleVertexContentRequest(prompt),
|
341
333
|
warnings
|
342
334
|
};
|
343
335
|
}
|
package/dist/index.mjs.map
CHANGED
@@ -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 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"]}
|
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 readonly supportsImageUrls = false;\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: 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 } from '@ai-sdk/provider-utils';\nimport { Content, GenerateContentRequest, Part } from '@google-cloud/vertexai';\n\nexport function convertToGoogleVertexContentRequest(\n prompt: LanguageModelV1Prompt,\n): 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: 'system messages after first user message',\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 if (part.image instanceof URL) {\n // The AI SDK automatically downloads images for user image parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'Image URLs in user messages',\n });\n }\n\n parts.push({\n inlineData: {\n mimeType: part.mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(part.image),\n },\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.
|
3
|
+
"version": "0.0.20",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"sideEffects": false,
|
6
6
|
"main": "./dist/index.js",
|
@@ -18,8 +18,8 @@
|
|
18
18
|
}
|
19
19
|
},
|
20
20
|
"dependencies": {
|
21
|
-
"@ai-sdk/provider": "0.0.
|
22
|
-
"@ai-sdk/provider-utils": "1.0.
|
21
|
+
"@ai-sdk/provider": "0.0.14",
|
22
|
+
"@ai-sdk/provider-utils": "1.0.6",
|
23
23
|
"json-schema": "0.4.0"
|
24
24
|
},
|
25
25
|
"devDependencies": {
|