2024-07-06 14:19:33 +05:30
|
|
|
import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai';
|
2025-03-19 16:23:27 +05:30
|
|
|
import { getOpenaiApiKey } from '../config';
|
|
|
|
|
import { ChatModel, EmbeddingModel } from '.';
|
2025-04-01 19:26:15 +04:00
|
|
|
|
|
|
|
|
export const PROVIDER_INFO = {
|
|
|
|
|
key: 'openai',
|
2025-04-12 11:58:52 +05:30
|
|
|
displayName: 'OpenAI',
|
2025-04-01 19:26:15 +04:00
|
|
|
};
|
2025-03-19 16:23:27 +05:30
|
|
|
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
|
|
|
import { Embeddings } from '@langchain/core/embeddings';
|
|
|
|
|
|
|
|
|
|
const openaiChatModels: Record<string, string>[] = [
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT-3.5 Turbo',
|
|
|
|
|
key: 'gpt-3.5-turbo',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT-4',
|
|
|
|
|
key: 'gpt-4',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT-4 turbo',
|
|
|
|
|
key: 'gpt-4-turbo',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT-4 omni',
|
|
|
|
|
key: 'gpt-4o',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT-4 omni mini',
|
|
|
|
|
key: 'gpt-4o-mini',
|
|
|
|
|
},
|
2025-04-29 13:10:14 +05:30
|
|
|
{
|
|
|
|
|
displayName: 'GPT 4.1 nano',
|
|
|
|
|
key: 'gpt-4.1-nano',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT 4.1 mini',
|
|
|
|
|
key: 'gpt-4.1-mini',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT 4.1',
|
|
|
|
|
key: 'gpt-4.1',
|
|
|
|
|
},
|
2025-08-10 07:50:31 -07:00
|
|
|
{
|
|
|
|
|
displayName: 'GPT 5 nano',
|
|
|
|
|
key: 'gpt-5-nano',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT 5 mini',
|
|
|
|
|
key: 'gpt-5-mini',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'GPT 5',
|
|
|
|
|
key: 'gpt-5',
|
|
|
|
|
},
|
2025-03-19 16:23:27 +05:30
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const openaiEmbeddingModels: Record<string, string>[] = [
|
|
|
|
|
{
|
|
|
|
|
displayName: 'Text Embedding 3 Small',
|
|
|
|
|
key: 'text-embedding-3-small',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
displayName: 'Text Embedding 3 Large',
|
|
|
|
|
key: 'text-embedding-3-large',
|
|
|
|
|
},
|
|
|
|
|
];
|
2024-07-06 14:19:33 +05:30
|
|
|
|
|
|
|
|
export const loadOpenAIChatModels = async () => {
|
2025-03-19 16:23:27 +05:30
|
|
|
const openaiApiKey = getOpenaiApiKey();
|
2024-07-06 14:19:33 +05:30
|
|
|
|
2025-03-19 16:23:27 +05:30
|
|
|
if (!openaiApiKey) return {};
|
2024-07-08 15:39:27 +05:30
|
|
|
|
2024-07-06 14:19:33 +05:30
|
|
|
try {
|
2025-03-19 16:23:27 +05:30
|
|
|
const chatModels: Record<string, ChatModel> = {};
|
|
|
|
|
|
|
|
|
|
openaiChatModels.forEach((model) => {
|
|
|
|
|
chatModels[model.key] = {
|
|
|
|
|
displayName: model.displayName,
|
2024-09-24 22:34:43 +05:30
|
|
|
model: new ChatOpenAI({
|
2025-07-19 16:09:21 +05:30
|
|
|
apiKey: openaiApiKey,
|
2025-03-19 16:23:27 +05:30
|
|
|
modelName: model.key,
|
2025-08-12 21:39:14 +05:30
|
|
|
temperature: model.key.includes('gpt-5') ? 1 : 0.7,
|
2025-03-19 16:23:27 +05:30
|
|
|
}) as unknown as BaseChatModel,
|
|
|
|
|
};
|
|
|
|
|
});
|
2024-07-06 14:19:33 +05:30
|
|
|
|
|
|
|
|
return chatModels;
|
|
|
|
|
} catch (err) {
|
2025-03-19 16:23:27 +05:30
|
|
|
console.error(`Error loading OpenAI models: ${err}`);
|
2024-07-06 14:19:33 +05:30
|
|
|
return {};
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2025-03-19 16:23:27 +05:30
|
|
|
export const loadOpenAIEmbeddingModels = async () => {
|
|
|
|
|
const openaiApiKey = getOpenaiApiKey();
|
2024-07-06 14:19:33 +05:30
|
|
|
|
2025-03-19 16:23:27 +05:30
|
|
|
if (!openaiApiKey) return {};
|
2024-07-08 15:39:27 +05:30
|
|
|
|
2024-07-06 14:19:33 +05:30
|
|
|
try {
|
2025-03-19 16:23:27 +05:30
|
|
|
const embeddingModels: Record<string, EmbeddingModel> = {};
|
|
|
|
|
|
|
|
|
|
openaiEmbeddingModels.forEach((model) => {
|
|
|
|
|
embeddingModels[model.key] = {
|
|
|
|
|
displayName: model.displayName,
|
2024-09-24 22:34:43 +05:30
|
|
|
model: new OpenAIEmbeddings({
|
2025-07-19 16:09:21 +05:30
|
|
|
apiKey: openaiApiKey,
|
2025-03-19 16:23:27 +05:30
|
|
|
modelName: model.key,
|
|
|
|
|
}) as unknown as Embeddings,
|
|
|
|
|
};
|
|
|
|
|
});
|
2024-07-06 14:19:33 +05:30
|
|
|
|
|
|
|
|
return embeddingModels;
|
|
|
|
|
} catch (err) {
|
2025-03-19 16:23:27 +05:30
|
|
|
console.error(`Error loading OpenAI embeddings models: ${err}`);
|
2024-07-06 14:19:33 +05:30
|
|
|
return {};
|
|
|
|
|
}
|
|
|
|
|
};
|