diff --git a/src/providers/google/chatComplete.ts b/src/providers/google/chatComplete.ts index db48e2d3f..9b80ef939 100644 --- a/src/providers/google/chatComplete.ts +++ b/src/providers/google/chatComplete.ts @@ -38,7 +38,10 @@ export const GoogleChatCompleteConfig: ProviderConfig = { param: "contents", default: "", transform: (params: Params) => { - const messages = params.messages?.map((message: Message) => { + let lastRole: 'user' | 'model' | undefined; + const messages: { role: string; parts: { text: string; }[]; }[] = []; + + params.messages?.forEach((message: Message) => { const role = message.role === "assistant" ? "model" : "user"; let parts = []; if (typeof message.content === "string") { @@ -64,7 +67,17 @@ export const GoogleChatCompleteConfig: ProviderConfig = { } }); } - return { role, parts }; + + // @NOTE: This takes care of the "Please ensure that multiturn requests alternate between user and model." + // error that occurs when we have multiple user messages in a row. + const shouldAppendEmptyModeChat = lastRole === 'user' && role === 'user' && !params.model?.includes('vision'); + + if (shouldAppendEmptyModeChat) { + messages.push({ role: 'model', parts: [{ text: '' }] }) + } + + messages.push({ role, parts }); + lastRole = role }); return messages; },