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, przenieś się na nasze pakiety Vertex AI in Firebase SDK (ta dokumentacja), które zawierają wiele dodatkowych funkcji ważnych dla aplikacji mobilnych i internetowych, takich jak ochrona interfejsu API przed nadużyciami 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 Pythonie, Node.js lub Go)
Użyj pakietu Vertex AI SDK po stronie serwera Genkit lub Firebase Extensions dla Gemini API.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, przeczytaj przewodnik dla początkujących, w którym znajdziesz instrukcje konfigurowania projektu Firebase, łączenia aplikacji z Firebase, dodawania pakietu SDK, inicjowania usługi Vertex AI i tworzenia wystąpienia GenerativeModel
.
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 ten 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 odtwarzać odpowiedź strumieniowo (generateContentStream
), czy czekać 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 przetwarzania częściowych wyników.
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()
// Create a `GenerativeModel` instance 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 promptu multimodalnego zawierającego tekst i jeden obraz:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance 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 odtwarzać odpowiedź strumieniowo (generateContentStream
), czy czekać 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 przetwarzania częściowych wyników.
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()
// Create a `GenerativeModel` instance 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 promptu multimodalnego zawierającego tekst i wiele obrazów:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance 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 odtwarzać odpowiedź strumieniowo (generateContentStream
), czy czekać 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 przetwarzania częściowych wyników.
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()
// Create a `GenerativeModel` instance 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()
// Create a `GenerativeModel` instance 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 usługi 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 funkcje
- 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;
- generować obrazy na podstawie promptów tekstowych;
- 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ę o tym, jak oceniasz korzystanie z usługi Vertex AI in Firebase