chore: log image input counts for failover

This commit is contained in:
134 2026-06-24 16:39:49 +08:00
parent 5973359197
commit 07d081f838
3 changed files with 31 additions and 9 deletions

View File

@ -214,15 +214,25 @@ function messagePartHasImageInput(part: any) {
return false;
}
function countImageInputPartsInMessage(message: any) {
const countParts = (parts: any[] | undefined) =>
Array.isArray(parts) ? parts.filter(messagePartHasImageInput).length : 0;
const contentCount = countParts(Array.isArray(message?.content) ? message.content : undefined);
if (contentCount > 0) return contentCount;
return countParts(Array.isArray(message?.parts) ? message.parts : undefined);
}
export function countChatMessageImageInputs(messages: ChatMessage[]) {
return messages.reduce(
(count, message) => count + countImageInputPartsInMessage(message),
0
);
}
export function chatMessagesHaveImageInput(messages: ChatMessage[]) {
return messages.some((message: any) => {
const content = message?.content;
if (Array.isArray(content) && content.some(messagePartHasImageInput)) {
return true;
}
const parts = message?.parts;
return Array.isArray(parts) && parts.some(messagePartHasImageInput);
});
return countChatMessageImageInputs(messages) > 0;
}
export function getImageFailoverConvertProvider(providerType?: string | null) {
@ -384,13 +394,16 @@ export async function generateImageWithFailoverCandidate(params: {
getImageFailoverConvertProvider(providerType)
);
const effectiveImageParams = imageParams || fallbackImageParams;
const imageInputCount = countChatMessageImageInputs(messages);
chatApiLogger.info("[Chat API] Image failover candidate params:", {
model: candidate.model?.modelId || candidate.model?.id,
providerType,
aspectRatio: effectiveImageParams?.aspectRatio,
imageSize: effectiveImageParams?.imageSize,
imageCount: effectiveImageParams?.imageCount,
hasImageInput: chatMessagesHaveImageInput(messages),
hasImageInput: imageInputCount > 0,
imageInputCount,
multiImageInput: imageInputCount > 1,
});
const candidateResult = await (candidateLanguageModel as any).doGenerate({
messages: candidateMessages,

View File

@ -9373,7 +9373,9 @@ export async function POST(request: Request) {
);
chatApiLogger.info("[Chat API] Image provider target images:", {
resolutionMode: requestTargetResolution?.resolutionMode || null,
targetImageCount: resolvedTargetImageUrlsForProvider.length,
imageCount: resolvedTargetImageUrlsForProvider.length,
multiImageTarget: resolvedTargetImageUrlsForProvider.length > 1,
firstImageUrl: summarizeTargetImageUrl(resolvedTargetImageUrlsForProvider[0]),
});
}

View File

@ -901,6 +901,13 @@ export function createSnapgenImage({ apiKey, baseURL }: SnapgenImageConfig) {
resolutionParam,
imageCount,
referenceImageCount: imageUrls.length,
multiImageReference: imageUrls.length > 1,
referenceTransport:
imageUrls.length === 0
? "none"
: apiFormat === "snapgen-generic-image"
? "file_urls"
: "files",
});
const createPayload = await requestSnapgenMultipart({