import type { ChatMessage, ChatRequest } from "@/lib/chat/types";
export const MAX_CHAT_REQUEST_MESSAGES = 100;
export const MAX_CHAT_MESSAGE_CHARACTERS = 32_000;
export const MAX_CHAT_REQUEST_CHARACTERS = 128_000;
export function createRequestMessages(
messages: readonly ChatMessage[],
): ChatRequest["messages"] {
const newestFirst: ChatRequest["messages"] = [];
let totalCharacters = 0;
for (let index = messages.length - 1; index >= 0; index -= 1) {
const message = messages[index];
if (message.status !== "complete" || !message.content.trim()) continue;
const nextTotal = totalCharacters + message.content.length;
if (
newestFirst.length === MAX_CHAT_REQUEST_MESSAGES ||
message.content.length > MAX_CHAT_MESSAGE_CHARACTERS ||
nextTotal > MAX_CHAT_REQUEST_CHARACTERS
) {
break;
}
newestFirst.push({ role: message.role, content: message.content });
totalCharacters = nextTotal;
}
return newestFirst.reverse();
}