refactor: Move OpenAI Base URL option to credentials (#12175)

This commit is contained in:
Ricardo Espinoza
2024-12-17 09:12:15 -05:00
committed by GitHub
parent 27bd3c85b3
commit 4d8e9cfc61
6 changed files with 40 additions and 10 deletions

View File

@@ -79,7 +79,7 @@ export class EmbeddingsOpenAi implements INodeType {
},
],
group: ['transform'],
version: [1, 1.1],
version: [1, 1.1, 1.2],
description: 'Use Embeddings OpenAI',
defaults: {
name: 'Embeddings OpenAI',
@@ -106,7 +106,7 @@ export class EmbeddingsOpenAi implements INodeType {
requestDefaults: {
ignoreHttpStatusErrors: true,
baseURL:
'={{ $parameter.options?.baseURL?.split("/").slice(0,-1).join("/") || "https://api.openai.com" }}',
'={{ $parameter.options?.baseURL?.split("/").slice(0,-1).join("/") || $credentials.url?.split("/").slice(0,-1).join("/") || "https://api.openai.com" }}',
},
properties: [
getConnectionHintNoticeField([NodeConnectionType.AiVectorStore]),
@@ -171,6 +171,11 @@ export class EmbeddingsOpenAi implements INodeType {
default: 'https://api.openai.com/v1',
description: 'Override the default base URL for the API',
type: 'string',
displayOptions: {
hide: {
'@version': [{ _cnd: { gte: 1.2 } }],
},
},
},
{
displayName: 'Batch Size',
@@ -219,6 +224,8 @@ export class EmbeddingsOpenAi implements INodeType {
const configuration: ClientOptions = {};
if (options.baseURL) {
configuration.baseURL = options.baseURL;
} else if (credentials.url) {
configuration.baseURL = credentials.url as string;
}
const embeddings = new OpenAIEmbeddings(

View File

@@ -22,7 +22,7 @@ export class LmChatOpenAi implements INodeType {
name: 'lmChatOpenAi',
icon: { light: 'file:openAiLight.svg', dark: 'file:openAiLight.dark.svg' },
group: ['transform'],
version: 1,
version: [1, 1.1],
description: 'For advanced usage with an AI chain',
defaults: {
name: 'OpenAI Chat Model',
@@ -55,7 +55,7 @@ export class LmChatOpenAi implements INodeType {
requestDefaults: {
ignoreHttpStatusErrors: true,
baseURL:
'={{ $parameter.options?.baseURL?.split("/").slice(0,-1).join("/") || "https://api.openai.com" }}',
'={{ $parameter.options?.baseURL?.split("/").slice(0,-1).join("/") || $credentials?.url?.split("/").slice(0,-1).join("/") || "https://api.openai.com" }}',
},
properties: [
getConnectionHintNoticeField([NodeConnectionType.AiChain, NodeConnectionType.AiAgent]),
@@ -82,7 +82,7 @@ export class LmChatOpenAi implements INodeType {
routing: {
request: {
method: 'GET',
url: '={{ $parameter.options?.baseURL?.split("/").slice(-1).pop() || "v1" }}/models',
url: '={{ $parameter.options?.baseURL?.split("/").slice(-1).pop() || $credentials?.url?.split("/").slice(-1).pop() || "v1" }}/models',
},
output: {
postReceive: [
@@ -98,6 +98,7 @@ export class LmChatOpenAi implements INodeType {
// If the baseURL is not set or is set to api.openai.com, include only chat models
pass: `={{
($parameter.options?.baseURL && !$parameter.options?.baseURL?.includes('api.openai.com')) ||
($credentials?.url && !$credentials.url.includes('api.openai.com')) ||
$responseItem.id.startsWith('ft:') ||
$responseItem.id.startsWith('o1') ||
($responseItem.id.startsWith('gpt-') && !$responseItem.id.includes('instruct'))
@@ -156,6 +157,11 @@ export class LmChatOpenAi implements INodeType {
default: 'https://api.openai.com/v1',
description: 'Override the default base URL for the API',
type: 'string',
displayOptions: {
hide: {
'@version': [{ _cnd: { gte: 1.1 } }],
},
},
},
{
displayName: 'Frequency Penalty',
@@ -261,6 +267,8 @@ export class LmChatOpenAi implements INodeType {
const configuration: ClientOptions = {};
if (options.baseURL) {
configuration.baseURL = options.baseURL;
} else if (credentials.url) {
configuration.baseURL = credentials.url as string;
}
const model = new ChatOpenAI({

View File

@@ -106,6 +106,11 @@ const properties: INodeProperties[] = [
default: 'https://api.openai.com/v1',
description: 'Override the default base URL for the API',
type: 'string',
displayOptions: {
hide: {
'@version': [{ _cnd: { gte: 1.8 } }],
},
},
},
{
displayName: 'Max Retries',
@@ -182,11 +187,13 @@ export async function execute(this: IExecuteFunctions, i: number): Promise<INode
preserveOriginalTools?: boolean;
};
const baseURL = (options.baseURL ?? credentials.url) as string;
const client = new OpenAIClient({
apiKey: credentials.apiKey as string,
maxRetries: options.maxRetries ?? 2,
timeout: options.timeout ?? 10000,
baseURL: options.baseURL,
baseURL,
});
const agent = new OpenAIAssistantRunnable({ assistantId, client, asAgent: true });

View File

@@ -77,7 +77,7 @@ export const versionDescription: INodeTypeDescription = {
name: 'openAi',
icon: { light: 'file:openAi.svg', dark: 'file:openAi.dark.svg' },
group: ['transform'],
version: [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7],
version: [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8],
subtitle: `={{(${prettifyOperation})($parameter.resource, $parameter.operation)}}`,
description: 'Message an assistant or GPT, analyze images, generate audio, etc.',
defaults: {