Mit der Gemini API Text aus multimodalen Prompts generieren
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Wenn Sie die Gemini API über ein Vertex AI in Firebase SDK von Ihrer App aus aufrufen, können Sie das Gemini-Modell auffordern, Text basierend auf einer multimodalen Eingabe zu generieren.
Multimodale Prompts können mehrere Modalitäten (oder Eingabetypen) umfassen, z. B. Text zusammen mit Bildern, PDFs, Textdateien, Video und Audio.
In jeder multimodalen Anfrage müssen Sie immer Folgendes angeben:
Die Datei. Sie können die Datei entweder als Inline-Daten (wie auf dieser Seite gezeigt) oder über die URL oder den URI bereitstellen.
Zum Testen und Iterieren multimodaler Prompts empfehlen wir die Verwendung von Vertex AI Studio.
Weitere Optionen für die Arbeit mit Gemini API
Optional können Sie mit einer alternativen „Google AI“-Version der Gemini API -Funktion „Kostenlosen Zugriff erhalten“ (im Rahmen der Limits und sofern verfügbar) experimentieren. Verwenden Sie dazu die Google AI Studio- und Google AI-Client-SDKs.
Diese SDKs sollten nur für das Prototyping in mobilen und Web-Apps verwendet werden.
Nachdem Sie mit der Funktionsweise von Gemini API vertraut sind, können Sie auf unsere Vertex AI in Firebase SDKs umstellen (diese Dokumentation). Diese bieten viele zusätzliche Funktionen, die für mobile und Web-Apps wichtig sind, z. B. den Schutz der API vor Missbrauch mithilfe von Firebase App Check und die Unterstützung von großen Mediendateien in Anfragen.
Lesen Sie den Startleitfaden, in dem beschrieben wird, wie Sie ein Firebase-Projekt einrichten, Ihre App mit Firebase verbinden, das SDK hinzufügen, den Vertex AI-Dienst initialisieren und eine GenerativeModel-Instanz erstellen.
Wenn Sie noch keine Mediadateien haben, können Sie die folgenden öffentlich zugänglichen Dateien verwenden. Da diese Dateien in Bucket gespeichert sind, die nicht zu Ihrem Firebase-Projekt gehören, müssen Sie das Format https://storage.googleapis.com/BUCKET_NAME/PATH/TO/FILE für die URL verwenden.
Bild: https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg mit dem MIME-Typ image/jpeg.
Dieses Bild ansehen oder herunterladen
PDF: https://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf mit dem MIME-Typ application/pdfDiese PDF-Datei ansehen oder herunterladen
Audio: https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/pixel.mp3 mit dem MIME-Typ audio/mp3Diese Audiodatei anhören oder herunterladen
Text aus Text und einem einzelnen Bild generieren
Lesen Sie den Abschnitt Vorbereitung in dieser Anleitung, bevor Sie dieses Beispiel ausprobieren.
Sie können Gemini API mit multimodalen Prompts aufrufen, die sowohl Text als auch eine einzelne Datei enthalten (z. B. ein Bild, wie in diesem Beispiel).
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und ein einzelnes Bild enthält:
importFirebaseVertexAI// Initialize the Vertex AI serviceletvertex=VertexAI.vertexAI()// Create a `GenerativeModel` instance with a model that supports your use caseletmodel=vertex.generativeModel(modelName:"gemini-2.0-flash")guardletimage=UIImage(systemName:"bicycle")else{fatalError()}// Provide a text prompt to include with the imageletprompt="What's in this picture?"// To generate text output, call generateContent and pass in the promptletresponse=tryawaitmodel.generateContent(image,prompt)print(response.text??"No text in response.")
Kotlin
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und ein einzelnes Bild enthält:
In Kotlin sind die Methoden in diesem SDK Suspend-Funktionen und müssen aus einem Coroutine-Kontext aufgerufen werden.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casevalgenerativeModel=Firebase.vertexAI.generativeModel("gemini-2.0-flash")// Loads an image from the app/res/drawable/ directoryvalbitmap:Bitmap=BitmapFactory.decodeResource(resources,R.drawable.sparky)// Provide a prompt that includes the image specified above and textvalprompt=content{image(bitmap)text("What developer tool is this mascot from?")}// To generate text output, call generateContent with the promptvalresponse=generativeModel.generateContent(prompt)print(response.text)
Java
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und ein einzelnes Bild enthält:
Bei Java geben die Methoden in diesem SDK eine ListenableFuture zurück.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use caseGenerativeModelgm=FirebaseVertexAI.getInstance().generativeModel("gemini-2.0-flash");GenerativeModelFuturesmodel=GenerativeModelFutures.from(gm);Bitmapbitmap=BitmapFactory.decodeResource(getResources(),R.drawable.sparky);// Provide a prompt that includes the image specified above and textContentcontent=newContent.Builder().addImage(bitmap).addText("What developer tool is this mascot from?").build();// To generate text output, call generateContent with the promptListenableFuture<GenerateContentResponse>response=model.generateContent(content);Futures.addCallback(response,newFutureCallback<GenerateContentResponse>(){@OverridepublicvoidonSuccess(GenerateContentResponseresult){StringresultText=result.getText();System.out.println(resultText);}@OverridepublicvoidonFailure(Throwablet){t.printStackTrace();}},executor);
Web
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und ein einzelnes Bild enthält:
import{initializeApp}from"firebase/app";import{getVertexAI,getGenerativeModel}from"firebase/vertexai";// TODO(developer) Replace the following with your app's Firebase configuration// See: https://firebase.google.com/docs/web/learn-more#config-objectconstfirebaseConfig={// ...};// Initialize FirebaseAppconstfirebaseApp=initializeApp(firebaseConfig);// Initialize the Vertex AI serviceconstvertexAI=getVertexAI(firebaseApp);// Create a `GenerativeModel` instance with a model that supports your use caseconstmodel=getGenerativeModel(vertexAI,{model:"gemini-2.0-flash"});// Converts a File object to a Part object.asyncfunctionfileToGenerativePart(file){constbase64EncodedDataPromise=newPromise((resolve)=>{constreader=newFileReader();reader.onloadend=()=>resolve(reader.result.split(',')[1]);reader.readAsDataURL(file);});return{inlineData:{data:awaitbase64EncodedDataPromise,mimeType:file.type},};}asyncfunctionrun(){// Provide a text prompt to include with the imageconstprompt="What's different between these pictures?";constfileInputEl=document.querySelector("input[type=file]");constimagePart=awaitfileToGenerativePart(fileInputEl.files[0]);// To generate text output, call generateContent with the text and imageconstresult=awaitmodel.generateContent([prompt,imagePart]);constresponse=result.response;consttext=response.text();console.log(text);}run();
Dart
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und ein einzelnes Bild enthält:
import'package:firebase_vertexai/firebase_vertexai.dart';import'package:firebase_core/firebase_core.dart';import'firebase_options.dart';awaitFirebase.initializeApp(options:DefaultFirebaseOptions.currentPlatform,);// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casefinalmodel=FirebaseVertexAI.instance.generativeModel(model:'gemini-2.0-flash');// Provide a text prompt to include with the imagefinalprompt=TextPart("What's in the picture?");// Prepare images for inputfinalimage=awaitFile('image0.jpg').readAsBytes();finalimagePart=InlineDataPart('image/jpeg',image);// To generate text output, call generateContent with the text and imagefinalresponse=awaitmodel.generateContent([Content.multi([prompt,imagePart])]);print(response.text);
Hier erfahren Sie, wie Sie ein Modell und optional einen Standort auswählen, die für Ihren Anwendungsfall und Ihre App geeignet sind.
Text aus Text und mehreren Bildern generieren
Lesen Sie den Abschnitt Vorbereitung in dieser Anleitung, bevor Sie dieses Beispiel ausprobieren.
Sie können Gemini API mit multimodalen Prompts aufrufen, die sowohl Text als auch mehrere Dateien (z. B. Bilder, wie in diesem Beispiel) enthalten.
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und mehrere Bilder enthält:
importFirebaseVertexAI// Initialize the Vertex AI serviceletvertex=VertexAI.vertexAI()// Create a `GenerativeModel` instance with a model that supports your use caseletmodel=vertex.generativeModel(modelName:"gemini-2.0-flash")guardletimage1=UIImage(systemName:"car")else{fatalError()}guardletimage2=UIImage(systemName:"car.2")else{fatalError()}// Provide a text prompt to include with the imagesletprompt="What's different between these pictures?"// To generate text output, call generateContent and pass in the promptletresponse=tryawaitmodel.generateContent(image1,image2,prompt)print(response.text??"No text in response.")
Kotlin
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und mehrere Bilder enthält:
In Kotlin sind die Methoden in diesem SDK Suspend-Funktionen und müssen aus einem Coroutine-Kontext aufgerufen werden.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casevalgenerativeModel=Firebase.vertexAI.generativeModel("gemini-2.0-flash")// Loads an image from the app/res/drawable/ directoryvalbitmap1:Bitmap=BitmapFactory.decodeResource(resources,R.drawable.sparky)valbitmap2:Bitmap=BitmapFactory.decodeResource(resources,R.drawable.sparky_eats_pizza)// Provide a prompt that includes the images specified above and textvalprompt=content{image(bitmap1)image(bitmap2)text("What is different between these pictures?")}// To generate text output, call generateContent with the promptvalresponse=generativeModel.generateContent(prompt)print(response.text)
Java
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und mehrere Bilder enthält:
Bei Java geben die Methoden in diesem SDK eine ListenableFuture zurück.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use caseGenerativeModelgm=FirebaseVertexAI.getInstance().generativeModel("gemini-2.0-flash");GenerativeModelFuturesmodel=GenerativeModelFutures.from(gm);Bitmapbitmap1=BitmapFactory.decodeResource(getResources(),R.drawable.sparky);Bitmapbitmap2=BitmapFactory.decodeResource(getResources(),R.drawable.sparky_eats_pizza);// Provide a prompt that includes the images specified above and textContentprompt=newContent.Builder().addImage(bitmap1).addImage(bitmap2).addText("What's different between these pictures?").build();// To generate text output, call generateContent with the promptListenableFuture<GenerateContentResponse>response=model.generateContent(prompt);Futures.addCallback(response,newFutureCallback<GenerateContentResponse>(){@OverridepublicvoidonSuccess(GenerateContentResponseresult){StringresultText=result.getText();System.out.println(resultText);}@OverridepublicvoidonFailure(Throwablet){t.printStackTrace();}},executor);
Web
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und mehrere Bilder enthält:
import{initializeApp}from"firebase/app";import{getVertexAI,getGenerativeModel}from"firebase/vertexai";// TODO(developer) Replace the following with your app's Firebase configuration// See: https://firebase.google.com/docs/web/learn-more#config-objectconstfirebaseConfig={// ...};// Initialize FirebaseAppconstfirebaseApp=initializeApp(firebaseConfig);// Initialize the Vertex AI serviceconstvertexAI=getVertexAI(firebaseApp);// Create a `GenerativeModel` instance with a model that supports your use caseconstmodel=getGenerativeModel(vertexAI,{model:"gemini-2.0-flash"});// Converts a File object to a Part object.asyncfunctionfileToGenerativePart(file){constbase64EncodedDataPromise=newPromise((resolve)=>{constreader=newFileReader();reader.onloadend=()=>resolve(reader.result.split(',')[1]);reader.readAsDataURL(file);});return{inlineData:{data:awaitbase64EncodedDataPromise,mimeType:file.type},};}asyncfunctionrun(){// Provide a text prompt to include with the imagesconstprompt="What's different between these pictures?";// Prepare images for inputconstfileInputEl=document.querySelector("input[type=file]");constimageParts=awaitPromise.all([...fileInputEl.files].map(fileToGenerativePart));// To generate text output, call generateContent with the text and imagesconstresult=awaitmodel.generateContent([prompt,...imageParts]);constresponse=result.response;consttext=response.text();console.log(text);}run();
Dart
Sie können generateContent() aufrufen, um Text aus einer multimodalen Prompt-Anfrage zu generieren, die Text und mehrere Bilder enthält:
import'package:firebase_vertexai/firebase_vertexai.dart';import'package:firebase_core/firebase_core.dart';import'firebase_options.dart';awaitFirebase.initializeApp(options:DefaultFirebaseOptions.currentPlatform,);// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casefinalmodel=FirebaseVertexAI.instance.generativeModel(model:'gemini-2.0-flash');final(firstImage,secondImage)=await(File('image0.jpg').readAsBytes(),File('image1.jpg').readAsBytes()).wait;// Provide a text prompt to include with the imagesfinalprompt=TextPart("What's different between these pictures?");// Prepare images for inputfinalimageParts=[InlineDataPart('image/jpeg',firstImage),InlineDataPart('image/jpeg',secondImage),];// To generate text output, call generateContent with the text and imagesfinalresponse=awaitmodel.generateContent([Content.multi([prompt,...imageParts])]);print(response.text);
Hier erfahren Sie, wie Sie ein Modell und optional einen Standort auswählen, die für Ihren Anwendungsfall und Ihre App geeignet sind.
Text aus Text und einem Video generieren
Lesen Sie den Abschnitt Vorbereitung in dieser Anleitung, bevor Sie dieses Beispiel ausprobieren.
Sie können die Gemini API mit multimodalen Prompts aufrufen, die sowohl Text- als auch Videodateien enthalten (wie in diesem Beispiel gezeigt).
Sie können generateContent() aufrufen, um Text aus einer multimodalen Promptanfrage zu generieren, die Text und ein einzelnes Video enthält:
importFirebaseVertexAI// Initialize the Vertex AI serviceletvertex=VertexAI.vertexAI()// Create a `GenerativeModel` instance with a model that supports your use caseletmodel=vertex.generativeModel(modelName:"gemini-2.0-flash")// Provide the video as `Data` with the appropriate MIME type.letvideo=InlineDataPart(data:tryData(contentsOf:videoURL),mimeType:"video/mp4")// Provide a text prompt to include with the videoletprompt="What is in the video?"// To generate text output, call generateContent with the text and videoletresponse=tryawaitmodel.generateContent(video,prompt)print(response.text??"No text in response.")
Kotlin
Sie können generateContent() aufrufen, um Text aus einer multimodalen Promptanfrage zu generieren, die Text und ein einzelnes Video enthält:
In Kotlin sind die Methoden in diesem SDK Suspend-Funktionen und müssen aus einem Coroutine-Kontext aufgerufen werden.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casevalgenerativeModel=Firebase.vertexAI.generativeModel("gemini-2.0-flash")valcontentResolver=applicationContext.contentResolvercontentResolver.openInputStream(videoUri).use{stream->stream?.let{valbytes=stream.readBytes()// Provide a prompt that includes the video specified above and textvalprompt=content{inlineData(bytes,"video/mp4")text("What is in the video?")}// To generate text output, call generateContent with the promptvalresponse=generativeModel.generateContent(prompt)Log.d(TAG,response.text?:"")}}
Java
Sie können generateContent() aufrufen, um Text aus einer multimodalen Promptanfrage zu generieren, die Text und ein einzelnes Video enthält:
Bei Java geben die Methoden in diesem SDK eine ListenableFuture zurück.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use caseGenerativeModelgm=FirebaseVertexAI.getInstance().generativeModel("gemini-2.0-flash");GenerativeModelFuturesmodel=GenerativeModelFutures.from(gm);ContentResolverresolver=getApplicationContext().getContentResolver();try(InputStreamstream=resolver.openInputStream(videoUri)){FilevideoFile=newFile(newURI(videoUri.toString()));intvideoSize=(int)videoFile.length();byte[]videoBytes=newbyte[videoSize];if(stream!=null){stream.read(videoBytes,0,videoBytes.length);stream.close();// Provide a prompt that includes the video specified above and textContentprompt=newContent.Builder().addInlineData(videoBytes,"video/mp4").addText("What is in the video?").build();// To generate text output, call generateContent with the promptListenableFuture<GenerateContentResponse>response=model.generateContent(prompt);Futures.addCallback(response,newFutureCallback<GenerateContentResponse>(){@OverridepublicvoidonSuccess(GenerateContentResponseresult){StringresultText=result.getText();System.out.println(resultText);}@OverridepublicvoidonFailure(Throwablet){t.printStackTrace();}},executor);}}catch(IOExceptione){e.printStackTrace();}catch(URISyntaxExceptione){e.printStackTrace();}
Web
Sie können generateContent() aufrufen, um Text aus einer multimodalen Promptanfrage zu generieren, die Text und ein einzelnes Video enthält:
import{initializeApp}from"firebase/app";import{getVertexAI,getGenerativeModel}from"firebase/vertexai";// TODO(developer) Replace the following with your app's Firebase configuration// See: https://firebase.google.com/docs/web/learn-more#config-objectconstfirebaseConfig={// ...};// Initialize FirebaseAppconstfirebaseApp=initializeApp(firebaseConfig);// Initialize the Vertex AI serviceconstvertexAI=getVertexAI(firebaseApp);// Create a `GenerativeModel` instance with a model that supports your use caseconstmodel=getGenerativeModel(vertexAI,{model:"gemini-2.0-flash"});// Converts a File object to a Part object.asyncfunctionfileToGenerativePart(file){constbase64EncodedDataPromise=newPromise((resolve)=>{constreader=newFileReader();reader.onloadend=()=>resolve(reader.result.split(',')[1]);reader.readAsDataURL(file);});return{inlineData:{data:awaitbase64EncodedDataPromise,mimeType:file.type},};}asyncfunctionrun(){// Provide a text prompt to include with the videoconstprompt="What do you see?";constfileInputEl=document.querySelector("input[type=file]");constvideoPart=awaitfileToGenerativePart(fileInputEl.files[0]);// To generate text output, call generateContent with the text and videoconstresult=awaitmodel.generateContent([prompt,videoPart]);constresponse=result.response;consttext=response.text();console.log(text);}run();
Dart
Sie können generateContent() aufrufen, um Text aus einer multimodalen Promptanfrage zu generieren, die Text und ein einzelnes Video enthält:
import'package:firebase_vertexai/firebase_vertexai.dart';import'package:firebase_core/firebase_core.dart';import'firebase_options.dart';awaitFirebase.initializeApp(options:DefaultFirebaseOptions.currentPlatform,);// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casefinalmodel=FirebaseVertexAI.instance.generativeModel(model:'gemini-2.0-flash');// Provide a text prompt to include with the videofinalprompt=TextPart("What's in the video?");// Prepare video for inputfinalvideo=awaitFile('video0.mp4').readAsBytes();// Provide the video as `Data` with the appropriate mimetypefinalvideoPart=InlineDataPart('video/mp4',video);// To generate text output, call generateContent with the text and imagesfinalresponse=awaitmodel.generateContent([Content.multi([prompt,...videoPart])]);print(response.text);
Hier erfahren Sie, wie Sie ein Modell und optional einen Standort auswählen, die für Ihren Anwendungsfall und Ihre App geeignet sind.
Antwort streamen
Lesen Sie den Abschnitt Vorbereitung in dieser Anleitung, bevor Sie diese Samples ausprobieren.
Sie können schnellere Interaktionen erzielen, wenn Sie nicht auf das vollständige Ergebnis der Modellgenerierung warten, sondern stattdessen Streaming zum Verarbeiten von Teilergebnissen verwenden.
Wenn Sie die Antwort streamen möchten, rufen Sie generateContentStream auf.
Beispiel ansehen: Generierten Text aus Text und einem einzelnen Bild streamen
Swift
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Bild enthält:
importFirebaseVertexAI// Initialize the Vertex AI serviceletvertex=VertexAI.vertexAI()// Create a `GenerativeModel` instance with a model that supports your use caseletmodel=vertex.generativeModel(modelName:"gemini-2.0-flash")guardletimage=UIImage(systemName:"bicycle")else{fatalError()}// Provide a text prompt to include with the imageletprompt="What's in this picture?"// To stream generated text output, call generateContentStream and pass in the promptletcontentStream=trymodel.generateContentStream(image,prompt)fortryawaitchunkincontentStream{iflettext=chunk.text{print(text)}}
Kotlin
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Bild enthält:
In Kotlin sind die Methoden in diesem SDK Suspend-Funktionen und müssen aus einem Coroutine-Kontext aufgerufen werden.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casevalgenerativeModel=Firebase.vertexAI.generativeModel("gemini-2.0-flash")// Loads an image from the app/res/drawable/ directoryvalbitmap:Bitmap=BitmapFactory.decodeResource(resources,R.drawable.sparky)// Provide a prompt that includes the image specified above and textvalprompt=content{image(bitmap)text("What developer tool is this mascot from?")}// To stream generated text output, call generateContentStream with the promptvarfullResponse=""generativeModel.generateContentStream(prompt).collect{chunk->print(chunk.text)fullResponse+=chunk.text}
Java
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Bild enthält:
Bei Java geben die Streamingmethoden in diesem SDK einen Publisher-Typ aus der Reactive Streams-Bibliothek zurück.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use caseGenerativeModelgm=FirebaseVertexAI.getInstance().generativeModel("gemini-2.0-flash");GenerativeModelFuturesmodel=GenerativeModelFutures.from(gm);Bitmapbitmap=BitmapFactory.decodeResource(getResources(),R.drawable.sparky);// Provide a prompt that includes the image specified above and textContentprompt=newContent.Builder().addImage(bitmap).addText("What developer tool is this mascot from?").build();// To stream generated text output, call generateContentStream with the promptPublisher<GenerateContentResponse>streamingResponse=model.generateContentStream(prompt);finalString[]fullResponse={""};streamingResponse.subscribe(newSubscriber<GenerateContentResponse>(){@OverridepublicvoidonNext(GenerateContentResponsegenerateContentResponse){Stringchunk=generateContentResponse.getText();fullResponse[0]+=chunk;}@OverridepublicvoidonComplete(){System.out.println(fullResponse[0]);}@OverridepublicvoidonError(Throwablet){t.printStackTrace();}@OverridepublicvoidonSubscribe(Subscriptions){}});
Web
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Bild enthält:
import{initializeApp}from"firebase/app";import{getVertexAI,getGenerativeModel}from"firebase/vertexai";// TODO(developer) Replace the following with your app's Firebase configuration// See: https://firebase.google.com/docs/web/learn-more#config-objectconstfirebaseConfig={// ...};// Initialize FirebaseAppconstfirebaseApp=initializeApp(firebaseConfig);// Initialize the Vertex AI serviceconstvertexAI=getVertexAI(firebaseApp);// Create a `GenerativeModel` instance with a model that supports your use caseconstmodel=getGenerativeModel(vertexAI,{model:"gemini-2.0-flash"});// Converts a File object to a Part object.asyncfunctionfileToGenerativePart(file){constbase64EncodedDataPromise=newPromise((resolve)=>{constreader=newFileReader();reader.onloadend=()=>resolve(reader.result.split(',')[1]);reader.readAsDataURL(file);});return{inlineData:{data:awaitbase64EncodedDataPromise,mimeType:file.type},};}asyncfunctionrun(){// Provide a text prompt to include with the imageconstprompt="What do you see?";// Prepare image for inputconstfileInputEl=document.querySelector("input[type=file]");constimagePart=awaitfileToGenerativePart(fileInputEl.files[0]);// To stream generated text output, call generateContentStream with the text and imageconstresult=awaitmodel.generateContentStream([prompt,imagePart]);forawait(constchunkofresult.stream){constchunkText=chunk.text();console.log(chunkText);}}run();
Dart
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Bild enthält:
import'package:firebase_vertexai/firebase_vertexai.dart';import'package:firebase_core/firebase_core.dart';import'firebase_options.dart';awaitFirebase.initializeApp(options:DefaultFirebaseOptions.currentPlatform,);// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casefinalmodel=FirebaseVertexAI.instance.generativeModel(model:'gemini-2.0-flash');// Provide a text prompt to include with the imagefinalprompt=TextPart("What's in the picture?");// Prepare images for inputfinalimage=awaitFile('image0.jpg').readAsBytes();finalimagePart=InlineDataPart('image/jpeg',image);// To stream generated text output, call generateContentStream with the text and imagefinalresponse=awaitmodel.generateContentStream([Content.multi([prompt,imagePart])]);awaitfor(finalchunkinresponse){print(chunk.text);}
Beispiel ansehen: Generierten Text aus Text und mehreren Bildern streamen
Swift
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und mehrere Bilder enthält:
importFirebaseVertexAI// Initialize the Vertex AI serviceletvertex=VertexAI.vertexAI()// Create a `GenerativeModel` instance with a model that supports your use caseletmodel=vertex.generativeModel(modelName:"gemini-2.0-flash")guardletimage1=UIImage(systemName:"car")else{fatalError()}guardletimage2=UIImage(systemName:"car.2")else{fatalError()}// Provide a text prompt to include with the imagesletprompt="What's different between these pictures?"// To stream generated text output, call generateContentStream and pass in the promptletcontentStream=trymodel.generateContentStream(image1,image2,prompt)fortryawaitchunkincontentStream{iflettext=chunk.text{print(text)}}
Kotlin
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und mehrere Bilder enthält:
In Kotlin sind die Methoden in diesem SDK Suspend-Funktionen und müssen aus einem Coroutine-Kontext aufgerufen werden.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casevalgenerativeModel=Firebase.vertexAI.generativeModel("gemini-2.0-flash")// Loads an image from the app/res/drawable/ directoryvalbitmap1:Bitmap=BitmapFactory.decodeResource(resources,R.drawable.sparky)valbitmap2:Bitmap=BitmapFactory.decodeResource(resources,R.drawable.sparky_eats_pizza)// Provide a prompt that includes the images specified above and textvalprompt=content{image(bitmap1)image(bitmap2)text("What's different between these pictures?")}// To stream generated text output, call generateContentStream with the promptvarfullResponse=""generativeModel.generateContentStream(prompt).collect{chunk->print(chunk.text)fullResponse+=chunk.text}
Java
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und mehrere Bilder enthält:
Bei Java geben die Streamingmethoden in diesem SDK einen Publisher-Typ aus der Reactive Streams-Bibliothek zurück.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use caseGenerativeModelgm=FirebaseVertexAI.getInstance().generativeModel("gemini-2.0-flash");GenerativeModelFuturesmodel=GenerativeModelFutures.from(gm);Bitmapbitmap1=BitmapFactory.decodeResource(getResources(),R.drawable.sparky);Bitmapbitmap2=BitmapFactory.decodeResource(getResources(),R.drawable.sparky_eats_pizza);// Provide a prompt that includes the images specified above and textContentprompt=newContent.Builder().addImage(bitmap1).addImage(bitmap2).addText("What's different between these pictures?").build();// To stream generated text output, call generateContentStream with the promptPublisher<GenerateContentResponse>streamingResponse=model.generateContentStream(prompt);finalString[]fullResponse={""};streamingResponse.subscribe(newSubscriber<GenerateContentResponse>(){@OverridepublicvoidonNext(GenerateContentResponsegenerateContentResponse){Stringchunk=generateContentResponse.getText();fullResponse[0]+=chunk;}@OverridepublicvoidonComplete(){System.out.println(fullResponse[0]);}@OverridepublicvoidonError(Throwablet){t.printStackTrace();}@OverridepublicvoidonSubscribe(Subscriptions){}});
Web
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und mehrere Bilder enthält:
import{initializeApp}from"firebase/app";import{getVertexAI,getGenerativeModel}from"firebase/vertexai";// TODO(developer) Replace the following with your app's Firebase configuration// See: https://firebase.google.com/docs/web/learn-more#config-objectconstfirebaseConfig={// ...};// Initialize FirebaseAppconstfirebaseApp=initializeApp(firebaseConfig);// Initialize the Vertex AI serviceconstvertexAI=getVertexAI(firebaseApp);// Create a `GenerativeModel` instance with a model that supports your use caseconstmodel=getGenerativeModel(vertexAI,{model:"gemini-2.0-flash"});// Converts a File object to a Part object.asyncfunctionfileToGenerativePart(file){constbase64EncodedDataPromise=newPromise((resolve)=>{constreader=newFileReader();reader.onloadend=()=>resolve(reader.result.split(',')[1]);reader.readAsDataURL(file);});return{inlineData:{data:awaitbase64EncodedDataPromise,mimeType:file.type},};}asyncfunctionrun(){// Provide a text prompt to include with the imagesconstprompt="What's different between these pictures?";constfileInputEl=document.querySelector("input[type=file]");constimageParts=awaitPromise.all([...fileInputEl.files].map(fileToGenerativePart));// To stream generated text output, call generateContentStream with the text and imagesconstresult=awaitmodel.generateContentStream([prompt,...imageParts]);forawait(constchunkofresult.stream){constchunkText=chunk.text();console.log(chunkText);}}run();
Dart
In diesem Beispiel wird gezeigt, wie Sie mit generateContentStream generierten Text aus einer multimodalen Prompt-Anfrage streamen, die Text und mehrere Bilder enthält:
import'package:firebase_vertexai/firebase_vertexai.dart';import'package:firebase_core/firebase_core.dart';import'firebase_options.dart';awaitFirebase.initializeApp(options:DefaultFirebaseOptions.currentPlatform,);// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casefinalmodel=FirebaseVertexAI.instance.generativeModel(model:'gemini-2.0-flash');final(firstImage,secondImage)=await(File('image0.jpg').readAsBytes(),File('image1.jpg').readAsBytes()).wait;// Provide a text prompt to include with the imagesfinalprompt=TextPart("What's different between these pictures?");// Prepare images for inputfinalimageParts=[InlineDataPart('image/jpeg',firstImage),InlineDataPart('image/jpeg',secondImage),];// To stream generated text output, call generateContentStream with the text and imagesfinalresponse=awaitmodel.generateContentStream([Content.multi([prompt,...imageParts])]);awaitfor(finalchunkinresponse){print(chunk.text);}
Beispiel ansehen: Generierten Text aus Text und einem Video streamen
Swift
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Video enthält:
importFirebaseVertexAI// Initialize the Vertex AI serviceletvertex=VertexAI.vertexAI()// Create a `GenerativeModel` instance with a model that supports your use caseletmodel=vertex.generativeModel(modelName:"gemini-2.0-flash")// Provide the video as `Data` with the appropriate MIME typeletvideo=InlineDataPart(data:tryData(contentsOf:videoURL),mimeType:"video/mp4")// Provide a text prompt to include with the videoletprompt="What is in the video?"// To stream generated text output, call generateContentStream with the text and videoletcontentStream=trymodel.generateContentStream(video,prompt)fortryawaitchunkincontentStream{iflettext=chunk.text{print(text)}}
Kotlin
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Video enthält:
In Kotlin sind die Methoden in diesem SDK Suspend-Funktionen und müssen aus einem Coroutine-Kontext aufgerufen werden.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casevalgenerativeModel=Firebase.vertexAI.generativeModel("gemini-2.0-flash")valcontentResolver=applicationContext.contentResolvercontentResolver.openInputStream(videoUri).use{stream->stream?.let{valbytes=stream.readBytes()// Provide a prompt that includes the video specified above and textvalprompt=content{inlineData(bytes,"video/mp4")text("What is in the video?")}// To stream generated text output, call generateContentStream with the promptvarfullResponse=""generativeModel.generateContentStream(prompt).collect{chunk->Log.d(TAG,chunk.text?:"")fullResponse+=chunk.text}}}
Java
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Video enthält:
Bei Java geben die Streamingmethoden in diesem SDK einen Publisher-Typ aus der Reactive Streams-Bibliothek zurück.
// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use caseGenerativeModelgm=FirebaseVertexAI.getInstance().generativeModel("gemini-2.0-flash");GenerativeModelFuturesmodel=GenerativeModelFutures.from(gm);ContentResolverresolver=getApplicationContext().getContentResolver();try(InputStreamstream=resolver.openInputStream(videoUri)){FilevideoFile=newFile(newURI(videoUri.toString()));intvideoSize=(int)videoFile.length();byte[]videoBytes=newbyte[videoSize];if(stream!=null){stream.read(videoBytes,0,videoBytes.length);stream.close();// Provide a prompt that includes the video specified above and textContentprompt=newContent.Builder().addInlineData(videoBytes,"video/mp4").addText("What is in the video?").build();// To stream generated text output, call generateContentStream with the promptPublisher<GenerateContentResponse>streamingResponse=model.generateContentStream(prompt);finalString[]fullResponse={""};streamingResponse.subscribe(newSubscriber<GenerateContentResponse>(){@OverridepublicvoidonNext(GenerateContentResponsegenerateContentResponse){Stringchunk=generateContentResponse.getText();fullResponse[0]+=chunk;}@OverridepublicvoidonComplete(){System.out.println(fullResponse[0]);}@OverridepublicvoidonError(Throwablet){t.printStackTrace();}@OverridepublicvoidonSubscribe(Subscriptions){}});}}catch(IOExceptione){e.printStackTrace();}catch(URISyntaxExceptione){e.printStackTrace();}
Web
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Video enthält:
import{initializeApp}from"firebase/app";import{getVertexAI,getGenerativeModel}from"firebase/vertexai";// TODO(developer) Replace the following with your app's Firebase configuration// See: https://firebase.google.com/docs/web/learn-more#config-objectconstfirebaseConfig={// ...};// Initialize FirebaseAppconstfirebaseApp=initializeApp(firebaseConfig);// Initialize the Vertex AI serviceconstvertexAI=getVertexAI(firebaseApp);// Create a `GenerativeModel` instance with a model that supports your use caseconstmodel=getGenerativeModel(vertexAI,{model:"gemini-2.0-flash"});// Converts a File object to a Part object.asyncfunctionfileToGenerativePart(file){constbase64EncodedDataPromise=newPromise((resolve)=>{constreader=newFileReader();reader.onloadend=()=>resolve(reader.result.split(',')[1]);reader.readAsDataURL(file);});return{inlineData:{data:awaitbase64EncodedDataPromise,mimeType:file.type},};}asyncfunctionrun(){// Provide a text prompt to include with the videoconstprompt="What do you see?";constfileInputEl=document.querySelector("input[type=file]");constvideoPart=awaitfileToGenerativePart(fileInputEl.files[0]);// To stream generated text output, call generateContentStream with the text and videoconstresult=awaitmodel.generateContentStream([prompt,videoPart]);forawait(constchunkofresult.stream){constchunkText=chunk.text();console.log(chunkText);}}run();
Dart
Sie können generateContentStream() aufrufen, um generierten Text aus einer multimodalen Prompt-Anfrage zu streamen, die Text und ein einzelnes Video enthält:
import'package:firebase_vertexai/firebase_vertexai.dart';import'package:firebase_core/firebase_core.dart';import'firebase_options.dart';awaitFirebase.initializeApp(options:DefaultFirebaseOptions.currentPlatform,);// Initialize the Vertex AI service and create a `GenerativeModel` instance// Specify a model that supports your use casefinalmodel=FirebaseVertexAI.instance.generativeModel(model:'gemini-2.0-flash');// Provide a text prompt to include with the videofinalprompt=TextPart("What's in the video?");// Prepare video for inputfinalvideo=awaitFile('video0.mp4').readAsBytes();// Provide the video as `Data` with the appropriate mimetypefinalvideoPart=InlineDataPart('video/mp4',video);// To stream generated text output, call generateContentStream with the text and imagefinalresponse=awaitmodel.generateContentStream([Content.multi([prompt,videoPart])]);awaitfor(finalchunkinresponse){print(chunk.text);}
Richten Sie Cloud Storage for Firebase ein, damit Sie große Dateien in Ihre multimodalen Anfragen aufnehmen und eine besser verwaltete Lösung für die Bereitstellung von Dateien in Prompts haben können.
Dateien können Bilder, PDFs, Videos und Audiodateien enthalten.
Überlegen Sie, wie Sie sich auf die Produktion vorbereiten können, einschließlich der Einrichtung von Firebase App Check, um die Gemini API vor Missbrauch durch nicht autorisierte Clients zu schützen.
Sehen Sie sich auch die Produktionscheckliste an.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-05-01 (UTC)."],[],[]]