| 12345678910111213141516171819202122232425 |
- import type { UIMessage } from 'ai'
- /**
- * Prepares messages for API transmission by cleaning and limiting history
- */
- export function prepareMessagesForAPI(messages: UIMessage[]): UIMessage[] {
- // [Joshen] Specifically limiting the chat history that get's sent to reduce the
- // size of the context that goes into the model. This should always be an odd number
- // as much as possible so that the first message is always the user's
- const MAX_CHAT_HISTORY = 7
- const slicedMessages = messages.slice(-MAX_CHAT_HISTORY)
- // Filter out results from messages before sending to the model
- const cleanedMessages = slicedMessages.map((_message) => {
- const message = _message as UIMessage & { results?: unknown }
- const cleanedMessage = { ...message } as UIMessage & { results?: unknown }
- if (message.role === 'assistant' && message.results) {
- delete cleanedMessage.results
- }
- return cleanedMessage as UIMessage
- })
- return cleanedMessages
- }
|