mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-12 07:01:49 +00:00
74f7a86c2b
Co-authored-by: Chandrapal Badshah <12944530+Chan9390@users.noreply.github.com>
49 lines
1.3 KiB
TypeScript
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() };
|
|
}
|
|
};
|