Gemini {7}API'sini kullanarak çok modlu istemlerden metin oluşturun


Vertex AI in Firebase SDK'sını kullanarak uygulamanızdan Gemini API'ü çağırırken Gemini modelinden çok modlu girişe dayalı metin oluşturmasını isteyebilirsiniz. Çok modlu istemler, resimler, PDF'ler, düz metin dosyaları, video ve ses gibi birden fazla mod (veya giriş türü) içerebilir.

Her çok modlu isteğinde her zaman aşağıdakileri sağlamanız gerekir:

  • Dosyanın adı mimeType. Her giriş dosyasının desteklenen MIME türleri hakkında bilgi edinin.

  • Dosya. Dosyayı satır içi veri olarak (bu sayfada gösterildiği gibi) veya URL'sini ya da URI'sini kullanarak sağlayabilirsiniz.

Çoklu modal istemleri test etmek ve üzerinde iterasyon yapmak için Vertex AI Studio kullanmanızı öneririz.

Başlamadan önce

Henüz yapmadıysanız Vertex AI in Firebase SDK'ları için başlangıç kılavuzunu tamamlayın. Aşağıdakilerin tümünü yaptığınızdan emin olun:

  1. Blaze fiyatlandırma planını kullanma ve gerekli API'leri etkinleştirme dahil olmak üzere yeni veya mevcut bir Firebase projesi oluşturun.

  2. Uygulamanızı kaydettirme ve Firebase yapılandırmanızı uygulamanıza ekleme dahil olmak üzere uygulamanızı Firebase'e bağlayın.

  3. SDK'yı ekleyin ve uygulamanızda Vertex AI hizmetini ve üretken modeli başlatın.

Uygulamanızı Firebase'e bağladıktan, SDK'yı ekledikten ve Vertex AI hizmetini ile üretken modeli başlattıktan sonra Gemini API işlevini çağırmaya hazırsınız.

Metin ve tek bir resimden metin oluşturma Metin ve birden fazla resimden metin oluşturma Metin ve videodan metin oluşturma

Örnek medya dosyaları

Medya dosyanız yoksa herkese açık olarak sunulan aşağıdaki dosyaları kullanabilirsiniz:

Metin ve tek bir resimden metin oluşturma

Bu örneği denemeden önce bu kılavuzun Başlamadan önce bölümünü tamamladığınızdan emin olun.

Gemini API işlevini hem metin hem de tek bir dosya (bu örnekte gösterildiği gibi resim gibi) içeren çoklu modalite istemleriyle çağırabilirsiniz. Bu aramalar için istemlerde medyayı destekleyen bir model (ör. Gemini 1.5 Flash) kullanmanız gerekir.

Giriş dosyaları ile ilgili koşulları ve önerileri inceleyin.

Yanıtı akış şeklinde mi (generateContentStream) yoksa sonucun tamamı oluşturulana kadar mı (generateContent) beklemek istediğinizi seçin.

Akış

Model oluşturma işleminin sonucunun tamamını beklemek yerine kısmi sonuçları işlemek için akış özelliğini kullanarak daha hızlı etkileşimler elde edebilirsiniz.

Bu örnekte, metin ve tek bir resim içeren çok formatlı istem isteğinden oluşturulan metni aktarmak için generateContentStream() özelliğinin nasıl kullanılacağı gösterilmektedir:

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)
  }
}

Akış olmadan

Alternatif olarak, aktarmak yerine sonucun tamamını bekleyebilirsiniz. Sonuç yalnızca model tüm oluşturma işlemini tamamladıktan sonra döndürülür.

Bu örnekte, metin ve tek bir resim içeren çok modlu istem isteğinden metin oluşturmak için generateContent() işlevinin nasıl kullanılacağı gösterilmektedir:

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.")

Kullanım alanınıza ve uygulamanıza uygun bir Gemini modeli ve isteğe bağlı olarak bir konum seçmeyi öğrenin.

Metin ve birden fazla resimden metin oluşturma

Bu örneği denemeden önce bu kılavuzun Başlamadan önce bölümünü tamamladığınızdan emin olun.

Gemini API işlevini hem metin hem de birden fazla dosya (bu örnekte gösterildiği gibi resimler gibi) içeren çok modaliteli istemlerle çağırabilirsiniz. Bu aramalar için istemlerde medyayı destekleyen bir model (ör. Gemini 1.5 Flash) kullanmanız gerekir.

Giriş dosyaları ile ilgili koşulları ve önerileri inceleyin.

