PDFVisionFallback
This commit is contained in:
+22
-7
@@ -338,18 +338,28 @@ export class AgentExecutor {
|
||||
const reqMessages = this.buildRequestHistory(this.chatHistory);
|
||||
|
||||
// Handle Vision Content Injection
|
||||
// Merge text prompt with file content instead of replacing, so the user's message is never lost
|
||||
// visionContent 배열에서 이미지 base64 데이터를 추출하여 엔진에 맞는 형식으로 주입
|
||||
if (hasVisionContent && reqMessages.length > 0) {
|
||||
const lastUserIdx = reqMessages.map(m => m.role).lastIndexOf('user');
|
||||
if (lastUserIdx >= 0) {
|
||||
const existingContent = reqMessages[lastUserIdx].content;
|
||||
const textParts: any[] = (typeof existingContent === 'string' && existingContent.trim())
|
||||
? [{ type: 'text', text: existingContent }]
|
||||
: [];
|
||||
const textContent = (typeof existingContent === 'string' && existingContent.trim()) ? existingContent : '';
|
||||
|
||||
// base64 이미지 데이터 추출
|
||||
const imageBase64List: string[] = [];
|
||||
for (const vc of (visionContent || [])) {
|
||||
if (vc && vc.data) {
|
||||
imageBase64List.push(vc.data);
|
||||
}
|
||||
}
|
||||
|
||||
// Ollama 호환: images 배열 필드에 base64 데이터 직접 주입
|
||||
// LM Studio 호환: content 배열에 image_url 객체 주입
|
||||
reqMessages[lastUserIdx] = {
|
||||
role: 'user',
|
||||
content: JSON.stringify([...textParts, ...(visionContent || [])])
|
||||
};
|
||||
content: textContent,
|
||||
images: imageBase64List // Ollama native format
|
||||
} as any;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1925,10 +1935,15 @@ export class AgentExecutor {
|
||||
? message.content
|
||||
: JSON.stringify(message.content);
|
||||
|
||||
return {
|
||||
const result: any = {
|
||||
role: message.role,
|
||||
content: normalizedContent
|
||||
};
|
||||
// Ollama Vision: images 필드 보존
|
||||
if ((message as any).images) {
|
||||
result.images = (message as any).images;
|
||||
}
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user