Eğitim: Gemini API'yi kullanmaya başlama


Bu eğitimde, Gemini API'ye doğrudan Google AI Swift SDK'sı kullanan Swift uygulaması. İsteğe bağlı olarak bu SDK'yı kullanabilirsiniz erişim için doğrudan REST API'leri veya sunucu tarafı kodu (Python gibi) ile çalışma Gemini modelleri Swift uygulamanızdaki.

Bu eğitimde aşağıdakileri nasıl yapacağınızı öğreneceksiniz:

Ek olarak, bu eğitimde gelişmiş kullanım alanlarıyla ilgili bölümler (ör. sayma jetonları) ve içerik oluşturmayı kontrol etme.

Ön koşullar

Bu eğiticide, Swift uygulamasını geliştirmek için Xcode'u kullanma konusunda bilgi sahibi olduğunuz varsayılır

Bu eğiticiyi tamamlamak için, geliştirme ortamınızın ve ekibinizin Swift uygulaması aşağıdaki şartları karşılar:

  • Xcode 15.0 veya sonraki sürümler
  • Swift uygulamanız iOS 15 veya sonraki sürümleri ya da macOS 12 veya sonraki sürümleri hedeflemelidir.

Projenizi oluşturun

Gemini API'yi çağırmadan önce Xcode projenizi ayarlamanız gerekir. API anahtarınızın kurulumunu, SDK paketini Xcode projenize eklemeyi, ve modeli başlatma.

API anahtarınızı oluşturma

Gemini API'yi kullanmak için API anahtarına ihtiyacınız vardır. Henüz bir hesabınız yoksa Google AI Studio'da bir anahtar oluşturun.

API anahtarı alma

API anahtarınızın güvenliğini sağlayın

Sürümünüzde API anahtarı kontrol etmemeniz önerilir kontrol sistemi. Alternatif bir seçenek de bu verileri bir GenerativeAI-Info.plist dosyasını açın ve .plist içinden API anahtarını okuyun dosyası olarak kaydedebilirsiniz. Bu .plist dosyasını uygulamanızın kök klasörüne koyduğunuzdan ve bunu sürüm kontrolünden hariç tutabilirsiniz.

Ayrıca örnek uygulama inceleyin..plist

Bu eğitimdeki tüm snippet'ler, API anahtarınıza eriştiğiniz varsayılır. bu isteğe bağlı kaynak .plist dosyasından yararlanabilirsiniz.

SDK paketini projenize ekleyin

Gemini API'yi kendi Swift uygulamanızda kullanmak için GoogleGenerativeAI ekleyin. paketi ekleyin:

  1. Xcode'da, proje gezgininden projenizi sağ tıklayın.

  2. İçerik menüsünden Paket Ekle'yi seçin.

  3. Paket Ekle iletişim kutusunda, paket URL'sini arama çubuğuna yapıştırın:

    https://github.com/google/generative-ai-swift
    
  4. Paket Ekle'yi tıklayın. Xcode şimdi GoogleGenerativeAI paketini ekler projenize ekleyin.

Üretken modeli başlatma

API çağrısı yapabilmek için üretken modeli ilk kullanıma hazırlamanız gerekir.

  1. GoogleGenerativeAI modülünü içe aktarın:

    import GoogleGenerativeAI
    
  2. Üretken modeli başlatın:

    // Access your API key from your on-demand resource .plist file
    // (see "Set up your API key" above)
    // The Gemini 1.5 models are versatile and work with most use cases
    let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: APIKey.default)
    

Bir model belirtirken aşağıdakilere dikkat edin:

  • Kullanım alanınıza özel bir model kullanın (örneğin, gemini-1.5-flash çok modlu giriş içindir). Bu kılavuzda, her bir her kullanım alanı için önerilen modelleri listeleyin.

Yaygın kullanım alanlarını hayata geçirin

Artık projeniz hazır olduğuna göre Gemini API'yi kullanarak farklı kullanım alanları vardır:

Yalnızca metin girişinden metin oluştur

İstem girişi yalnızca metin içeriyorsa Gemini 1.5 modelini veya Metin çıkışı oluşturmak için generateContent kullanan Gemini 1.0 Pro modeli:

