mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-10-19 05:48:15 +00:00
feat(routes): use new model registry
This commit is contained in:
@@ -1,23 +1,12 @@
|
|||||||
import handleImageSearch from '@/lib/chains/imageSearchAgent';
|
import handleImageSearch from '@/lib/chains/imageSearchAgent';
|
||||||
import {
|
import ModelRegistry from '@/lib/models/registry';
|
||||||
getCustomOpenaiApiKey,
|
import { ModelWithProvider } from '@/lib/models/types';
|
||||||
getCustomOpenaiApiUrl,
|
|
||||||
getCustomOpenaiModelName,
|
|
||||||
} from '@/lib/config';
|
|
||||||
import { getAvailableChatModelProviders } from '@/lib/providers';
|
|
||||||
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
||||||
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
||||||
import { ChatOpenAI } from '@langchain/openai';
|
|
||||||
|
|
||||||
interface ChatModel {
|
|
||||||
provider: string;
|
|
||||||
model: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ImageSearchBody {
|
interface ImageSearchBody {
|
||||||
query: string;
|
query: string;
|
||||||
chatHistory: any[];
|
chatHistory: any[];
|
||||||
chatModel?: ChatModel;
|
chatModel: ModelWithProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const POST = async (req: Request) => {
|
export const POST = async (req: Request) => {
|
||||||
@@ -34,35 +23,12 @@ export const POST = async (req: Request) => {
|
|||||||
})
|
})
|
||||||
.filter((msg) => msg !== undefined) as BaseMessage[];
|
.filter((msg) => msg !== undefined) as BaseMessage[];
|
||||||
|
|
||||||
const chatModelProviders = await getAvailableChatModelProviders();
|
const registry = new ModelRegistry();
|
||||||
|
|
||||||
const chatModelProvider =
|
const llm = await registry.loadChatModel(
|
||||||
chatModelProviders[
|
body.chatModel.providerId,
|
||||||
body.chatModel?.provider || Object.keys(chatModelProviders)[0]
|
body.chatModel.key,
|
||||||
];
|
);
|
||||||
const chatModel =
|
|
||||||
chatModelProvider[
|
|
||||||
body.chatModel?.model || Object.keys(chatModelProvider)[0]
|
|
||||||
];
|
|
||||||
|
|
||||||
let llm: BaseChatModel | undefined;
|
|
||||||
|
|
||||||
if (body.chatModel?.provider === 'custom_openai') {
|
|
||||||
llm = new ChatOpenAI({
|
|
||||||
apiKey: getCustomOpenaiApiKey(),
|
|
||||||
modelName: getCustomOpenaiModelName(),
|
|
||||||
temperature: 0.7,
|
|
||||||
configuration: {
|
|
||||||
baseURL: getCustomOpenaiApiUrl(),
|
|
||||||
},
|
|
||||||
}) as unknown as BaseChatModel;
|
|
||||||
} else if (chatModelProvider && chatModel) {
|
|
||||||
llm = chatModel.model;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!llm) {
|
|
||||||
return Response.json({ error: 'Invalid chat model' }, { status: 400 });
|
|
||||||
}
|
|
||||||
|
|
||||||
const images = await handleImageSearch(
|
const images = await handleImageSearch(
|
||||||
{
|
{
|
||||||
|
@@ -1,22 +1,12 @@
|
|||||||
import generateSuggestions from '@/lib/chains/suggestionGeneratorAgent';
|
import generateSuggestions from '@/lib/chains/suggestionGeneratorAgent';
|
||||||
import {
|
import ModelRegistry from '@/lib/models/registry';
|
||||||
getCustomOpenaiApiKey,
|
import { ModelWithProvider } from '@/lib/models/types';
|
||||||
getCustomOpenaiApiUrl,
|
|
||||||
getCustomOpenaiModelName,
|
|
||||||
} from '@/lib/config';
|
|
||||||
import { getAvailableChatModelProviders } from '@/lib/providers';
|
|
||||||
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
||||||
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
||||||
import { ChatOpenAI } from '@langchain/openai';
|
|
||||||
|
|
||||||
interface ChatModel {
|
|
||||||
provider: string;
|
|
||||||
model: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface SuggestionsGenerationBody {
|
interface SuggestionsGenerationBody {
|
||||||
chatHistory: any[];
|
chatHistory: any[];
|
||||||
chatModel?: ChatModel;
|
chatModel: ModelWithProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const POST = async (req: Request) => {
|
export const POST = async (req: Request) => {
|
||||||
@@ -33,35 +23,12 @@ export const POST = async (req: Request) => {
|
|||||||
})
|
})
|
||||||
.filter((msg) => msg !== undefined) as BaseMessage[];
|
.filter((msg) => msg !== undefined) as BaseMessage[];
|
||||||
|
|
||||||
const chatModelProviders = await getAvailableChatModelProviders();
|
const registry = new ModelRegistry();
|
||||||
|
|
||||||
const chatModelProvider =
|
const llm = await registry.loadChatModel(
|
||||||
chatModelProviders[
|
body.chatModel.providerId,
|
||||||
body.chatModel?.provider || Object.keys(chatModelProviders)[0]
|
body.chatModel.key,
|
||||||
];
|
);
|
||||||
const chatModel =
|
|
||||||
chatModelProvider[
|
|
||||||
body.chatModel?.model || Object.keys(chatModelProvider)[0]
|
|
||||||
];
|
|
||||||
|
|
||||||
let llm: BaseChatModel | undefined;
|
|
||||||
|
|
||||||
if (body.chatModel?.provider === 'custom_openai') {
|
|
||||||
llm = new ChatOpenAI({
|
|
||||||
apiKey: getCustomOpenaiApiKey(),
|
|
||||||
modelName: getCustomOpenaiModelName(),
|
|
||||||
temperature: 0.7,
|
|
||||||
configuration: {
|
|
||||||
baseURL: getCustomOpenaiApiUrl(),
|
|
||||||
},
|
|
||||||
}) as unknown as BaseChatModel;
|
|
||||||
} else if (chatModelProvider && chatModel) {
|
|
||||||
llm = chatModel.model;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!llm) {
|
|
||||||
return Response.json({ error: 'Invalid chat model' }, { status: 400 });
|
|
||||||
}
|
|
||||||
|
|
||||||
const suggestions = await generateSuggestions(
|
const suggestions = await generateSuggestions(
|
||||||
{
|
{
|
||||||
|
@@ -1,23 +1,12 @@
|
|||||||
import handleVideoSearch from '@/lib/chains/videoSearchAgent';
|
import handleVideoSearch from '@/lib/chains/videoSearchAgent';
|
||||||
import {
|
import ModelRegistry from '@/lib/models/registry';
|
||||||
getCustomOpenaiApiKey,
|
import { ModelWithProvider } from '@/lib/models/types';
|
||||||
getCustomOpenaiApiUrl,
|
|
||||||
getCustomOpenaiModelName,
|
|
||||||
} from '@/lib/config';
|
|
||||||
import { getAvailableChatModelProviders } from '@/lib/providers';
|
|
||||||
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
||||||
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
||||||
import { ChatOpenAI } from '@langchain/openai';
|
|
||||||
|
|
||||||
interface ChatModel {
|
|
||||||
provider: string;
|
|
||||||
model: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface VideoSearchBody {
|
interface VideoSearchBody {
|
||||||
query: string;
|
query: string;
|
||||||
chatHistory: any[];
|
chatHistory: any[];
|
||||||
chatModel?: ChatModel;
|
chatModel: ModelWithProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const POST = async (req: Request) => {
|
export const POST = async (req: Request) => {
|
||||||
@@ -34,35 +23,12 @@ export const POST = async (req: Request) => {
|
|||||||
})
|
})
|
||||||
.filter((msg) => msg !== undefined) as BaseMessage[];
|
.filter((msg) => msg !== undefined) as BaseMessage[];
|
||||||
|
|
||||||
const chatModelProviders = await getAvailableChatModelProviders();
|
const registry = new ModelRegistry();
|
||||||
|
|
||||||
const chatModelProvider =
|
const llm = await registry.loadChatModel(
|
||||||
chatModelProviders[
|
body.chatModel.providerId,
|
||||||
body.chatModel?.provider || Object.keys(chatModelProviders)[0]
|
body.chatModel.key,
|
||||||
];
|
);
|
||||||
const chatModel =
|
|
||||||
chatModelProvider[
|
|
||||||
body.chatModel?.model || Object.keys(chatModelProvider)[0]
|
|
||||||
];
|
|
||||||
|
|
||||||
let llm: BaseChatModel | undefined;
|
|
||||||
|
|
||||||
if (body.chatModel?.provider === 'custom_openai') {
|
|
||||||
llm = new ChatOpenAI({
|
|
||||||
apiKey: getCustomOpenaiApiKey(),
|
|
||||||
modelName: getCustomOpenaiModelName(),
|
|
||||||
temperature: 0.7,
|
|
||||||
configuration: {
|
|
||||||
baseURL: getCustomOpenaiApiUrl(),
|
|
||||||
},
|
|
||||||
}) as unknown as BaseChatModel;
|
|
||||||
} else if (chatModelProvider && chatModel) {
|
|
||||||
llm = chatModel.model;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!llm) {
|
|
||||||
return Response.json({ error: 'Invalid chat model' }, { status: 400 });
|
|
||||||
}
|
|
||||||
|
|
||||||
const videos = await handleVideoSearch(
|
const videos = await handleVideoSearch(
|
||||||
{
|
{
|
||||||
|
@@ -33,11 +33,10 @@ const SearchImages = ({
|
|||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
|
||||||
const chatModelProvider = localStorage.getItem('chatModelProvider');
|
const chatModelProvider = localStorage.getItem(
|
||||||
const chatModel = localStorage.getItem('chatModel');
|
'chatModelProviderId',
|
||||||
|
);
|
||||||
const customOpenAIBaseURL = localStorage.getItem('openAIBaseURL');
|
const chatModel = localStorage.getItem('chatModelKey');
|
||||||
const customOpenAIKey = localStorage.getItem('openAIApiKey');
|
|
||||||
|
|
||||||
const res = await fetch(`/api/images`, {
|
const res = await fetch(`/api/images`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -48,12 +47,8 @@ const SearchImages = ({
|
|||||||
query: query,
|
query: query,
|
||||||
chatHistory: chatHistory,
|
chatHistory: chatHistory,
|
||||||
chatModel: {
|
chatModel: {
|
||||||
provider: chatModelProvider,
|
providerId: chatModelProvider,
|
||||||
model: chatModel,
|
key: chatModel,
|
||||||
...(chatModelProvider === 'custom_openai' && {
|
|
||||||
customOpenAIBaseURL: customOpenAIBaseURL,
|
|
||||||
customOpenAIKey: customOpenAIKey,
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
@@ -48,11 +48,10 @@ const Searchvideos = ({
|
|||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
|
||||||
const chatModelProvider = localStorage.getItem('chatModelProvider');
|
const chatModelProvider = localStorage.getItem(
|
||||||
const chatModel = localStorage.getItem('chatModel');
|
'chatModelProviderId',
|
||||||
|
);
|
||||||
const customOpenAIBaseURL = localStorage.getItem('openAIBaseURL');
|
const chatModel = localStorage.getItem('chatModelKey');
|
||||||
const customOpenAIKey = localStorage.getItem('openAIApiKey');
|
|
||||||
|
|
||||||
const res = await fetch(`/api/videos`, {
|
const res = await fetch(`/api/videos`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -63,12 +62,8 @@ const Searchvideos = ({
|
|||||||
query: query,
|
query: query,
|
||||||
chatHistory: chatHistory,
|
chatHistory: chatHistory,
|
||||||
chatModel: {
|
chatModel: {
|
||||||
provider: chatModelProvider,
|
providerId: chatModelProvider,
|
||||||
model: chatModel,
|
key: chatModel,
|
||||||
...(chatModelProvider === 'custom_openai' && {
|
|
||||||
customOpenAIBaseURL: customOpenAIBaseURL,
|
|
||||||
customOpenAIKey: customOpenAIKey,
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
@@ -1,11 +1,8 @@
|
|||||||
import { Message } from '@/components/ChatWindow';
|
import { Message } from '@/components/ChatWindow';
|
||||||
|
|
||||||
export const getSuggestions = async (chatHistory: Message[]) => {
|
export const getSuggestions = async (chatHistory: Message[]) => {
|
||||||
const chatModel = localStorage.getItem('chatModel');
|
const chatModel = localStorage.getItem('chatModelKey');
|
||||||
const chatModelProvider = localStorage.getItem('chatModelProvider');
|
const chatModelProvider = localStorage.getItem('chatModelProviderId');
|
||||||
|
|
||||||
const customOpenAIKey = localStorage.getItem('openAIApiKey');
|
|
||||||
const customOpenAIBaseURL = localStorage.getItem('openAIBaseURL');
|
|
||||||
|
|
||||||
const res = await fetch(`/api/suggestions`, {
|
const res = await fetch(`/api/suggestions`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -15,12 +12,8 @@ export const getSuggestions = async (chatHistory: Message[]) => {
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
chatHistory: chatHistory,
|
chatHistory: chatHistory,
|
||||||
chatModel: {
|
chatModel: {
|
||||||
provider: chatModelProvider,
|
providerId: chatModelProvider,
|
||||||
model: chatModel,
|
key: chatModel,
|
||||||
...(chatModelProvider === 'custom_openai' && {
|
|
||||||
customOpenAIKey,
|
|
||||||
customOpenAIBaseURL,
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user