Gdy wywołujesz Gemini API z aplikacji za pomocą pakietu SDK Vertex AI in Firebase, możesz poprosić model Gemini o wygenerowanie tekstu na podstawie danych wejściowych multimodalnych. Prompty multimodalne mogą zawierać wiele modalności (czyli typów danych wejściowych), takich jak tekst, obrazy, pliki PDF, pliki tekstowe, filmy i dźwięk.
W każdym żądaniu multimodalnym musisz zawsze podać te informacje:
Plik ma nazwę
mimeType
. Dowiedz się więcej o obsługiwanych typach MIME poszczególnych plików wejściowych.Plik. Plik możesz przesłać jako dane wstawione (jak na tej stronie) lub podać jego adres URL lub identyfikator URI.
Do testowania i ulepszania promptów multimodalnych zalecamy używanie Vertex AI Studio.
Inne opcje dotyczące Gemini API
Opcjonalnie możesz wypróbować alternatywną wersję „Google AI” usługi Gemini API
. Możesz uzyskać bezpłatny dostęp (w ograniczonym zakresie i w miejscach, w których jest dostępny) za pomocą pakietów SDK klienta Google AI Studio i Google AI. Pakiety SDK powinny być używane tylko do tworzenia prototypów w aplikacjach mobilnych i internetowych.Gdy już poznasz działanie interfejsu Gemini API, przejdź na nasze pakiety SDK Vertex AI in Firebase (ta dokumentacja), które zawierają wiele dodatkowych funkcji ważnych dla aplikacji mobilnych i internetowych, takich jak ochrona interfejsu API przed nadużywaniem za pomocą Firebase App Check oraz obsługa dużych plików multimedialnych w żądaniach.
Opcjonalnie wywołaj Vertex AI Gemini API po stronie serwera (np. w przypadku Pythona, Node.js lub Go)
Użyj pakietu Vertex AISDK po stronie serwera,Firebase Genkit lub Firebase Extensions dla Gemini API.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, zapoznaj się z przewodnikiem wprowadzającym do pakietów SDK Vertex AI in Firebase. Najpierw wykonaj te czynności:
Skonfiguruj nowy lub istniejący projekt Firebase, w tym użyj abonamentu Blaze i włącz wymagane interfejsy API.
Połącz aplikację z Firebase, w tym zarejestruj ją i dodaj do niej konfigurację Firebase.
Dodaj pakiet SDK i zainicjuj usługę Vertex AI oraz model generatywny w swojej aplikacji.
Po połączeniu aplikacji z Firebase, dodaniu pakietu SDK i inicjalizacji usługi Vertex AI oraz modelu generatywnego możesz wywołać funkcję Gemini API.
Generowanie tekstu na podstawie tekstu i jednego obrazu Generowanie tekstu na podstawie tekstu i wielu obrazów Generowanie tekstu na podstawie tekstu i filmu
Przykładowe pliki multimedialne
Jeśli nie masz jeszcze plików multimedialnych, możesz użyć tych dostępnych publicznie. Ponieważ te pliki są przechowywane w workach, które nie znajdują się w Twoim projekcie Firebase, musisz użyć formatu https://storage.googleapis.com/BUCKET_NAME/PATH/TO/FILE
w adresie URL.
Obraz:
https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
Typ MIME:image/jpeg
. Wyświetl lub pobierz ten obraz.PDF:
https://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf
z typem MIMEapplication/pdf
. Wyświetl lub pobierz plik PDF.Wideo:
https://storage.googleapis.com/cloud-samples-data/video/animals.mp4
z typem MIMEvideo/mp4
. Obejrzyj lub pobierz ten filmDźwięk:
https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/pixel.mp3
z typem MIMEaudio/mp3
. Słuchaj lub pobierz ten plik audio.
Generowanie tekstu na podstawie tekstu i jednego obrazu
Zanim spróbujesz użyć tego przykładu, zapoznaj się z sekcją Zanim zaczniesz tego przewodnika.
Możesz wywołać Gemini API za pomocą promptów multimodalnych, które zawierają zarówno tekst, jak i pojedynczy plik (np. obraz, jak w tym przykładzie). W takich przypadkach musisz użyć modelu, który obsługuje media w promptach (np. Gemini 2.0 Flash).
Zapoznaj się z wymaganiami i zaleceniami dotyczącymi plików wejściowych.
Wybierz, czy chcesz wyświetlić odpowiedź w czasie (generateContentStream
), czy poczekać na odpowiedź, aż zostanie wygenerowany cały wynik (generateContent
).
Możesz uzyskać szybsze interakcje, nie czekając na pełny wynik wygenerowany przez model, a zamiast tego używać strumieniowego przesyłania wyników częściowych.
Ten przykład pokazuje, jak za pomocą interfejsu generateContentStream()
przesyłać generowany tekst z promptu multimodalnego, który zawiera tekst i jeden obraz:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Możesz też poczekać na cały wynik zamiast strumieniowego przesyłania. Wynik zostanie zwrócony dopiero po zakończeniu całego procesu generowania.
Ten przykład pokazuje, jak za pomocą prompta multimodalnego generateContent()
wygenerować tekst z prompta multimodalnego zawierającego tekst i jeden obraz:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")
Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.
generowanie tekstu na podstawie tekstu i wielu obrazów.
Zanim spróbujesz użyć tego przykładu, zapoznaj się z sekcją Zanim zaczniesz tego przewodnika.
Możesz wywołać Gemini API za pomocą promptów multimodalnych, które zawierają zarówno tekst, jak i wiele plików (np. obrazów, jak w tym przykładzie). W takich przypadkach musisz użyć modelu, który obsługuje media w promptach (np. Gemini 2.0 Flash).
Zapoznaj się z wymaganiami i zaleceniami dotyczącymi plików wejściowych.
Wybierz, czy chcesz wyświetlić odpowiedź w czasie (generateContentStream
), czy poczekać na odpowiedź, aż zostanie wygenerowany cały wynik (generateContent
).
Możesz uzyskać szybsze interakcje, nie czekając na pełny wynik wygenerowany przez model, a zamiast tego używać strumieniowego przesyłania wyników częściowych.
Ten przykład pokazuje, jak za pomocą interfejsu generateContentStream()
przesyłać generowany tekst z promptu multimodalnego, który zawiera tekst i wiele obrazów:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Możesz też poczekać na cały wynik zamiast przesyłania strumieniowego. Wynik zostanie zwrócony dopiero po zakończeniu całego procesu generowania.
Ten przykład pokazuje, jak za pomocą prompta multimodalnego generateContent()
wygenerować tekst z prompta multimodalnego zawierającego tekst i wiele obrazów:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")
Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.
Generowanie tekstu na podstawie tekstu i filmu
Zanim spróbujesz użyć tego przykładu, zapoznaj się z sekcją Zanim zaczniesz tego przewodnika.
Możesz wywołać Gemini API za pomocą promptów multimodalnych, które zawierają zarówno tekst, jak i pliki wideo (jak w tym przykładzie). W przypadku takich połączeń musisz użyć modelu, który obsługuje media w promptach (np. Gemini 2.0 Flash).
Zapoznaj się z wymaganiami i zaleceniami dotyczącymi plików wejściowych.
Wybierz, czy chcesz wyświetlić odpowiedź w czasie (generateContentStream
), czy poczekać na odpowiedź, aż zostanie wygenerowany cały wynik (generateContent
).
Możesz uzyskać szybsze interakcje, nie czekając na pełny wynik wygenerowany przez model, a zamiast tego używać strumieniowego przesyłania wyników częściowych.
Ten przykład pokazuje, jak za pomocą generateContentStream()
przesyłać generowany tekst z promptu multimodalnego, który zawiera tekst i jeden film:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
Możesz też poczekać na cały wynik zamiast strumieniowego przesyłania. Wynik zostanie zwrócony dopiero po zakończeniu całego procesu generowania.
Ten przykład pokazuje, jak za pomocą
generateContent()
wygenerować tekst z promptu multimodalnego, który zawiera tekst i jeden film:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.
Wymagania i zalecenia dotyczące plików wejściowych
Aby dowiedzieć się więcej o obsługiwanych plikach wejściowych i wymaganiach dotyczących pliku Vertex AI Gemini API, zapoznaj się z tymi informacjami:
- Różne opcje przesyłania pliku w żądaniu
- Obsługiwane typy plików
- Obsługiwane typy MIME i sposób ich określania
- Wymagania i sprawdzone metody dotyczące plików i zapytań multimodalnych
Co jeszcze możesz zrobić?
- Dowiedz się, jak policzyć tokeny przed wysłaniem długich promptów do modelu.
- Skonfiguruj Cloud Storage for Firebase, aby móc dołączać duże pliki do żądań multimodalnych i mieć lepiej zarządzane rozwiązanie do dostarczania plików w promptach. Mogą to być obrazy, pliki PDF, filmy i pliki audio.
- Zacznij myśleć o przygotowaniu się do wdrożenia, w tym o skonfigurowaniu Firebase App Check, aby chronić usługę Gemini API przed nadużyciami przez nieautoryzowanych klientów. Zapoznaj się też z listą kontrolną wersji produkcyjnej.
Wypróbuj inne możliwości Gemini API
- tworzyć rozmowy wieloetapowe (czat);
- generować tekst na podstawie promptów tekstowych,
- generować dane wyjściowe w uporządkowanym formacie (np. JSON) na podstawie zarówno tekstowych, jak i wielomodalnych promptów;
- Użyj funkcji wywoływania, aby połączyć modele generatywne z zewnętrznymi systemami i informacjami.
Dowiedz się, jak kontrolować generowanie treści
- Poznaj projektowanie promptów, w tym sprawdzone metody, strategie i przykładowe prompty.
- Skonfiguruj parametry modelu, takie jak temperatura i maksymalna liczba tokenów wyjściowych (w przypadku Gemini) lub format obrazu i generowanie osób (w przypadku Imagen).
- Używaj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymywania odpowiedzi, które mogą być uważane za szkodliwe.
Więcej informacji o obsługiwanych modelach
Dowiedz się więcej o modelach dostępnych w różnych przypadkach użycia oraz o ich limitach i cenach.Prześlij opinię na temat korzystania z usługi Vertex AI in Firebase