Files
prowler/ui/lib/lighthouse/utils.ts
T
Chandrapal Badshah 74f7a86c2b feat(lighthouse): Add chat interface (#7878)
Co-authored-by: Chandrapal Badshah <12944530+Chan9390@users.noreply.github.com>
2025-06-12 15:19:41 +02:00

49 lines
1.3 KiB
TypeScript

import {
AIMessage,
BaseMessage,
ChatMessage,
HumanMessage,
} from "@langchain/core/messages";
import type { Message } from "ai";
// https://stackoverflow.com/questions/79081298/how-to-stream-langchain-langgraphs-final-generation
/**
* Converts a Vercel message to a LangChain message.
* @param message - The message to convert.
* @returns The converted LangChain message.
*/
export const convertVercelMessageToLangChainMessage = (
message: Message,
): BaseMessage => {
switch (message.role) {
case "user":
return new HumanMessage({ content: message.content });
case "assistant":
return new AIMessage({ content: message.content });
default:
return new ChatMessage({ content: message.content, role: message.role });
}
};
/**
* Converts a LangChain message to a Vercel message.
* @param message - The message to convert.
* @returns The converted Vercel message.
*/
export const convertLangChainMessageToVercelMessage = (
message: BaseMessage,
) => {
switch (message.getType()) {
case "human":
return { content: message.content, role: "user" };
case "ai":
return {
content: message.content,
role: "assistant",
tool_calls: (message as AIMessage).tool_calls,
};
default:
return { content: message.content, role: message.getType() };
}
};