mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-10-18 13:28:15 +00:00
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import generateSuggestions from '@/lib/chains/suggestionGeneratorAgent';
|
|
import ModelRegistry from '@/lib/models/registry';
|
|
import { ModelWithProvider } from '@/lib/models/types';
|
|
import { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
import { AIMessage, BaseMessage, HumanMessage } from '@langchain/core/messages';
|
|
|
|
interface SuggestionsGenerationBody {
|
|
chatHistory: any[];
|
|
chatModel: ModelWithProvider;
|
|
}
|
|
|
|
export const POST = async (req: Request) => {
|
|
try {
|
|
const body: SuggestionsGenerationBody = await req.json();
|
|
|
|
const chatHistory = body.chatHistory
|
|
.map((msg: any) => {
|
|
if (msg.role === 'user') {
|
|
return new HumanMessage(msg.content);
|
|
} else if (msg.role === 'assistant') {
|
|
return new AIMessage(msg.content);
|
|
}
|
|
})
|
|
.filter((msg) => msg !== undefined) as BaseMessage[];
|
|
|
|
const registry = new ModelRegistry();
|
|
|
|
const llm = await registry.loadChatModel(
|
|
body.chatModel.providerId,
|
|
body.chatModel.key,
|
|
);
|
|
|
|
const suggestions = await generateSuggestions(
|
|
{
|
|
chat_history: chatHistory,
|
|
},
|
|
llm,
|
|
);
|
|
|
|
return Response.json({ suggestions }, { status: 200 });
|
|
} catch (err) {
|
|
console.error(`An error occurred while generating suggestions: ${err}`);
|
|
return Response.json(
|
|
{ message: 'An error occurred while generating suggestions' },
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
};
|