Yapay Zeka dünyası hızla gelişiyor ve Google, güçlü Gemini modelleriyle bu gelişimin ön saflarında yer alıyor. Bu gücü kullanmak isteyen TypeScript ve JavaScript geliştiricileri için Google Gen AI SDK, kapsamlı ve esnek bir çözüm sunuyor. Bu SDK, Gemini 2.5 ve diğer son teknoloji modellerle desteklenen uygulamaları kolayca oluşturmanızı sağlayarak hem Gemini Developer API hem de Vertex AI için sağlam destek sunar. Bu makale, canlı, gerçek zamanlı etkileşimlerden ve çok modlu içerik işlemeye, Metinden Sese (TTS), görüntü oluşturmaya ve daha fazlasına kadar temel özelliklerini kapsayan bu SDK'yı anlama ve kullanma kılavuzunuz olacaktır.
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
Giriş: JavaScript ve Gemini'nin Gücünü Birleştirmek
Google Gen AI JavaScript SDK, geliştiricilerin Google'ın gelişmiş üretken yapay zeka yeteneklerini web ve Node.js uygulamalarına entegre etmelerini sağlamak için titizlikle tasarlanmıştır. İster gelişmiş bir sohbet robotu, ister akıllı bir içerik oluşturma aracı veya çeşitli medya türlerini anlayan ve üreten bir uygulama oluşturuyor olun, bu SDK gerekli yapı taşlarını sağlar.
SDK'nın temel gücü, Gemini modellerine, Gemini Developer platformunda (Google AI Studio'dan API anahtarları aracılığıyla) veya Google Cloud'un Vertex AI platformunda barındırılmalarına bakılmaksızın erişmek için kullandığı birleşik yaklaşımdır. Bu esneklik, geliştiricilerin, bir API anahtarıyla hızlı prototip oluşturmadan, MLOps yetenekleriyle Vertex AI'da üretime hazır dağıtımlara kadar, projelerinin ihtiyaçlarına en uygun ortamı seçmelerine olanak tanır.
SDK, geliştiricilerin en son teknolojiye sahip yapay zekaya erişmesini sağlamak için, son derece beklenen Gemini 2.5 modelleri de dahil olmak üzere en son Gemini özellikleriyle sorunsuz bir şekilde çalışacak şekilde tasarlanmıştır.
Başlarken: Kurulum ve Başlatma
Gelişmiş özelliklere dalmadan önce, SDK'yı kurmanın temellerini ele alalım.
Önkoşullar:
Geliştirme ortamınızda Node.js sürüm 18 veya sonraki bir sürümün yüklü olduğundan emin olun.
Kurulum:
SDK'yı npm kullanarak kurmak basittir:
npm install @google/genai
Başlatma - Gemini'ye Açılan Kapınız:
Gemini API ile yapılan tüm etkileşimler, ister Google AI Studio ister Vertex AI aracılığıyla olsun, GoogleGenAI
sınıfının örneğini oluşturarak başlar.
1. Gemini Developer API'sini Kullanma (bir API Anahtarıyla):
Bu, özellikle sunucu tarafı uygulamaları veya kişisel projeler için başlamanın en hızlı yoludur. Google AI Studio'dan bir API anahtarına ihtiyacınız olacak.
import { GoogleGenAI } from '@google/genai';
const GEMINI_API_KEY = process.env.GEMINI_API_KEY; // Veya gerçek API anahtarınız
const ai = new GoogleGenAI({ apiKey: GEMINI_API_KEY });
async function run() {
// Örnek: Metin içeriği oluştur
const model = ai.models.generateContent({
model: "gemini-pro", // Veya "gemini-2.5-flash-001" gibi belirli bir Gemini 2.5 modeli
contents: [{ role: "user", parts: [{ text: "Google Gen AI SDK'sının önemini açıklayın." }] }]
});
const response = await model;
console.log(response.text);
}
run();
API Anahtar Güvenliği Konusunda Dikkat:
2. Vertex AI'yi Kullanma:
Google Cloud'un sağlamlığını ve ölçeklenebilirliğini gerektiren uygulamalar için, SDK'yı Vertex AI için başlatmak en doğru yoldur. Bu, Google Cloud proje kimliğinizi ve konumunuzu belirtmeyi içerir.
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({
vertexai: true,
project: 'your-gcp-project-id',
location: 'your-gcp-location', // Örneğin, 'us-central1'
});
async function runVertex() {
// Örnek: Vertex AI ile metin içeriği oluştur
const model = ai.models.generateContent({
model: "gemini-1.5-pro-preview-0409", // Örnek Vertex AI modeli
contents: [{ role: "user", parts: [{ text: "Gen AI SDK ile Vertex AI kullanmanın faydaları nelerdir?" }] }]
});
const response = await model;
console.log(response.text);
}
runVertex();
API Sürümü Seçimi:
Varsayılan olarak, SDK, önizleme özelliklerine erken erişim sağlamak için beta API uç noktalarından yararlanır. Ancak, kararlılık gerektiren uygulamalar için, başlatma sırasında v1
(kararlı) veya diğer belirli API sürümlerini (Gemini API'deki belirli önizleme özellikleri için v1alpha
gibi) açıkça seçebilirsiniz:
Vertex AI için (v1
olarak ayarlama):
const ai = new GoogleGenAI({
vertexai: true,
project: 'your-gcp-project-id',
location: 'your-gcp-location',
apiVersion: 'v1'
});
Gemini Developer API için (ai.live
gibi özellikler için v1alpha
olarak ayarlama):
const ai = new GoogleGenAI({
apiKey: 'YOUR_GEMINI_API_KEY',
apiVersion: 'v1alpha'
});
Temel SDK Yapısı: GoogleGenAI
Nesnesi
Başlatıldıktan sonra, ai
nesnesi (GoogleGenAI
'nin bir örneği), SDK'nın yeteneklerine yönelik birincil arayüzünüzdür. Her biri belirli işlevlere yönelik çeşitli alt modüllere erişim sağlar:
ai.models
: Muhtemelen en sık kullanılan alt modüldür. Üretken modellerin kendileriyle etkileşim kurmaya açılan kapınızdır.ai.models
aracılığıyla şunları yapabilirsiniz:- Metin içeriği oluşturun (
generateContent
,generateContentStream
). - Görüntü oluşturun (
generateImages
). - Metin için gömme işlemleri hesaplayın (
embedContent
). - İstemlerinizdeki belirteçleri sayın (
countTokens
). - (Yalnızca Vertex AI) Ayrıntılı belirteç bilgilerini hesaplayın (
computeTokens
). ai.caches
: (Önizleme) Büyük istem öneklerini tekrar tekrar kullanan uygulamalar için, önbelleğe alma maliyetleri ve gecikmeyi önemli ölçüde azaltabilir.ai.caches
alt modülü, bu önbellekleri oluşturmanıza ve yönetmenize olanak tanır.ai.chats
: Çok turlu konuşma deneyimlerinin geliştirilmesini basitleştirir.ai.chats
, etkileşimli sohbet robotları oluşturmayı kolaylaştırarak, konuşma geçmişini otomatik olarak yöneten yerel, durum bilgisi olan sohbet nesneleri oluşturmanıza olanak tanır.ai.files
: (Yalnızca Gemini API) Çok modlu istemler için (görüntüler, ses veya video gibi) dosyaları API'ye yüklemenize olanak tanır. Bu dosyalar daha sonra istemlerinizde referans gösterilebilir. Bu, satır içinde gönderilemeyen veya birden çok API çağrısında yeniden kullanmayı amaçladığınız büyük dosyalar için özellikle yararlıdır ve böylece bant genişliğini azaltır.ai.live
: (Önizleme, Gemini APIv1alpha
yalnızca) Bu heyecan verici alt modül, Gemini modelleriyle gerçek zamanlı, çift yönlü iletişim sağlar. Metin, ses ve video girişi destekleyen ve metin veya ses çıkışı alan, anında etkileşim gerektiren uygulamalar için tasarlanmıştır. Bu, gerçekten dinamik ve duyarlı yapay zeka deneyimleri oluşturmanın temelini oluşturur.
Gemini 2.5 Modelleriyle Uygulamalar Oluşturma
SDK, Gemini 2.5 modellerinin (ve Gemini 1.0 Pro, 1.5 Pro ve 1.5 Flash gibi önceki sürümlerin) gücüne doğrudan erişiminizdir. Belirli bir modeli kullanmak için, ai.models.generateContent()
gibi yöntemlerin model
parametresinde veya ai.chats.create()
ile bir sohbet oturumu oluştururken adını belirtmeniz yeterlidir.
Örneğin, gemini-2.5-flash-001
modelini kullanmak için (varsayımsal ad, yayınlandıkça gerçek model tanımlayıcılarıyla değiştirin):
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash-001', // Belirli model tanımlayıcısını kullanın
contents: [{ role: "user", parts: [{ text: "Gemini 2.5'teki temel gelişmelerden bahsedin." }] }]
});
console.log(response.text);
SDK, temel API çağrılarını yönetir ve istemlerinizi oluşturmaya ve oluşturulan içeriği işlemeye odaklanmanıza olanak tanır. Google yeni modeller yayınladıkça ve mevcut olanları güncelledikçe, uygulamalarınızı en son teknolojiye sahip tutmayı kolaylaştırarak, model tanımlayıcı dizesini değiştirerek genellikle bunlara geçebilirsiniz.
Derinlemesine İnceleme: Çok Modlu İçerik İşleme (MCP)
Gemini modellerinin en güçlü yönlerinden biri, birden çok modalite (metin, görüntüler, ses, video) genelinde içeriği anlama ve oluşturma yetenekleridir. Google Gen AI SDK bunu tam olarak destekleyerek zengin, çok modlu uygulamalar oluşturmanıza olanak tanır.
MCP öncelikle generateContent
ve sendMessage
(sohbette) gibi yöntemlerdeki contents
parametresi aracılığıyla elde edilir. contents
dizisi, her biri birden çok Part
nesnesi içerebilen bir dizi Content
nesnesi alır. Her Part
farklı bir veri türünü temsil edebilir.
Çok Modlu İçeriğin Yapısı:
Content
Nesnesi: Konuşmadaki tek bir dönüşü veya tek bir giriş bloğunu temsil eder. Genellikle birrole
(ya "user" ya da "model") ve bir diziparts
vardır.Part
Nesnesi: Gerçek verilerin bulunduğu yer burasıdır. BirPart
şunlar olabilir:- Metin girişi için
{ text: "İsteminizdeki metin" }
. - Görüntü verilerini doğrudan isteğe eklemek için
{ inlineData: { mimeType: "image/jpeg", data: "base64_encoded_image_string" } }
. ai.files.upload()
aracılığıyla yüklenen veya genel olarak erişilebilir bir URI'ye (özellikle Vertex AI için) referans vermek için{ fileData: { mimeType: "video/mp4", fileUri: "gs://bucket/object" } }
.- Video girişi, bir video dosyasının belirli bir segmentini belirtmek için
startOffset
veendOffset
gibivideoMetadata
da içerebilir.
Örnek: Çok Modlu İstem (Metin ve Görüntü):
import { GoogleGenAI } from '@google/genai';
// ... (Başlatma)
async function describeImage() {
// 'base64ImageData'nın bir JPEG görüntüsünün Base64 ile kodlanmış bir dizesi olduğunu varsayalım
const base64ImageData = "..."; // Base64 görüntü verileriniz
const contents = [
{
role: "user",
parts: [
{ text: "Bu görüntüde ne var?" },
{
inlineData: {
mimeType: "image/jpeg",
data: base64ImageData,
},
},
],
},
];
const response = await ai.models.generateContent({
model: "gemini-pro-vision", // Veya Gemini 2.5 vizyon özellikli bir model
contents: contents,
});
console.log(response.text);
}
describeImage();
İstemlerinizdeki farklı veri türlerini sorunsuz bir şekilde birleştirme yeteneği, görsel Soru-Cevap sistemlerinden video içeriğini analiz eden ve açıklayan araçlara kadar çok çeşitli uygulama olasılıklarının önünü açar. SDK, görüntü oluşturma için doğrudan yöntemler sağlarken, video oluşturma doğrudan bir SDK yöntemi olarak açıkça sunulmaz. Bunun yerine, video öncelikle bir giriş modalitesi olarak ele alınır. Ancak, generateContent
aracılığıyla erişilen gelişmiş çok modlu modeller, özetleme veya video içeriği hakkında soruları yanıtlama gibi, video girişlerini sofistike şekillerde işleyebilir ve yanıtlayabilir.
Live API (ai.live
) ile Gerçek Zamanlı Etkileşimler
Düşük gecikmeli, etkileşimli deneyimler talep eden uygulamalar için, ai.live
alt modülü oyunun kurallarını değiştirir. Şu anda Önizlemede ve Gemini API için v1alpha
API sürümünü gerektiren ai.live
, Gemini modelleriyle çift yönlü akış için bir WebSocket bağlantısı kurar. Bu, metin, ses parçacıklarının ve hatta video karelerinin giriş olarak gerçek zamanlı iletimine ve metin veya sesin çıktı olarak alınmasına olanak tanır.
ai.live
'ın Temel Kavramları:
ai.live.connect(params)
: Bu, giriş noktasıdır. Model adı (model
), bağlantı yapılandırması (config
) ve çeşitli WebSocket olayları (örneğin,onopen
,onmessage
,onerror
,onclose
) için geri çağırma işlevleri (callbacks
) gibi parametreler sağlarsınız. BirSession
nesnesine çözümlenen birPromise
döndürür.Session
Nesnesi: Etkin WebSocket bağlantısını temsil eder. Şunları yapmak için yöntemleri vardır:
sendClientContent(params)
: Metin mesajları veya önceden doldurulmuş konuşma bağlamı için uygun, yapılandırılmışContent
(generateContent
'deki gibi) gönderir.sendRealtimeInput(params)
: Ses parçacıklarının veya video karelerinin (görüntü olarak) sürekli akışları için optimize edilmişBlob
verileri gönderir. Bu yöntem,sendClientContent
ile karıştırılırsa, katı sıralama garantileri pahasına, duyarlılık için tasarlanmıştır.sendToolResponse(params)
: Canlı oturum içinde işlev çağırma kullanılıyorsa, modele yanıtları geri gönderir.close()
: WebSocket bağlantısını sonlandırır.
Yapılandırma (LiveConnectParameters
ve LiveConnectConfig
):
model
: Bağlanılacak Gemini modelini belirtir (örneğin, dokümantasyon örneklerinde gösterildiği gibi 'gemini-2.0-flash-exp' gibi deneysel modeller veya diğerv1alpha
uyumlu modeller).config.responseModalities
: İstenen çıktı türlerini belirten bir dizi, örneğin,[Modality.AUDIO, Modality.TEXT]
. Belirtilmediği takdirde varsayılan değerModality.AUDIO
'dur.config.speechConfig
: Metinden Sese çıkışı için yapılandırma (bununla ilgili daha fazla bilgi aşağıdadır).config.systemInstruction
: Modeli yönlendirmek için sistem düzeyinde talimatlar.config.tools
: İşlev çağırma için bildirimler.
Geri Çağırmalar (LiveCallbacks
):
onopen
: WebSocket bağlantısı başarıyla kurulduğunda çağrılır.onmessage
: Sunucudan bir mesaj (örneğin, oluşturulan metin, ses verileri, araç çağrıları) alındığında çağrılır.onerror
: WebSocket bağlantısıyla ilgili bir hata oluşursa çağrılır.onclose
: Bağlantı kapatıldığında çağrılır.
Örnek: Temel ai.live
Kurulumu (Kavramsal):
import { GoogleGenAI, Modality } from '@google/genai';
// Gemini API için apiVersion: 'v1alpha' ile başlattığınızdan emin olun
const ai = new GoogleGenAI({ apiKey: 'YOUR_GEMINI_API_KEY', apiVersion: 'v1alpha' });
async function startLiveSession() {
try {
const session = await ai.live.connect({
model: 'gemini-pro', // Veya canlıyı destekleyen belirli bir model, dokümantasyonu kontrol edin
config: {
responseModalities: [Modality.TEXT, Modality.AUDIO], // Metin ve ses bekleyin
// speechConfig: { ... } // TTS için, aşağıda ele alınmıştır
},
callbacks: {
onopen: () => console.log('Canlı oturum bağlandı!'),
onmessage: (serverMessage) => {
// Sunucudan gelen mesajları işleyin
// Bu metin, ses verileri, araç çağrıları vb. olabilir.
console.log('Sunucudan alındı:', serverMessage);
if (serverMessage.speechUpdate?.audio) {
// Gelen ses verilerini işleyin (örneğin, oynatın)
const audioBytes = serverMessage.speechUpdate.audio;
// ... ses oynatma mantığınız ...
}
if (serverMessage.textUpdate?.text) {
console.log("Metin: ", serverMessage.textUpdate.text);
}
},
onerror: (error) => console.error('Canlı oturum hatası:', error),
onclose: () => console.log('Canlı oturum kapatıldı.'),
},
});
// Artık mesaj gönderebilirsiniz
session.sendClientContent({ turns: [{ role: 'user', parts: [{text: 'Merhaba, canlı Gemini!'}] }] });
// Sürekli ses girişi için:
// navigator.mediaDevices.getUserMedia({ audio: true }).then(stream => {
// const mediaRecorder = new MediaRecorder(stream);
// mediaRecorder.ondataavailable = event => {
// if (event.data.size > 0) {
// session.sendRealtimeInput({ media: { mediaChunks: [event.data] } });
// }
// };
// mediaRecorder.start(1000); // Her saniyede bir ses parçacığı gönderin
// });
// Unutmayın, bittiğinde oturumu kapatın
// session.close();
} catch (error) {
console.error('Canlı oturumu bağlamada başarısız:', error);
}
}
startLiveSession();
ai.live
modülü, farklı modaliteler genelinde kullanıcı girdilerine gerçek zamanlı olarak tepki veren, gerçekten konuşmaya dayalı ve duyarlı hissettiren uygulamalar oluşturmak için inanılmaz derecede güçlüdür.
Metinden Sese (TTS) Modelleri ve Yetenekleri
SDK, öncelikle ses çıkışı istendiğinde ai.live
arayüzü aracılığıyla Metinden Sese (TTS) oluşturmayı kolaylaştırır. Bu, Gemini modellerinin yalnızca metinle değil, aynı zamanda konuşulan sesle de yanıt vermesini sağlar.
TTS Yapılandırması (SpeechConfig
ve VoiceConfig
):
ai.live.connect()
kullanarak canlı bir bağlantı kurduğunuzda, config
parametresi içinde bir speechConfig
belirtebilirsiniz.
SpeechConfig
: Bu nesnenin şu anda bir ana özelliği vardır:voiceConfig
: TTS çıktısı için istenen sesi belirtmek için bir nesne.VoiceConfig
:prebuiltVoice
: Önceden oluşturulmuş bir ses adı belirtebilirsiniz (örneğin, potansiyel Google teklifleri başına 'aura-asteria-en', 'aura-luna-en' - her zaman mevcut ses adları için en son resmi belgelere bakın).customVoice
: (Potansiyel olarak) API tarafından destekleniyorsa özel olarak eğitilmiş sesleri kullanmak için.
Örnek: Canlı Oturumda Ses Çıkışı İsteme:
// ai.live.connect parametreleri içinde:
// ...
config: {
responseModalities: [Modality.AUDIO], // TTS için çok önemli
speechConfig: {
voiceConfig: {
// Mevcut bir önceden oluşturulmuş ses adıyla değiştirin
prebuiltVoice: 'aura-asteria-en',
}
}
},
callbacks: {
onmessage: (serverMessage) => {
if (serverMessage.speechUpdate?.audio) {
const audioData = serverMessage.speechUpdate.audio; // Bu, ArrayBuffer'dır
// Bu ses verilerini tarayıcıda oynatmak veya Node.js'de kaydetmek için mantık
// Örneğin, bir tarayıcıda:
// const audioBlob = new Blob([audioData], { type: 'audio/mpeg' }); // Veya uygun MIME türü
// const audioUrl = URL.createObjectURL(audioBlob);
// new Audio(audioUrl).play();
console.log('TTS için ses verileri alındı.');
}
if (serverMessage.textUpdate?.text) {
console.log("Eşlik eden metin (varsa):", serverMessage.textUpdate.text)
}
},
// ... diğer geri çağırmalar
},
// ...
Ses çıkışı için yapılandırıldığında, canlı oturumunuzdaki onmessage
geri çağırması ServerMessage
nesneleri alacaktır. Mesaj ses içeriyorsa, speechUpdate.audio
alanı ses verilerini (genellikle bir ArrayBuffer
olarak) tutacaktır. Daha sonra bu verileri kullanıcıya geri çalmak veya bir ses dosyası olarak kaydetmek için işleyebilirsiniz. textUpdate.text
alanı da konuşmanın metin sürümüyle doldurulabilir.
TTS'nin doğrudan canlı, konuşmaya dayalı akışa bu entegrasyonu, SDK'yı ses öncelikli uygulamalar, etkileşimli asistanlar ve erişilebilirlik özellikleri için ideal hale getirir.
Görüntü Oluşturma Modelleri
SDK, Imagen gibi modelleri kullanarak görüntü oluşturmak için özel bir yöntem sağlar: ai.models.generateImages()
. Bu yöntem, bir metin istemi sağlamanıza ve oluşturulan görüntü verilerini almanıza olanak tanır.
ai.models.generateImages()
'ı Kullanma:
Bu yöntem, şunları içeren GenerateImagesParameters
alır:
model
: Görüntü oluşturma modelinin tanımlayıcısı (örneğin, 'imagen-3.0-generate-002' - her zaman geçerli model adları için dokümantasyonu kontrol edin).prompt
: Oluşturmak istediğiniz görüntünün metinsel bir açıklaması.config
(İsteğe bağlıGenerateImagesConfig
):numberOfImages
: Oluşturulacak görüntü adaylarının sayısı (varsayılan genellikle 1'dir).negativePrompt
: Görüntüde istemediğiniz şeylerin bir açıklaması.seed
: Tekrarlanabilir sonuçlar için rastgeleliği kontrol etmek için bir sayı.aspectRatio
: İstenen en boy oranı (örneğin, "1:1", "16:9").includeRaiReason
: Bir görüntü Sorumlu Yapay Zeka denetimlerini geçemezse nedenleri dahil edip etmeyeceği.- Ve diğer modele özgü parametreler.
Örnek: Bir Görüntü Oluşturma:
import { GoogleGenAI } from '@google/genai';
// ... (Vertex AI için Başlatma, Imagen genellikle bir Vertex AI hizmetidir)
const ai = new GoogleGenAI({ vertexai: true, project: 'your-gcp-project-id', location: 'your-gcp-location' });
async function createImage() {
try {
const response = await ai.models.generateImages({
model: 'imagen-3.0-generate-002', // En son model için dokümantasyonu kontrol edin
prompt: 'Gün batımında, uçan araçlar ve neon ışıklarla fütüristik bir şehir manzarası.',
config: {
numberOfImages: 1,
aspectRatio: '16:9',
includeRaiReason: true,
},
});
if (response?.generatedImages && response.generatedImages.length > 0) {
const imageBytesBase64 = response.generatedImages[0]?.image?.imageBytes;
if (imageBytesBase64) {
// imageBytesBase64, görüntünün Base64 ile kodlanmış bir dizesidir
console.log('Görüntü oluşturuldu (Base64 ile kodlanmış)!');
// Daha sonra bu görüntüyü bir tarayıcıda görüntüleyebilirsiniz (örneğin, <img src="data:image/png;base64,..." />)
// veya Node.js'de bir dosyaya kaydedebilirsiniz
}
} else {
console.log('Görüntü oluşturulmadı veya RAI tarafından filtrelendi:', response?.raiFilteredReason);
}
} catch (error) {
console.error('Görüntü oluşturma hatası:', error);
}
}
createImage();
Yanıt (GenerateImagesResponse
), bir dizi GeneratedImage
nesnesi içerecektir. Her nesne, görüntü verilerini (genellikle Base64 biçiminde imageBytes
olarak), filtrelenmişse bir raiFilteredReason
ve diğer meta verileri içerebilir.
Video İşleme (Giriş Olarak)
Daha önce vurgulandığı gibi, SDK öncelikle videoyu oluşturulmuş bir çıktıdan ziyade bir giriş modalitesi olarak ele alır. Çok modlu Gemini modellerine istemlerinizde video verilerini birkaç şekilde dahil edebilirsiniz:
Video Dosyalarını Yükleme (ai.files.upload()
- Gemini API):ai.files
alt modülünü kullanarak video dosyalarını (örneğin, MP4) yükleyebilirsiniz. Yüklendikten sonra, Content
nesnenizin fileData
bölümünde referans gösterilebilen bir dosya URI'si alırsınız.
// Dosya yükleme için kavramsal örnek (Gemini API)
// const uploadedFile = await ai.files.upload({
// file: pathToYourVideoFile, // Veya tarayıcıda bir Blob
// mimeType: 'video/mp4',
// displayName: 'my-cool-video.mp4'
// });
// const videoFileUri = uploadedFile.uri;
const contents = [{
role: "user",
parts: [
{ text: "Bu videoyu özetleyin." },
{ fileData: { mimeType: "video/mp4", fileUri: "YOUR_UPLOADED_VIDEO_URI_HERE" } },
// İsteğe bağlı olarak, VideoMetadata ekleyin
// { videoMetadata: { startOffset: "0s", endOffset: "30s" } } // İlk 30 saniyeyi işleyin
]
}];
Google Cloud Storage URI'lerini Kullanma (Vertex AI):
Vertex AI kullanırken, fileData
bölümünde gs://
URI'lerini kullanarak Google Cloud Storage kovalarında depolanan video dosyalarına doğrudan referans verebilirsiniz.
Canlı Video Kareleri (ai.live
):ai.live
bölümünde tartışıldığı gibi, session.sendRealtimeInput()
kullanarak tek tek video karelerini (Blob
nesneleri olarak, muhtemelen image/jpeg
veya image/png
gibi görüntü MIME türleri) gönderebilirsiniz. Bu, canlı bir video akışına dayalı olarak gerçek zamanlı analiz veya etkileşim sağlar.
VideoMetadata
arayüzü, startOffset
ve endOffset
ile, modelin odaklanması gereken bir video dosyasının hangi segmentini belirlemenize olanak tanır; bu, uzun videoları işlemek için kullanışlıdır.
Gemini API ve Vertex AI Desteği: İkili Bir Yaklaşım
Google Gen AI SDK'sının önemli bir avantajı, hem Gemini Developer API'sini (Google AI Studio aracılığıyla) hem de Vertex AI'yi sorunsuz bir şekilde desteklemesidir. Bu ikili destek, geliştiricilere esneklik ve net bir yükseltme yolu sunar.
- Gemini Developer API (Google AI Studio):
- Artıları: Bir API anahtarıyla hızlı kurulum, hızlı prototip oluşturma, kişisel projeler ve bulut altyapısını yönetmenin daha az arzu edildiği sunucu tarafı uygulamaları için idealdir. Genellikle en yeni deneysel özelliklere ve modellere daha erken erişim sağlar.
- Eksileri: API anahtarları istemci tarafında ifşa edilmemelidir.
ai.files
veai.live
gibi özellikler bu API'ye (veyav1alpha
sürümüne) özeldir. Oran sınırları ve kotalar Vertex AI'den farklı olabilir. - Vertex AI:
- Artıları: Güvenlik için sağlam MLOps yetenekleri, IAM, diğer Google Cloud hizmetleriyle entegrasyon ve genellikle büyük ölçekli uygulamalar için uygun daha yüksek kotalar içeren üretim sınıfı platform. Model kullanılabilirliği daha özenli ve kararlı olabilir.
- Eksileri: Bir Google Cloud projesi ve GCP kavramlarına aşinalık gerektirir. Başlatma biraz daha karmaşıktır (proje kimliği, konum). Bazı çok yeni deneysel özellikler önce Gemini API'ye gelebilir.
SDK, birçok farkı soyutlar. ai.models.generateContent()
gibi temel yöntemler her ikisi için de benzer şekilde çalışır; temel fark, başlatmadır (apiKey
ve vertexai: true, project, location
). Bu, uygulamanız olgunlaştıkça ve ölçeklendikçe, yapay zeka mantığınızı tamamen yeniden yazmadan, Gemini API ile başlayıp Vertex AI'ye geçmenize olanak tanır. Yöntemlerin dokümantasyonu genellikle bir özelliğin veya parametrenin bir platforma öz