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, zapoznaj się z przewodnikiem wprowadzającym do pakietów SDK Vertex AI in Firebase. Najpierw wykonaj te czynności:

  1. Skonfiguruj nowy lub istniejący projekt Firebase, w tym użyj abonamentu Blaze i włącz wymagane interfejsy API.

  2. Połącz aplikację z Firebase, w tym zarejestruj ją i dodaj do niej konfigurację Firebase.

  3. 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.

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

Wypróbuj inne możliwości Gemini API

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ę na temat korzystania z usługi Vertex AI in Firebase