Gdy wywołujesz funkcję 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
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.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, zapoznaj się z przewodnikiem wprowadzającym do pakietów SDK Vertex AI in Firebase. Upewnij się, że wykonałeś/wykonałaś te czynności:
Skonfiguruj nowy lub istniejący projekt Firebase, korzystając z abonamentu Blaze i włączając 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 zainicjowaniu 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 publicznie dostępnych plików:
Obraz:
gs://cloud-samples-data/generative-ai/image/scones.jpg
Typ MIME:image/jpeg
.
Wyświetl lub pobierz ten obraz.PDF:
gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf
z typem MIMEapplication/pdf
.
Wyświetl lub pobierz plik PDF.Wideo:
gs://cloud-samples-data/video/animals.mp4
z typem MIMEvideo/mp4
.
Obejrzyj lub pobierz ten filmDźwięk:
gs://cloud-samples-data/generative-ai/audio/pixel.mp3
z typem MIMEaudio/mp3
.
Odsł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 przypadku tych wywołań musisz użyć modelu, który obsługuje media w promptach (np. Gemini 1.5 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
).
Streaming
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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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)
}
}
Bez strumieniowego przesyłania
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()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 Gemini i opcjonalnie lokalizację odpowiednią do Twojego 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 przypadku tych wywołań musisz użyć modelu, który obsługuje media w promptach (np. Gemini 1.5 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
).
Streaming
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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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)
}
}
Bez strumieniowego przesyłania
Możesz też poczekać na cały wynik zamiast na przesyłanie strumieniowe. 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()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 Gemini i opcjonalnie lokalizację odpowiednią do Twojego 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 takich przypadkach musisz użyć modelu, który obsługuje media w promptach (np. Gemini 1.5 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
).
Streaming
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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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)
}
}
Bez strumieniowego przesyłania
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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 Gemini i opcjonalnie lokalizację odpowiednią do Twojego 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 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 Gemini API nie był nadużywany przez nieautoryzowanych klientów.
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
- Zrozumieć projektowanie promptów, w tym sprawdzone metody, strategie i przykładowe prompty.
- Skonfiguruj parametry modelu, takie jak temperatura i maksymalne tokeny danych wyjściowych.
- Użyj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymywania odpowiedzi, które mogą być szkodliwe.
Więcej informacji o modelach Gemini
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