Bugfix/correctly retrieve past images in agentflowv2 (#4453)
correctly retrieve past images in agentflowv2
This commit is contained in:
parent
9170cac58b
commit
6cf1c82f04
|
|
@ -140,7 +140,12 @@ export const replaceBase64ImagesWithFileReferences = (
|
||||||
): BaseMessageLike[] => {
|
): BaseMessageLike[] => {
|
||||||
// Create a deep copy to avoid mutating the original
|
// Create a deep copy to avoid mutating the original
|
||||||
const updatedMessages = JSON.parse(JSON.stringify(messages))
|
const updatedMessages = JSON.parse(JSON.stringify(messages))
|
||||||
let imageMessagesIndex = 0
|
|
||||||
|
// Track positions in replacement arrays
|
||||||
|
let pastMessageIndex = 0
|
||||||
|
let pastContentIndex = 0
|
||||||
|
let uniqueMessageIndex = 0
|
||||||
|
let uniqueContentIndex = 0
|
||||||
|
|
||||||
for (let i = 0; i < updatedMessages.length; i++) {
|
for (let i = 0; i < updatedMessages.length; i++) {
|
||||||
const message = updatedMessages[i]
|
const message = updatedMessages[i]
|
||||||
|
|
@ -148,17 +153,77 @@ export const replaceBase64ImagesWithFileReferences = (
|
||||||
for (let j = 0; j < message.content.length; j++) {
|
for (let j = 0; j < message.content.length; j++) {
|
||||||
const item = message.content[j]
|
const item = message.content[j]
|
||||||
if (item.type === 'image_url') {
|
if (item.type === 'image_url') {
|
||||||
// Look for matching file reference in uniqueImageMessages or pastImageMessages
|
// Try past images first
|
||||||
const imageMessage =
|
let replacement = null
|
||||||
(uniqueImageMessages[imageMessagesIndex] as BaseMessage | undefined) ||
|
|
||||||
(pastImageMessages[imageMessagesIndex] as BaseMessage | undefined)
|
|
||||||
|
|
||||||
if (imageMessage && Array.isArray(imageMessage.content) && imageMessage.content[j]) {
|
if (pastMessageIndex < pastImageMessages.length) {
|
||||||
const replaceContent = imageMessage.content[j]
|
const pastMessage = pastImageMessages[pastMessageIndex] as BaseMessage | undefined
|
||||||
message.content[j] = {
|
if (pastMessage && Array.isArray(pastMessage.content)) {
|
||||||
...replaceContent
|
if (pastContentIndex < pastMessage.content.length) {
|
||||||
|
replacement = pastMessage.content[pastContentIndex]
|
||||||
|
pastContentIndex++
|
||||||
|
|
||||||
|
// Move to next message if we've used all content in current one
|
||||||
|
if (pastContentIndex >= pastMessage.content.length) {
|
||||||
|
pastMessageIndex++
|
||||||
|
pastContentIndex = 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Current message has no more content, move to next
|
||||||
|
pastMessageIndex++
|
||||||
|
pastContentIndex = 0
|
||||||
|
|
||||||
|
// Try again with the next message
|
||||||
|
if (pastMessageIndex < pastImageMessages.length) {
|
||||||
|
const nextPastMessage = pastImageMessages[pastMessageIndex] as BaseMessage | undefined
|
||||||
|
if (nextPastMessage && Array.isArray(nextPastMessage.content) && nextPastMessage.content.length > 0) {
|
||||||
|
replacement = nextPastMessage.content[0]
|
||||||
|
pastContentIndex = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try unique images if no past image replacement found
|
||||||
|
if (!replacement && uniqueMessageIndex < uniqueImageMessages.length) {
|
||||||
|
const uniqueMessage = uniqueImageMessages[uniqueMessageIndex] as BaseMessage | undefined
|
||||||
|
if (uniqueMessage && Array.isArray(uniqueMessage.content)) {
|
||||||
|
if (uniqueContentIndex < uniqueMessage.content.length) {
|
||||||
|
replacement = uniqueMessage.content[uniqueContentIndex]
|
||||||
|
uniqueContentIndex++
|
||||||
|
|
||||||
|
// Move to next message if we've used all content in current one
|
||||||
|
if (uniqueContentIndex >= uniqueMessage.content.length) {
|
||||||
|
uniqueMessageIndex++
|
||||||
|
uniqueContentIndex = 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Current message has no more content, move to next
|
||||||
|
uniqueMessageIndex++
|
||||||
|
uniqueContentIndex = 0
|
||||||
|
|
||||||
|
// Try again with the next message
|
||||||
|
if (uniqueMessageIndex < uniqueImageMessages.length) {
|
||||||
|
const nextUniqueMessage = uniqueImageMessages[uniqueMessageIndex] as BaseMessage | undefined
|
||||||
|
if (
|
||||||
|
nextUniqueMessage &&
|
||||||
|
Array.isArray(nextUniqueMessage.content) &&
|
||||||
|
nextUniqueMessage.content.length > 0
|
||||||
|
) {
|
||||||
|
replacement = nextUniqueMessage.content[0]
|
||||||
|
uniqueContentIndex = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply replacement if found
|
||||||
|
if (replacement) {
|
||||||
|
message.content[j] = {
|
||||||
|
...replacement
|
||||||
}
|
}
|
||||||
imageMessagesIndex++
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue