Generowanie tekstu z promptów multimodalnych za pomocą interfejsu Gemini API


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.

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.

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ć?

Wypróbuj inne funkcje

Dowiedz się, jak kontrolować generowanie treści

Możesz też eksperymentować z promptami i konfiguracjami modeli za pomocą Vertex AI Studio.

Więcej informacji o obsługiwanych modelach

Dowiedz się więcej o modelach dostępnych w różnych przypadkach użycia oraz o ich limitachcenach.


Prześlij opinię o tym, jak oceniasz korzystanie z usługi Vertex AI in Firebase