From 56ad6696556fb703fd5d89f5bbf6c918353c40c4 Mon Sep 17 00:00:00 2001 From: Eugene Date: Tue, 17 Sep 2024 09:18:45 +0200 Subject: [PATCH] fix(Google Vertex Chat Model Node): Clean service account private key (#10770) --- .../LmChatGoogleVertex/LmChatGoogleVertex.node.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/@n8n/nodes-langchain/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts b/packages/@n8n/nodes-langchain/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts index 044428c01adc33..55ccda90d20e91 100644 --- a/packages/@n8n/nodes-langchain/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts +++ b/packages/@n8n/nodes-langchain/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts @@ -12,6 +12,7 @@ import { import { ChatVertexAI } from '@langchain/google-vertexai'; import type { SafetySetting } from '@google/generative-ai'; import { ProjectsClient } from '@google-cloud/resource-manager'; +import { formatPrivateKey } from 'n8n-nodes-base/dist/utils/utilities'; import { getConnectionHintNoticeField } from '../../../utils/sharedFields'; import { N8nLlmTracing } from '../N8nLlmTracing'; import { additionalOptions } from '../gemini-common/additional-options'; @@ -97,11 +98,13 @@ export class LmChatGoogleVertex implements INodeType { const results: Array<{ name: string; value: string }> = []; const credentials = await this.getCredentials('googleApi'); + const privateKey = formatPrivateKey(credentials.privateKey as string); + const email = (credentials.email as string).trim(); const client = new ProjectsClient({ credentials: { - client_email: credentials.email as string, - private_key: credentials.privateKey as string, + client_email: email, + private_key: privateKey, }, }); @@ -123,6 +126,8 @@ export class LmChatGoogleVertex implements INodeType { async supplyData(this: IExecuteFunctions, itemIndex: number): Promise { const credentials = await this.getCredentials('googleApi'); + const privateKey = formatPrivateKey(credentials.privateKey as string); + const email = (credentials.email as string).trim(); const modelName = this.getNodeParameter('modelName', itemIndex) as string; @@ -153,8 +158,8 @@ export class LmChatGoogleVertex implements INodeType { authOptions: { projectId, credentials: { - client_email: credentials.email as string, - private_key: credentials.privateKey as string, + client_email: email, + private_key: privateKey, }, }, model: modelName,