mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
refactor: Move OpenAI Base URL option to credentials (#12175)
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user