Gemini modelinden, sağladığınız doküman dosyalarını (ör. PDF'ler ve düz metin dosyaları) satır içi (Base64 kodlu) veya URL aracılığıyla analiz etmesini isteyebilirsiniz. Firebase AI Logic'ı kullanırken bu isteği doğrudan uygulamanızdan gönderebilirsiniz.
Bu özellik sayesinde şunları yapabilirsiniz:
- Dokümanlardaki diyagramları, grafikleri ve tabloları analiz etme
- Bilgileri yapılandırılmış çıkış biçimlerine ayıklama
- Dokümanlardaki görsel ve metin içerikleriyle ilgili soruları yanıtlama
- Belgeleri özetleme
- Doküman içeriğini (ör. HTML'ye) düzenleri ve biçimlendirmeleri koruyarak transkribe etme. Bu sayede, içeriği sonraki uygulamalarda (ör. RAG işlem hatlarında) kullanabilirsiniz.
Bu kılavuzda, doküman girişinden (ör. PDF) metin oluşturma konusu ele alınmaktadır. Ancak doküman girişinden görüntü de oluşturabilirsiniz.
Kod örneklerine git Yayınlanan yanıtlar için koda git
|
Belgelerle (ör. PDF'ler) çalışma konusunda ek seçenekler için diğer kılavuzlara göz atın Yapılandırılmış çıkış oluşturma Çok turlu sohbet |
Başlamadan önce
|
Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Henüz yapmadıysanız başlangıç kılavuzunu tamamlayın. Bu kılavuzda Firebase projenizi nasıl ayarlayacağınız, uygulamanızı Firebase'e nasıl bağlayacağınız, SDK'yı nasıl ekleyeceğiniz, seçtiğiniz Gemini API sağlayıcısı için arka uç hizmetini nasıl başlatacağınız ve GenerativeModel örneğini nasıl oluşturacağınız açıklanmaktadır.
İstemlerinizi test etmek ve üzerinde yineleme yapmak için Google AI Studio kullanmanızı öneririz.
Bu özelliği destekleyen modeller
Bu kılavuz, doküman girişinden (ör. PDF'ler) metin oluşturma ile ilgilidir ve aşağıdaki Gemini modelleri için geçerlidir:
gemini-3.1-pro-previewgemini-3.8-flash(ve daha eskigemini-3.7-flash,gemini-3.6-flashvegemini-3.5-flash)gemini-3.5-flash-lite(ve eskigemini-3.1-flash-lite)
Genel kullanım amaçlı Gemini 2.5 modeller bu özelliği destekler ancak bunların tümü kullanımdan kaldırılmıştır.
PDF dosyalarından (base64 kodlu) metin oluşturma
|
Bu örneği denemeden önce projenizi ve uygulamanızı ayarlamak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu bölümde, seçtiğiniz Gemini API sağlayıcı için bir düğmeyi de tıklayarak bu sayfada sağlayıcıya özel içerikleri görebilirsiniz. |
Gemini modelinden, metin ve PDF'lerle istem oluşturarak metin üretmesini isteyebilirsiniz. Her giriş dosyasının mimeType ve dosyanın kendisi sağlanır. Giriş dosyalarıyla ilgili koşulları ve önerileri bu sayfanın ilerleyen bölümlerinde bulabilirsiniz.
Swift
Metin ve PDF'lerin çok formatlı girişinden metin oluşturmak için
generateContent()'i arayabilirsiniz.
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case.
let model = ai.generativeModel(modelName: "gemini-3.8-flash")
// Provide the PDF as `Data` with the appropriate MIME type
let pdf = try InlineDataPart(data: Data(contentsOf: pdfURL), mimeType: "application/pdf")
// Provide a text prompt to include with the PDF file
let prompt = "Summarize the important results in this report."
// To generate text output, call `generateContent` with the PDF file and text prompt
let response = try await model.generateContent(pdf, prompt)
// Print the generated text, handling the case where it might be nil
print(response.text ?? "No text in response.")
Kotlin
Metin ve PDF'lerin çok formatlı girişinden metin oluşturmak için
generateContent()'i arayabilirsiniz.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash")
val contentResolver = applicationContext.contentResolver
// Provide the URI for the PDF file you want to send to the model
val inputStream = contentResolver.openInputStream(pdfUri)
if (inputStream != null) { // Check if the PDF file loaded successfully
inputStream.use { stream ->
// Provide a prompt that includes the PDF file specified above and text
val prompt = content {
inlineData(
bytes = stream.readBytes(),
mimeType = "application/pdf" // Specify the appropriate PDF file MIME type
)
text("Summarize the important results in this report.")
}
// To generate text output, call `generateContent` with the prompt
val response = model.generateContent(prompt)
// Log the generated text, handling the case where it might be null
Log.d(TAG, response.text ?: "")
}
} else {
Log.e(TAG, "Error getting input stream for file.")
// Handle the error appropriately
}
Java
Metin ve PDF'lerin çok formatlı girişinden metin oluşturmak için
generateContent()'i arayabilirsiniz.
ListenableFuture döndürür.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
ContentResolver resolver = getApplicationContext().getContentResolver();
// Provide the URI for the PDF file you want to send to the model
try (InputStream stream = resolver.openInputStream(pdfUri)) {
if (stream != null) {
byte[] audioBytes = stream.readAllBytes();
stream.close();
// Provide a prompt that includes the PDF file specified above and text
Content prompt = new Content.Builder()
.addInlineData(audioBytes, "application/pdf") // Specify the appropriate PDF file MIME type
.addText("Summarize the important results in this report.")
.build();
// To generate text output, call `generateContent` with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String text = result.getText();
Log.d(TAG, (text == null) ? "" : text);
}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Failed to generate a response", t);
}
}, executor);
} else {
Log.e(TAG, "Error getting input stream for file.");
// Handle the error appropriately
}
} catch (IOException e) {
Log.e(TAG, "Failed to read the pdf file", e);
} catch (URISyntaxException e) {
Log.e(TAG, "Invalid pdf file", e);
}
Web
Metin ve PDF'lerin çok formatlı girişinden metin oluşturmak için
generateContent()'i arayabilirsiniz.
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(ai, { model: "gemini-3.8-flash" });
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(','));
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the PDF file
const prompt = "Summarize the important results in this report.";
// Prepare PDF file for input
const fileInputEl = document.querySelector("input[type=file]");
const pdfPart = await fileToGenerativePart(fileInputEl.files);
// To generate text output, call `generateContent` with the text and PDF file
const result = await model.generateContent([prompt, pdfPart]);
// Log the generated text, handling the case where it might be undefined
console.log(result.response.text() ?? "No text in response.");
}
run();
Dart
Metin ve PDF'lerin çok formatlı girişinden metin oluşturmak için
generateContent()'i arayabilirsiniz.
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-3.8-flash');
// Provide a text prompt to include with the PDF file
final prompt = TextPart("Summarize the important results in this report.");
// Prepare the PDF file for input
final doc = await File('document0.pdf').readAsBytes();
// Provide the PDF file as `Data` with the appropriate PDF file MIME type
final docPart = InlineDataPart('application/pdf', doc);
// To generate text output, call `generateContent` with the text and PDF file
final response = await model.generateContent([
Content.multi([prompt,docPart])
]);
// Print the generated text
print(response.text);
Unity
Metin ve PDF'lerin çok formatlı girişinden metin oluşturmak için
GenerateContentAsync()'i arayabilirsiniz.
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case.
var model = ai.GetGenerativeModel(modelName: "gemini-3.8-flash");
// Provide a text prompt to include with the PDF file
var prompt = ModelContent.Text("Summarize the important results in this report.");
// Provide the PDF file as `data` with the appropriate PDF file MIME type
var doc = ModelContent.InlineData("application/pdf",
System.IO.File.ReadAllBytes(System.IO.Path.Combine(
UnityEngine.Application.streamingAssetsPath, "document0.pdf")));
// To generate text output, call `GenerateContentAsync` with the text and PDF file
var response = await model.GenerateContentAsync(new [] { prompt, doc });
// Print the generated text
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
Kullanım alanınıza ve uygulamanıza uygun bir model seçmeyi öğrenin.
Yanıtı akış şeklinde gösterme
|
Bu örneği denemeden önce projenizi ve uygulamanızı ayarlamak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu bölümde, seçtiğiniz Gemini API sağlayıcı için bir düğmeyi de tıklayarak bu sayfada sağlayıcıya özel içerikleri görebilirsiniz. |
Model oluşturma işleminden gelen sonucun tamamını beklemek yerine akışı kullanarak kısmi sonuçları işleyebilir ve daha hızlı etkileşimler elde edebilirsiniz.
Yanıtı yayınlamak için generateContentStream işlevini çağırın.
Giriş belgeleriyle ilgili koşullar ve öneriler
Satır içi veri olarak sağlanan bir dosyanın aktarım sırasında base64 olarak kodlandığını ve bu durumun isteğin boyutunu artırdığını unutmayın. İstek çok büyükse HTTP 413 hatası alırsınız.
Aşağıdaki konularla ilgili ayrıntılı bilgi edinmek için "Desteklenen giriş dosyaları ve koşulları" sayfasına bakın:
- İsteklerde dosya göndermek için farklı seçenekler (satır içi veya dosyanın URL'sini ya da URI'sini kullanarak)
- Belge dosyalarıyla ilgili koşullar ve en iyi uygulamalar
Desteklenen belge MIME türleri
Gemini Çok formatlı modeller aşağıdaki belge MIME türlerini destekler:
- PDF -
application/pdf - Metin -
text/plain
İstek başına sınırlar
PDF'ler resim olarak değerlendirilir. Bu nedenle, bir PDF'nin tek bir sayfası tek bir resim olarak değerlendirilir. İstemde izin verilen sayfa sayısı, Gemini çok formatlı modellerin destekleyebileceği resim sayısı ile sınırlıdır.
- İstek başına maksimum dosya sayısı: 3.000 dosya
- Dosya başına maksimum sayfa sayısı: 1.000 sayfa
- Dosya başına maksimum boyut: 50 MB
Başka ne yapabilirsiniz?
- Modele uzun istemler göndermeden önce parçaları nasıl sayacağınızı öğrenin.
- Cloud Storage for Firebase'ı ayarlayarak çok formatlı isteklerinize büyük dosyalar ekleyebilir ve istemlerde dosya sağlamak için daha yönetilebilir bir çözüm elde edebilirsiniz. Dosyalar; resim, PDF, video ve ses içerebilir.
-
Üretime hazırlanma konusunda düşünmeye başlayın (üretim yapılacaklar listesine bakın):
- Yetkisiz istemcilerin kötüye kullanımına karşı Gemini API öğesini korumak için Firebase App Check en kısa sürede zorunlu kılın.
- Uygulamanızın yeni bir sürümünü yayınlamadan yapay zeka özelliğinizin (ör. model adı) yapılandırmalarında isteğe bağlı değişiklikler yapabilmek için Firebase Remote Config veya sunucu istemi şablonlarını kullanın.
Diğer özellikleri deneyin
- Çok aşamalı etkileşimli görüşmeler (sohbet) oluşturun.
- Yalnızca metin istemlerinden metin oluşturun.
- Hem metin hem de çok formatlı istemlerden yapılandırılmış çıkış (ör. JSON) oluşturun.
- Hem metin hem de çok formatlı istemlerden görüntü oluşturma ve düzenleme
- Gemini metin okuma (TTS) modellerini kullanarak konuşma üretme (hem tek hem de çok konuşmacılı)
-
Gemini modelini uygulamanızın diğer bölümlerine ve harici sistemlere ve bilgilere bağlamak için işlev çağrısı ve
Google Search veyaGoogle Maps ile temellendirme gibi araçları kullanın.
İçerik oluşturmayı kontrol etme hakkında bilgi
- En iyi uygulamalar, stratejiler ve örnek istemler de dahil olmak üzere istem tasarımını anlama
- Maksimum çıkış jetonu sayısı, tekrarlanan çıkış jetonlarının olasılığı gibi model parametrelerini yapılandırın.
- Zararlı olarak değerlendirilebilecek yanıtlar alma olasılığını ayarlamak için güvenlik ayarlarını kullanın.
Desteklenen modeller hakkında daha fazla bilgi
Çeşitli kullanım alanları için kullanılabilen modeller, bu modellerin kotaları ve fiyatlandırması hakkında bilgi edinin.Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirim verme