Google: Multipart system instruction
| @@ -403,8 +403,8 @@ export function convertGooglePrompt(messages, model, useSysPrompt, names) { | |||
| 403 | ]; | 403 | ]; |
| 404 | 404 | ||
| 405 | const isMultimodal = visionSupportedModels.includes(model); | 405 | const isMultimodal = visionSupportedModels.includes(model); |
| 406 | const sysPrompt = []; | ||
| 406 | 407 | ||
| 407 | let sys_prompt = ''; | ||
| 408 | if (useSysPrompt) { | 408 | if (useSysPrompt) { |
| 409 | while (messages.length > 1 && messages[0].role === 'system') { | 409 | while (messages.length > 1 && messages[0].role === 'system') { |
| 410 | // Append example names if not already done by the frontend (e.g. for group chats). | 410 | // Append example names if not already done by the frontend (e.g. for group chats). |
| @@ -418,12 +418,12 @@ export function convertGooglePrompt(messages, model, useSysPrompt, names) { | |||
| 418 | messages[0].content = `${names.charName}: ${messages[0].content}`; | 418 | messages[0].content = `${names.charName}: ${messages[0].content}`; |
| 419 | } | 419 | } |
| 420 | } | 420 | } |
| 421 | sys_prompt += `${messages[0].content}\n\n`; | 421 | sysPrompt.push(messages[0].content); |
| 422 | messages.shift(); | 422 | messages.shift(); |
| 423 | } | 423 | } |
| 424 | } | 424 | } |
| 425 | 425 | ||
| 426 | const system_instruction = { parts: [{ text: sys_prompt.trim() }] }; | 426 | const system_instruction = { parts: sysPrompt.map(text => ({ text })) }; |
| 427 | const toolNameMap = {}; | 427 | const toolNameMap = {}; |
| 428 | 428 | ||
| 429 | const contents = []; | 429 | const contents = []; |