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 oluşturmanı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 bir sırt çantasıyla ilgili bir hikaye yaz"), çıkış örnekleri, sistem talimatları veya biçimlendirme bilgileri içermez. Bu, sıfır görevli bir yaklaşımdır. Bazı kullanım alanları için tek atış veya birkaç atış istemi, kullanıcı beklentilerine daha uygun sonuçlar verebilir. 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 eklemek veya talimatlarınızda daha net olmak isteyebilirsiniz. Daha fazla bilgi edinmek için Dosya istemi stratejileri başlıklı makaleyi inceleyin.

Metin akışı oluşturma

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ız için etkileşimli sohbet deneyimleri oluşturmak üzere 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 aktarımı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, mevcut seçeneklerden birkaçı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. Ayarlanmadan bırakılırsa varsayılan olarak 1 olur.

stopSequences, çıkış oluşturmayı durduracak karakter dizisi grubunu (en fazla 5) belirtir. Belirtiliyse API, stop_sequence'in ilk görünümünde durur. Durdurma sırası, yanıtın bir parçası olarak dahil edilmez.

maxOutputTokens, bir adaya 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.
  • Ses anlama: Ses dosyalarını işlemek için Gemini'nin doğal ses anlama özelliğini nasıl kullanacağınızı öğrenin.