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 }, ); } };