import GoogleGenerativeAI

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: APIKey.default)

let prompt = "Write a story about a magic backpack."
let response = try await model.generateContent(prompt)
if let text = response.text {
  print(text)
}

Metin ve resim girişlerinden metin oluşturma (çok modlu)

Gemini, çok modlu girişleri işleyebilecek çeşitli modeller sunar. (Gemini 1.5 modelleri) kullanarak her iki metni de girebilirsiniz ve görseller. Şurayı incelemeyi unutmayın: istemler için resim gereksinimleri.

İstem girişi hem metin hem de resim içeriyorsa Gemini 1.5 modelini kullanın metin çıkışı oluşturmak için generateContent yöntemini kullanın:

import GoogleGenerativeAI

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: APIKey.default)

let image1 = UIImage(...)
let image2 = UIImage(...)

let prompt = "What's different between these pictures?"

let response = try await model.generateContent(prompt, image1, image2)
if let text = response.text {
  print(text)
}

Çok dönüşlü görüşmeler (sohbet) oluşturun

Gemini'ı kullanarak birden fazla turne arasında serbest biçimli sohbetler gerçekleştirebilirsiniz. İlgili içeriği oluşturmak için kullanılan SDK, konuşmanın durumunu yöneterek süreci basitleştirir. Yani, generateContent ile görüşme geçmişini saklamanız gerekmez kendiniz.

Sohbet gibi çok yönlü bir sohbet başlatmak için Gemini 1.5 modelini veya Gemini 1.0 Pro modelini deneyin ve startChat() numaralı telefonu arayarak sohbeti başlatın. Ardından, yeni bir kullanıcı mesajı göndermek için sendMessage() öğesini kullanın. Bu mesaj mesajı ve sohbet geçmişindeki yanıtı gösterir.

Birrole sohbet:

  • user: İstemleri sağlayan roldür. Bu değer, sendMessage arama.

  • model: yanıtları sağlayan rol. Bu rol, şu durumlarda kullanılabilir: Mevcut history ile startChat() aranıyor.

import GoogleGenerativeAI

let config = GenerationConfig(
  maxOutputTokens: 100
)

// The Gemini 1.5 models are versatile and work with multi-turn conversations (like chat)
// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(
  name: "gemini-1.5-flash",
  apiKey: APIKey.default,
  generationConfig: config
)

let history = [
  ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
  ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]

// Initialize the chat
let chat = model.startChat(history: history)
let response = try await chat.sendMessage("How many paws are in my house?")
if let text = response.text {
  print(text)
}

Daha hızlı etkileşimler için akışı kullanın

Varsayılan olarak model, oluşturma işleminin tamamını tamamladıktan sonra bir yanıt döndürür. bahsedeceğim. Tüm sürecin tamamını beklemeden, daha hızlı işlevi görür ve bunun yerine kısmi sonuçları işlemek için akış kullanılır.

Aşağıdaki örnekte, Metin ve resim girişinden metin oluşturmak için generateContentStream yöntemi tıklayın.

import GoogleGenerativeAI

// The Gemini 1.5 models are versatile and work with both text-only and multimodal prompts
// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: APIKey.default)

let image1 = UIImage(named: "")!
let image2 = UIImage(named: "")!

let prompt = "What's different between these pictures?"
var fullResponse = ""
let contentStream = model.generateContentStream(prompt, image1, image2)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
    fullResponse += text
  }
}
print(fullResponse)

Yalnızca metin girişi ve sohbet kullanım alanları için de benzer bir yaklaşım kullanabilirsiniz.

// Use streaming with text-only input
let contentStream = model.generateContentStream(prompt)
// Use streaming with multi-turn conversations (like chat)
let responseStream = chat.sendMessageStream(message)

Gelişmiş kullanım alanları uygulayın

Bu eğiticinin önceki bölümünde açıklanan yaygın kullanım alanları, rahatlıkla kullanabilirsiniz. Bu bölümde, yaygın olarak kullanılan alanlardır.

İşlev çağırma

