Gemini API'yi kullanarak metin oluşturma

Gemini API, giriş olarak metin, resim, video ve ses sağlandığında metin çıkışı oluşturabilir.

Bu kılavuzda, generateContent ve streamGenerateContent yöntemleri kullanılarak metnin nasıl oluşturulacağı gösterilmektedir. Gemini'nin görüntü ve ses özellikleriyle çalışma hakkında bilgi edinmek için Görüntü ve Ses kılavuzlarına bakın.

Başlamadan önce: Projenizi ve API anahtarınızı oluşturun

Gemini API'yi çağırmadan önce projenizi ayarlamanız ve API anahtarınızı yapılandırmanız gerekir.

Yalnızca metin girişinden metin oluşturma

Gemini API'yi kullanarak metin oluşturmanın en basit yolu, modele bu örnekte gösterildiği gibi tek bir yalnızca metin girişi sağlamaktır:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

Bu durumda, istem ("Sihirli sırt çantası hakkında hikaye yaz") herhangi bir çıktı örneği, sistem talimatı veya biçimlendirme bilgisi içermez. Bu, sıfır görevli bir yaklaşımdır. Bazı kullanım durumlarında tek seferlik veya birkaç çekim istemi, kullanıcı beklentileriyle daha uyumlu çıktılar üretebilir. Bazı durumlarda, modelin görevi anlamasına veya belirli yönergeleri uygulamasına yardımcı olmak için sistem talimatları da sağlayabilirsiniz.

Metin ve resim girişinden metin oluşturma

Gemini API, metni medya dosyalarıyla birleştiren çok formatlı girişleri destekler. Aşağıdaki örnekte, metin ve resim girişinden nasıl metin oluşturulacağı gösterilmektedir:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());

Yalnızca metin istemlerinde olduğu gibi, çoklu modal istemler de çeşitli yaklaşımlar ve ayrıntılar içerebilir. Bu örnekteki çıktıya bağlı olarak isteminize adımlar ekleyebilir veya talimatlarınızda daha net olabilirsiniz. Daha fazla bilgi için Dosya istemi stratejileri bölümüne bakın.

Metin akışı oluştur

Varsayılan olarak model, metin oluşturma sürecinin tamamını tamamladıktan sonra bir yanıt döndürür. Sonucun tamamını beklemek yerine kısmi sonuçları işlemek için akış özelliğini kullanarak daha hızlı etkileşimler elde edebilirsiniz.

Aşağıdaki örnekte, yalnızca metin içeren bir giriş isteminden metin oluşturmak için streamGenerateContent yöntemini kullanarak akışın nasıl uygulanacağı gösterilmektedir.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream(prompt);

// Print text as it comes in.
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Etkileşimli sohbet oluşturma

Kullanıcılarınıza etkileşimli sohbet deneyimleri sunmak için Gemini API'yi kullanabilirsiniz. API'nin sohbet özelliğini kullanarak birden fazla soru ve yanıt toplarsınız. Böylece kullanıcılar, yanıtlara adım adım yaklaşabilir veya birden fazla bölümden oluşan sorunlarla ilgili yardım alabilir. Bu özellik, chatbot'lar, etkileşimli eğitmenler veya müşteri desteği asistanları gibi sürekli iletişim gerektiren uygulamalar için idealdir.

Aşağıdaki kod örneğinde temel bir sohbet uygulaması gösterilmektedir:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

Sohbet yayınını etkinleştirme

Aşağıdaki örnekte gösterildiği gibi, canlı yayını sohbet ile de kullanabilirsiniz:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessageStream("I have 2 dogs in my house.");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
result = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Metin oluşturmayı yapılandırma

Modele gönderdiğiniz her istem, modelin yanıtları nasıl oluşturduğunu kontrol eden parametreler içerir. Bu parametreleri yapılandırmak için GenerationConfig kullanabilirsiniz. Parametreleri yapılandırmazsanız model, modele göre değişiklik gösterebilen varsayılan seçenekleri kullanır.

Aşağıdaki örnekte, kullanılabilir seçeneklerden bazılarının nasıl yapılandırılacağı gösterilmektedir.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

candidateCount, döndürülecek oluşturulmuş yanıtların sayısını belirtir. Bu değer şu anda yalnızca 1 olarak ayarlanabilir. Politika ayarlanmadan bırakılırsa varsayılan olarak 1 değerine ayarlanır.

stopSequences, çıkış oluşturmayı durduracak karakter dizisi grubunu (en fazla 5) belirtir. Belirtilen takdirde API, stop_sequence değerinin ilk göründüğü yerde durur. Durdurma sırası yanıtın bir parçası olarak dahil edilmez.

maxOutputTokens, bir adayda eklenecek maksimum jeton sayısını belirler.

temperature, çıktının rastgeleliğini kontrol eder. Daha yaratıcı yanıtlar için daha yüksek, daha kesin yanıtlar için daha düşük değerler kullanın. Değerler [0,0; 2,0] aralığında olabilir.

generateContent için ayrı ayrı aramalar da yapılandırabilirsiniz:

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

Tekil çağrıda ayarlanan tüm değerler, model oluşturucudaki değerleri geçersiz kılar.

Sırada ne var?

Gemini API'nin temel özelliklerini incelediğinize göre şunları deneyebilirsiniz:

  • Görsel yorumlama: Görüntüleri ve videoları işlemek için Gemini'nin yerel görsel yorumlamasını nasıl kullanacağınızı öğrenin.
  • Sistem talimatları: Sistem talimatları, modelin davranışını belirli ihtiyaçlarınıza ve kullanım alanlarınıza göre yönlendirmenize olanak tanır.
  • Sesi anlama: Ses dosyalarını işlemek için Gemini'ın yerel ses anlama özelliğini nasıl kullanacağınızı öğrenin.