2024-08-17 03:24:09 -04:00
|
|
|
/**
|
|
|
|
|
* Anthropic API: Adds cache control to the appropriate user messages in the payload.
|
2025-02-25 22:14:58 -05:00
|
|
|
* @param {Array<AnthropicMessage | BaseMessage>} messages - The array of message objects.
|
|
|
|
|
* @returns {Array<AnthropicMessage | BaseMessage>} - The updated array of message objects with cache control added.
|
2024-08-17 03:24:09 -04:00
|
|
|
*/
|
|
|
|
|
function addCacheControl(messages) {
|
|
|
|
|
if (!Array.isArray(messages) || messages.length < 2) {
|
|
|
|
|
return messages;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const updatedMessages = [...messages];
|
2024-08-18 19:03:03 -04:00
|
|
|
let userMessagesModified = 0;
|
2024-08-17 03:24:09 -04:00
|
|
|
|
2024-08-18 19:03:03 -04:00
|
|
|
for (let i = updatedMessages.length - 1; i >= 0 && userMessagesModified < 2; i--) {
|
|
|
|
|
const message = updatedMessages[i];
|
2025-02-25 22:14:58 -05:00
|
|
|
if (message.getType != null && message.getType() !== 'human') {
|
|
|
|
|
continue;
|
|
|
|
|
} else if (message.getType == null && message.role !== 'user') {
|
2024-08-18 19:03:03 -04:00
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (typeof message.content === 'string') {
|
|
|
|
|
message.content = [
|
|
|
|
|
{
|
|
|
|
|
type: 'text',
|
|
|
|
|
text: message.content,
|
|
|
|
|
cache_control: { type: 'ephemeral' },
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
userMessagesModified++;
|
|
|
|
|
} else if (Array.isArray(message.content)) {
|
|
|
|
|
for (let j = message.content.length - 1; j >= 0; j--) {
|
|
|
|
|
if (message.content[j].type === 'text') {
|
|
|
|
|
message.content[j].cache_control = { type: 'ephemeral' };
|
|
|
|
|
userMessagesModified++;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2024-08-17 03:24:09 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return updatedMessages;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = addCacheControl;
|