İşlev çağrısı, üretken modeller. Ardından bu çıkışları kullanarak diğer API'leri çağırabilir ve yanıt verilerini modele uygun hale getirmemize yardımcı olur. Başka bir deyişle, işlev çağrısı üretken modelleri harici sistemlere bağlarsınız. Böylece, en güncel ve doğru bilgileri içerir. Daha fazla bilgi: işlev çağrısı eğiticisi.

Jetonları say

Uzun istemler kullanırken jetonları göndermeden önce jetonları saymak faydalı olabilir. olabileceğini unutmayın. Aşağıdaki örneklerde countTokens() özelliğinin nasıl kullanılacağı gösterilmektedir örnek olarak verelim:

// For text-only input
let response = try await model.countTokens("Why is the sky blue?")
print(response.totalTokens)
// For text-and-image input (multi-modal)
let response = try await model.countTokens(prompt, image1, image2)
print(response.totalTokens)
// For multi-turn conversations (like chat)
let chat = model.startChat()
let history = chat.history
let message = try ModelContent(role: "user", "Why is the sky blue?")
let contents = history + [message]
let response = try await model.countTokens(contents)
print(response.totalTokens)

İçerik oluşturmayı kontrol etme seçenekleri

İçerik oluşturma sürecini, model parametrelerini yapılandırarak ve aşağıdakileri kullanarak kontrol edebilirsiniz. güvenlik ayarlarına gidin.

Model parametrelerini yapılandırma

Modele gönderdiğiniz her istem, model bir yanıt oluşturur. Model, arama sonuçları sayfası için farklı parametre değerleri. Daha fazla bilgi: Model parametreleri. Yapılandırma, model örneğinizin kullanım ömrü boyunca korunur.

let config = GenerationConfig(
  temperature: 0.9,
  topP: 0.1,
  topK: 16,
  maxOutputTokens: 200,
  stopSequences: ["red"]
)

// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(
  // The Gemini 1.5 models are versatile and work with most use cases
  name: "gemini-1.5-flash",
  apiKey: APIKey.default,
  generationConfig: config
)

Güvenlik ayarlarını kullan

Böyle yanıtlar alma olasılığını ayarlamak için güvenlik ayarlarını kullanabilirsiniz: zararlı olarak kabul edilebilir. Varsayılan olarak güvenlik ayarları, orta uzunluktaki içerikleri engeller ve/veya tüm boyutlarda güvenli olmayan içerik olma ihtimalinin yüksek olması. Öğren Güvenlik ayarları hakkında daha fazla bilgi edinin.

Aşağıda, bir güvenlik ayarını nasıl yapacağınız açıklanmaktadır:

// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(
  // The Gemini 1.5 models are versatile and work with most use cases
  name: "gemini-1.5-flash",
  apiKey: APIKey.default,
  safetySettings: [
    SafetySetting(harmCategory: .harassment, threshold: .blockOnlyHigh)
  ]
)

Ayrıca, birden fazla güvenlik ayarı da belirleyebilirsiniz:

let harassmentSafety = SafetySetting(harmCategory: .harassment, threshold: .blockOnlyHigh)
let hateSpeechSafety = SafetySetting(harmCategory: .hateSpeech, threshold: .blockMediumAndAbove)

// Access your API key from your on-demand resource .plist file (see "Set up your API key" above)
let model = GenerativeModel(
  // The Gemini 1.5 models are versatile and work with most use cases
  name: "gemini-1.5-flash",
  apiKey: APIKey.default,
    safetySettings: [harassmentSafety, hateSpeechSafety]
)

Sırada ne var?

  • İstem tasarımı, istenen sonuca ulaştıran istemler oluşturma sürecidir. temel yanıtları oluşturuyor. İyi yapılandırılmış istemler yazmak, dil modelinden doğru ve yüksek kaliteli yanıtlar vermenin bir parçasıdır. İstem yazmayla ilgili en iyi uygulamalar hakkında bilgi edinin.

  • Gemini, farklı kullanım ihtiyaçlarını karşılamak için çeşitli model varyasyonları sunar. (ör. giriş türleri ve karmaşıklık, sohbet ya da diğer iletişim ve boyut kısıtlamalarına sahip olabilirsiniz. Mevcut Gemini modelleri hakkında bilgi edinin.