Güçlü Üretken Yapay Zeka Uygulamaları Oluşturmak için Google Gen AI TypeScript/JavaScript SDK'sının Nasıl Kullanılacağı

Yapay Zeka dünyası hızla gelişiyor. Google'ın Gemini modelleri önde. Gen AI SDK, TypeScript/JavaScript geliştiricilere Gemini gücü için kapsamlı çözüm sunar.

Efe Demir

Efe Demir

5 June 2025

Güçlü Üretken Yapay Zeka Uygulamaları Oluşturmak için Google Gen AI TypeScript/JavaScript SDK'sının Nasıl Kullanılacağı

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.

💡
Harika bir API Test aracı mı arıyorsunuz? güzel API Dokümantasyonu oluşturur?

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!
button

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:

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ı:

Ö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ı:

  1. 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. Bir Session nesnesine çözümlenen bir Promise döndürür.
  2. Session Nesnesi: Etkin WebSocket bağlantısını temsil eder. Şunları yapmak için yöntemleri vardır:

Yapılandırma (LiveConnectParameters ve LiveConnectConfig):

Geri Çağırmalar (LiveCallbacks):

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

Ö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:

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

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

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin