Gemini API'ye Genel Bakış

Gemini API, Google'ın en yeni üretken modellerine erişmenizi sağlar. API aracılığıyla kullanabileceğiniz genel özellikleri öğrendikten sonra, geliştirmeye başlamak için seçtiğiniz dilde bir eğiticiyi deneyin.

Modeller

Gemini, Google tarafından geliştirilen bir dizi çok modlu üretken yapay zeka modelidir. Gemini modelleri, seçtiğiniz model varyasyonuna bağlı olarak istemlerde metin ve resim kabul edebilir ve metin yanıtları verebilir.

Daha ayrıntılı model bilgisi almak için Gemini modeller sayfasına bakın. Kullanılabilir tüm modelleri listelemek için list_models yöntemini, belirli bir modelin meta verilerini almak için de get_model yöntemini kullanabilirsiniz.

Hızlı veri ve tasarım

Belirli Gemini modelleri, giriş olarak hem metin verilerini hem de medya dosyalarını kabul eder. Bu özellik; içerik oluşturmak, verileri analiz etmek ve sorunları çözmek için birçok ek imkan yaratır. Kullandığınız modelin genel giriş jetonu sınırı dahil olmak üzere, göz önünde bulundurmanız gereken bazı sınırlamalar ve gereksinimler vardır. Belirli modellerin jeton sınırları hakkında bilgi edinmek için Gemini modelleri bölümüne bakın.

Gemini API'yi kullanan istemler 20 MB'tan büyük olamaz. Gemini API, istem oluşturmada kullanılmak üzere medya dosyalarını geçici olarak depolamak için bir Dosya API'si sunar. Bu API, 20 MB sınırını aşan istem verileri sağlamanıza olanak tanır. Files API'nin kullanımı ve istemde desteklenen dosya biçimleri hakkında daha fazla bilgi için Medya dosyalarıyla isteme bölümüne bakın.

İstem tasarımı ve metin girişi

Etkili istemler veya istem mühendisliği oluşturmak sanat ve bilimin bir birleşimidir. İsteme nasıl yaklaşılacağı konusunda rehberlik için isteme giriş bölümüne ve farklı istem yaklaşımları hakkında bilgi edinmek için istem 101 kılavuzuna bakın.

İçerik oluşturun

Gemini API, kullandığınız model varyasyonuna bağlı olarak istem için hem metin hem de resim verilerini kullanmanıza olanak tanır. Örneğin, gemini-pro modelinde metin istemlerini kullanarak metin oluşturabilir ve gemini-pro-vision modelini istemek için hem metin hem de resim verilerini kullanabilirsiniz. Bu bölümde, her birine ait basit kod örnekleri verilmiştir. Tüm parametreleri kapsayan daha ayrıntılı bir örnek için generateContent API referansına bakın.

Metin ve resim girişi

Görmeyle ilgili bir görevi gerçekleştirmek için gemini-pro-vision modeline resim içeren bir metin istemi gönderebilirsiniz. Örneğin, resme altyazı ekleme veya resmin içeriğini tanımlama.

Aşağıdaki kod örnekleri, desteklenen her bir dil için basit bir metin ve resim istemi uygulamasını göstermektedir:

Python

model = genai.GenerativeModel('gemini-pro-vision')

cookie_picture = [{
    'mime_type': 'image/png',
    'data': pathlib.Path('cookie.png').read_bytes()
}]
prompt = "Do these look store-bought or homemade?"

response = model.generate_content(
    model="gemini-pro-vision",
    content=[prompt, cookie_picture]
)
print(response.text)

Kod snippet'inin tamamını görmek için Python eğitimine göz atın.

Go

vmodel := client.GenerativeModel("gemini-pro-vision")

data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
  log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
  log.Fatal(err)
}

Tam bir örnek için Eğitime Git bölümüne bakın.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
    mimeType: "image/png",
  },
};

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

Tam örnek için Node.js eğiticisine bakın.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: base64EncodedImage /* see JavaScript quickstart for details */,
    mimeType: "image/png",
  },
};

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

Tam bir örnek için web eğiticisine bakın.

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-pro-vision', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
  Content.multi([
    TextPart(prompt),
    DataPart('image/png', imageBytes),
  ])
];

final response = await model.generateContent(content);
print(response.text);

Tam örnek için Dart (Flutter) eğiticisine bakın.

Swift

let model = GenerativeModel(name: "gemini-pro-vision", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"

let response = try await model.generateContent(prompt, cookieImage)

Tam örnek için Swift eğitimi bölümüne bakın.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro-vision",
    apiKey = BuildConfig.apiKey
)

val cookieImage: Bitmap = // ...
val inputContent = content() {
  image(cookieImage)
  text("Do these look store-bought or homemade?")
}

val response = generativeModel.generateContent(inputContent)
print(response.text)

Tam örnek için Android eğitimine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro-vision:generateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @<(echo'{
          "contents":[
            { "parts":[
                {"text": "Do these look store-bought or homemade?"},
                { "inlineData": {
                    "mimeType": "image/png",
                    "data": "'$(base64 -w0 cookie.png)'"
                  }
                }
              ]
            }
          ]
         }')

Daha fazla ayrıntı için REST API eğiticisine bakın.

Yalnızca metin girişi

Gemini API, salt metin girişleri de işleyebilir. Bu özellik, metin tamamlama ve özetleme gibi doğal dil işleme (NLP) görevleri gerçekleştirmenizi sağlar.

Aşağıdaki kod örnekleri, desteklenen her dil için bir salt metin isteminin basit bir uygulamasını göstermektedir:

Python

model = genai.GenerativeModel('gemini-pro-vision')

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

response = model.generate_content(prompt)

Tam örnek için Python eğitimine bakın.

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
  log.Fatal(err)
}

Tam bir örnek için Eğitime Git bölümüne bakın.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

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

Tam örnek için Node.js eğiticisine bakın.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

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

Tam bir örnek için web eğiticisine bakın.

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);

Tam örnek için Dart (Flutter) eğiticisine bakın.

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let response = try await model.generateContent(prompt)

Tam örnek için Swift eğitimi bölümüne bakın.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

Tam örnek için Android eğitimine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[
      { "parts":[{"text": "Write a story about a magic backpack"}]}
    ]
}'

Daha fazla ayrıntı için REST API eğiticisine bakın.

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

Kullanıcılarınız için etkileşimli sohbet deneyimleri oluşturmak amacıyla Gemini API'yi kullanabilirsiniz. API'nin sohbet özelliğini kullanmak, birkaç tur soru ve yanıt toplamanızı sağlayarak kullanıcıların yanıtlara adım adım ilerlemesine veya çok bölümlü sorunlar için yardım almanıza olanak tanır. 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 örnekleri, desteklenen her dil için sohbet etkileşiminin basit bir uygulamasını göstermektedir:

Python

  model = genai.GenerativeModel('gemini-pro')
  chat = model.start_chat(history=[])

  response = chat.send_message(
      "Pretend you\'re a snowman and stay in character for each response.")
  print(response.text)

  response = chat.send_message(
      "What\'s your favorite season of the year?")
  print(response.text)

Ayrıntılı bir örnek için Python eğiticisindeki sohbet demosunu inceleyin.

Go

model := client.GenerativeModel("gemini-pro")
cs := model.StartChat()
cs.History = []*genai.Content{
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Pretend you're a snowman and stay in character for each response."),
    },
    Role: "user",
  },
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Hello! It's cold! Isn't that great?"),
    },
    Role: "model",
  },
}

resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
  log.Fatal(err)
}

Tam bir örnek için Go eğiticisindeki sohbet demosuna göz atın.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

Tam bir örnek için Node.js eğiticisindeki sohbet demosuna bakın.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's so cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

Tam bir örnek için web eğiticisindeki sohbet demosuna göz atın.

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final chat = model.startChat(history: [
  Content.text(
      "Pretend you're a snowman and stay in character for each response."),
  Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);

Tam bir örnek için Dart (Flutter) eğiticisindeki sohbet demosuna bakın.

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let chat = model.startChat()

var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)

message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)

Tam bir örnek için Swift eğiticisindeki sohbet demosuna göz atın.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
        character for each response.")
print(response.text)

Tam örnek için Android eğitimine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Pretend you're a snowman and stay in character for each
        {"role": "model",
            response."}]},
         "parts":[{
           "text": "Hello! It's so cold! Isn't that great?"}]},
        {"role": "user",
         "parts":[{
           "text": "What\'s your favorite season of the year?"}]},
       ]
    }' 2> /dev/null | grep "text"
# response example:
"text": "Winter, of course!"

Daha fazla ayrıntı için REST API eğiticisine bakın.

Akışlı yanıtlar

Gemini API, üretken yapay zeka modellerinden yanıt almak için ek bir yöntem sunar: veri akışı olarak. Akışlı yanıt, model tarafından oluşturulan artımlı veri parçalarını uygulamanıza geri gönderir. Bu özellik, ilerleme durumunu göstermek ve daha etkileşimli bir deneyim oluşturmak için kullanıcı isteğine hızlı şekilde yanıt verebilmenizi sağlar.

Akışlı yanıtlar, serbest biçimli istem oluşturma ve Gemini modelleriyle sohbet etme seçeneğidir. Aşağıdaki kod örnekleri, desteklenen her dilde bir istem için akışlı yanıtın nasıl isteneceğini gösterir:

Python

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

response = genai.stream_generate_content(
    model="models/gemini-pro",
    prompt=prompt
)

Kod snippet'inin tamamını görmek için Python eğitimine göz atın.

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")

iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }

  // print resp
}

Tam bir örnek için Eğitime Git bölümüne bakın.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
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();
  console.log(chunkText);
}

Tam örnek için Node.js eğiticisine bakın.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
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();
  console.log(chunkText);
}

Tam bir örnek için web eğiticisine bakın.

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
  print(chunk.text);
}

Tam örnek için Dart (Flutter) eğiticisine bakın.

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let stream = model.generateContentStream(prompt)
for try await chunk in stream {
  print(chunk.text ?? "No content")
}

Tam örnek için Swift eğitimi bölümüne bakın.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val inputContent = content {
  text("Write a story about a magic backpack.")
}

var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
  print(chunk.text)
  fullResponse += chunk.text
}

Tam örnek için Android eğitimine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    --no-buffer \
    -d '{ "contents":[
            {"role": "user",
              "parts":[{"text": "Write a story about a magic backpack."}]
            }
          ]
        }' > response.json

Daha fazla ayrıntı için REST API eğiticisine bakın.

JSON biçimi yanıtları

Uygulamanıza bağlı olarak, özellikle programlama arayüzlerini doldurmak için yanıtlar kullanıyorsanız istem yanıtının yapılandırılmış veri biçiminde döndürülmesini isteyebilirsiniz. Gemini API, JSON biçiminde yanıt istemek için bir yapılandırma parametresi sağlar.

Bu çıkış özelliğini, response_mime_type yapılandırma seçeneğini application/json değerine ayarlayarak ve isteğinizin gövdesine bir JSON biçimi spesifikasyonu ekleyerek kullanırsınız. Aşağıdaki kod örneğinde, bir istem için nasıl JSON yanıtı isteneceği gösterilmektedir:

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[{
            "parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
          "generationConfig": {
            "response_mime_type": "application/json",
          } }'

Gömmeler

Gemini API'deki yerleştirme hizmeti kelimeler, ifadeler ve cümleler için son teknoloji ürünü yerleştirmeler oluşturur. Ortaya çıkan yerleştirmeler daha pek çok şeyin yanı sıra anlamsal arama, metin sınıflandırma ve kümeleme gibi NLP görevleri için kullanılabilir. Yerleştirmelerin ne olduğunu ve başlamanıza yardımcı olacak bazı temel kullanım alanlarını öğrenmek için yerleştirme kılavuzuna bakın.

Sonraki adımlar