Yanıtı akış şeklinde mi (generateContentStream) yoksa sonucun tamamı oluşturulana kadar mı (generateContent) beklemek istediğinizi seçin.

Akış

Model oluşturma işleminin sonucunun tamamını beklemek yerine kısmi sonuçları işlemek için akış özelliğini kullanarak daha hızlı etkileşimler elde edebilirsiniz.

Bu örnekte, metin ve birden fazla resim içeren çok modlu istem isteğinden oluşturulan metni aktarmak için generateContentStream() işlevinin nasıl kullanılacağı gösterilmektedir:

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)
  }
}

Akış olmadan

Alternatif olarak, akış yerine sonucun tamamını bekleyebilirsiniz. Sonuç yalnızca model, oluşturma sürecinin tamamını tamamladıktan sonra döndürülür.

Bu örnekte, metin ve birden fazla resim içeren çok modlu istem isteğinden metin oluşturmak için generateContent() işlevinin nasıl kullanılacağı gösterilmektedir:

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.")

Kullanım alanınıza ve uygulamanıza uygun bir Gemini modeli ve isteğe bağlı olarak bir konum seçmeyi öğrenin.

Metin ve videodan metin oluşturma

Bu örneği denemeden önce bu kılavuzun Başlamadan önce bölümünü tamamladığınızdan emin olun.

Gemini API'ü, hem metin hem de video dosyaları içeren çoklu modal istemlerle (bu örnekte gösterildiği gibi) çağırabilirsiniz. Bu aramalar için istemlerde medyayı destekleyen bir model (ör. Gemini 1.5 Flash) kullanmanız gerekir.

Giriş dosyaları ile ilgili koşulları ve önerileri inceleyin.

Yanıtı akış şeklinde mi (generateContentStream) yoksa sonucun tamamı oluşturulana kadar mı (generateContent) beklemek istediğinizi seçin.

Akış

Model oluşturma işleminin sonucunun tamamını beklemek yerine kısmi sonuçları işlemek için akış özelliğini kullanarak daha hızlı etkileşimler elde edebilirsiniz.

Bu örnekte, metin ve tek bir video içeren çoklu formatlı istem isteğinde oluşturulan metni aktarmak için generateContentStream() işlevinin nasıl kullanılacağı gösterilmektedir:

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)
  }
}

Akış olmadan

Alternatif olarak, aktarmak yerine sonucun tamamını bekleyebilirsiniz. Sonuç yalnızca model tüm oluşturma işlemini tamamladıktan sonra döndürülür.

Bu örnekte, metin ve tek bir video içeren çok formatlı istem isteğinden metin oluşturmak için generateContent() işlevinin nasıl kullanılacağı gösterilmektedir:

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.")

Kullanım alanınıza ve uygulamanıza uygun bir Gemini modeli ve isteğe bağlı olarak bir konum seçmeyi öğrenin.

Giriş dosyaları için koşullar ve öneriler

Aşağıdakiler hakkında bilgi edinmek için Vertex AI Gemini API için desteklenen giriş dosyaları ve gereksinimler başlıklı makaleyi inceleyin:

  • İstekte dosya sağlamayla ilgili farklı seçenekler
  • Desteklenen dosya türleri
  • Desteklenen MIME türleri ve bunların nasıl belirtileceği
  • Dosyalar ve çok modlu istekler için şartlar ve en iyi uygulamalar

Başka neler yapabilirsiniz?

  • Modele uzun istemler göndermeden önce jetonları nasıl sayacağınızı öğrenin.
  • Çok modlu isteklerinize büyük dosyalar ekleyebilmeniz ve istemlerde dosya sağlamak için daha yönetilebilir bir çözüme sahip olabilmeniz amacıyla Cloud Storage for Firebase'i ayarlayın. Dosyalar resim, PDF, video ve ses içerebilir.
  • Gemini API'ı yetkisiz istemciler tarafından kötüye kullanıma karşı korumak için Firebase App Check oluşturma da dahil olmak üzere üretime hazırlanmaya başlayın.

Gemini API'ün diğer özelliklerini deneyin

İçerik oluşturmayı nasıl kontrol edeceğinizi öğrenin

Vertex AI Studio kullanarak istemler ve model yapılandırmalarıyla da denemeler yapabilirsiniz.

Gemini modelleri hakkında daha fazla bilgi

Çeşitli kullanım alanları için kullanılabilen modeller ve bunların kotaları ile fiyatlandırması hakkında bilgi edinin.


Vertex AI in Firebase ile ilgili deneyiminiz hakkında geri bildirim verin