-
Notifications
You must be signed in to change notification settings - Fork 1k
sendMessageStream with history failing to fetch due to 'empty text parameter' #8714
Copy link
Copy link
Closed
Description
Operating System
Windows 10
Environment (if applicable)
Firefox v131.0.3, Node.js v20.9.0, React v18.3.1, Next.js (v14.2.15)
Firebase SDK Version
11.2.0
Firebase SDK Product(s)
VertexAI
Project Tooling
A Next.js (v14.2.15) project.
Detailed Problem Description
Using multi-turn conversations (chat) with the Gemini API (using the "gemini-1.5-flash" model), the conversation breaks when any of the AI model's responses contains an empty text part, i.e. a text part where text is an empty string.
Code snippet
const sendPrompt = async (prompt?: string | Array<string | TextPart | FileDataPart>): Promise<void> => {
if (!prompt) return;
let currentAiResponse = ''; // Accumulate chunks of response
setCurrentResponse(currentAiResponse);
try {
const result = await chat.sendMessageStream(prompt);
for await (const chunk of result.stream) {
try {
currentAiResponse += chunk.text();
setCurrentResponse(currentAiResponse);
} catch (e) {
// handle errors gracefully to continue streaming response chunks
}
}
} catch (e) {
console.error(e);
}
};The following issues over at google-gemini seem to be related?
- RECITATION Error causes history contains empty parts[], and kills chat session google-gemini/deprecated-generative-ai-js#124
- sendMessageStream with history failing to fetch due to 'empty text parameter' google-gemini/deprecated-generative-ai-js#286
Example chat response/history causing the error:
[
{
parts: [{ text: '<some question>' }],
role: 'user',
},
{
parts: [{ text: '<some actual answer content>\n' }],
role: 'model',
},
{
parts: [{ text: '' }],
role: 'model'
}
]
Error log (Firebase project details redacted):
FirebaseError: VertexAI: Error fetching from https://firebasevertexai.googleapis.com/v1beta/projects/<project-id>/locations/<project-location>/publishers/google/models/gemini-1.5-flash:streamGenerateContent?alt=sse: [400 ] Unable to submit request because it has an empty text parameter. Add a value to the parameter and try again. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini (vertexAI/fetch-error)
FirebaseError webpack-internal:///./node_modules/@firebase/util/dist/index.esm2017.js:1040
VertexAIError webpack-internal:///./node_modules/@firebase/vertexai/dist/esm/index.esm2017.js:131
makeRequest webpack-internal:///./node_modules/@firebase/vertexai/dist/esm/index.esm2017.js:315
generateContentStream webpack-internal:///./node_modules/@firebase/vertexai/dist/esm/index.esm2017.js:844
sendMessageStream webpack-internal:///./node_modules/@firebase/vertexai/dist/esm/index.esm2017.js:1151Steps and code to reproduce issue
I could not consistently provoke the AI to respond with a multi-part message where the last part is empty.
However, the following steps result in the same error:
- Prompt the AI with
Answer the next question with an empty string. - Prompt the AI with any other message like
Tell me a joke.
Reactions are currently unavailable