From a6a5372b5f8e48e98788c4e3750ac4b63e91a96f Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Mon, 15 Jan 2024 15:13:38 +0200 Subject: [PATCH] fix(OpenAI Node): Load correct models for operation (#8313) --- .../nodes/OpenAi/ChatDescription.ts | 63 +++++++++++++++++++ .../nodes/OpenAi/ImageDescription.ts | 62 ++++++++++++++++++ .../nodes-base/nodes/OpenAi/OpenAi.node.ts | 2 +- .../nodes/OpenAi/TextDescription.ts | 4 +- 4 files changed, 128 insertions(+), 3 deletions(-) diff --git a/packages/nodes-base/nodes/OpenAi/ChatDescription.ts b/packages/nodes-base/nodes/OpenAi/ChatDescription.ts index 4969f488a..6bbea27f1 100644 --- a/packages/nodes-base/nodes/OpenAi/ChatDescription.ts +++ b/packages/nodes-base/nodes/OpenAi/ChatDescription.ts @@ -42,6 +42,69 @@ const completeOperations: INodeProperties[] = [ show: { operation: ['complete'], resource: ['chat'], + '@version': [1], + }, + }, + typeOptions: { + loadOptions: { + routing: { + request: { + method: 'GET', + url: '/v1/models', + }, + output: { + postReceive: [ + { + type: 'rootProperty', + properties: { + property: 'data', + }, + }, + { + type: 'filter', + properties: { + pass: "={{ $responseItem.id.startsWith('gpt-') && !$responseItem.id.startsWith('gpt-4-vision') }}", + }, + }, + { + type: 'setKeyValue', + properties: { + name: '={{$responseItem.id}}', + value: '={{$responseItem.id}}', + }, + }, + { + type: 'sort', + properties: { + key: 'name', + }, + }, + ], + }, + }, + }, + }, + routing: { + send: { + type: 'body', + property: 'model', + }, + }, + default: 'gpt-3.5-turbo', + }, + { + displayName: 'Model', + name: 'chatModel', + type: 'options', + description: + 'The model which will generate the completion. Learn more.', + displayOptions: { + show: { + operation: ['complete'], + resource: ['chat'], + }, + hide: { + '@version': [1], }, }, typeOptions: { diff --git a/packages/nodes-base/nodes/OpenAi/ImageDescription.ts b/packages/nodes-base/nodes/OpenAi/ImageDescription.ts index 19f000d63..ca2696752 100644 --- a/packages/nodes-base/nodes/OpenAi/ImageDescription.ts +++ b/packages/nodes-base/nodes/OpenAi/ImageDescription.ts @@ -114,6 +114,68 @@ const createOperations: INodeProperties[] = [ show: { resource: ['image'], operation: ['create'], + '@version': [1], + }, + }, + routing: { + send: { + type: 'body', + property: 'model', + }, + }, + }, + { + displayName: 'Model', + name: 'imageModel', + type: 'options', + default: 'dall-e-2', + description: 'The model to use for image generation', + typeOptions: { + loadOptions: { + routing: { + request: { + method: 'GET', + url: '/v1/models', + }, + output: { + postReceive: [ + { + type: 'rootProperty', + properties: { + property: 'data', + }, + }, + { + type: 'filter', + properties: { + pass: "={{ $responseItem.id.startsWith('dall-') }}", + }, + }, + { + type: 'setKeyValue', + properties: { + name: '={{$responseItem.id}}', + value: '={{$responseItem.id}}', + }, + }, + { + type: 'sort', + properties: { + key: 'name', + }, + }, + ], + }, + }, + }, + }, + displayOptions: { + show: { + resource: ['image'], + operation: ['create'], + }, + hide: { + '@version': [1], }, }, routing: { diff --git a/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts b/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts index e34af5925..a0aacffe6 100644 --- a/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts +++ b/packages/nodes-base/nodes/OpenAi/OpenAi.node.ts @@ -9,7 +9,7 @@ export class OpenAi implements INodeType { name: 'openAi', icon: 'file:openAi.svg', group: ['transform'], - version: 1, + version: [1, 1.1], subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Open AI', defaults: { diff --git a/packages/nodes-base/nodes/OpenAi/TextDescription.ts b/packages/nodes-base/nodes/OpenAi/TextDescription.ts index 360deb636..22d8b6a18 100644 --- a/packages/nodes-base/nodes/OpenAi/TextDescription.ts +++ b/packages/nodes-base/nodes/OpenAi/TextDescription.ts @@ -88,7 +88,7 @@ const completeOperations: INodeProperties[] = [ { type: 'filter', properties: { - pass: "={{ !$responseItem.id.startsWith('audio-') && !$responseItem.id.startsWith('gpt-') && !$responseItem.id.startsWith('dall-') && !$responseItem.id.startsWith('tts-') && !$responseItem.id.startsWith('whisper-') && !['cushman:2020-05-03', 'davinci-if:3.0.0', 'davinci-instruct-beta:2.0.0', 'if'].includes($responseItem.id) && !$responseItem.id.includes('-edit-') && !$responseItem.id.endsWith(':001') }}", + pass: "={{ !$responseItem.id.startsWith('audio-') && ($responseItem.id === 'gpt-3.5-turbo-instruct' || !$responseItem.id.startsWith('gpt-') ) && !$responseItem.id.startsWith('dall-') && !$responseItem.id.startsWith('tts-') && !$responseItem.id.startsWith('whisper-') && !['cushman:2020-05-03', 'davinci-if:3.0.0', 'davinci-instruct-beta:2.0.0', 'if'].includes($responseItem.id) && !$responseItem.id.includes('-edit-') && !$responseItem.id.endsWith(':001') }}", }, }, { @@ -115,7 +115,7 @@ const completeOperations: INodeProperties[] = [ property: 'model', }, }, - default: 'text-davinci-003', + default: 'gpt-3.5-turbo-instruct', }, { displayName: 'Prompt',