mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 17:00:15 +01:00
🐛 fix: Anthropic Prompt Caching Edge Case (#3690)
This commit is contained in:
parent
87d95a9d82
commit
8ca1e4f94f
2 changed files with 89 additions and 26 deletions
|
|
@ -9,31 +9,31 @@ function addCacheControl(messages) {
|
|||
}
|
||||
|
||||
const updatedMessages = [...messages];
|
||||
let userMessagesFound = 0;
|
||||
let userMessagesModified = 0;
|
||||
|
||||
for (let i = updatedMessages.length - 1; i >= 0 && userMessagesFound < 2; i--) {
|
||||
if (updatedMessages[i].role === 'user') {
|
||||
if (typeof updatedMessages[i].content === 'string') {
|
||||
updatedMessages[i] = {
|
||||
...updatedMessages[i],
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text: updatedMessages[i].content,
|
||||
cache_control: { type: 'ephemeral' },
|
||||
},
|
||||
],
|
||||
};
|
||||
} else if (Array.isArray(updatedMessages[i].content)) {
|
||||
updatedMessages[i] = {
|
||||
...updatedMessages[i],
|
||||
content: updatedMessages[i].content.map((item) => ({
|
||||
...item,
|
||||
cache_control: { type: 'ephemeral' },
|
||||
})),
|
||||
};
|
||||
for (let i = updatedMessages.length - 1; i >= 0 && userMessagesModified < 2; i--) {
|
||||
const message = updatedMessages[i];
|
||||
if (message.role !== 'user') {
|
||||
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;
|
||||
}
|
||||
}
|
||||
userMessagesFound++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue