Gemini API'ye Genel Bakış

Gemini API, Google'ın en yeni üretken modellerine erişmenizi sağlar. API aracılığıyla size sunulan genel özellikleri öğrendikten sonra, geliştirmeye başlamak için seçtiğiniz dilde bir eğitim 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 istemlerdeki metin ve resimleri kabul edebilir ve metin yanıtları verebilir.

Daha ayrıntılı model bilgileri için Gemini modelleri sayfasına göz atın. Mevcut tüm modelleri listelemek için list_models yöntemini, ardından belirli bir modelin meta verilerini almak için get_model yöntemini de kullanabilirsiniz.

İstem verileri ve tasarım

Belirli Gemini modelleri hem metin verilerini hem de medya dosyalarını giriş olarak kabul eder. Bu özellik; içerik üretmek, verileri analiz etmek ve sorunları çözmek için birçok ek olasılık yaratır. Kullandığınız modelin genel giriş jetonu sınırı da dahil olmak üzere dikkate alınması gereken bazı sınırlamalar ve zorunluluklar vardır. Belirli modellerin jeton sınırları hakkında bilgi için Gemini modelleri bölümüne bakın.

Gemini API kullanan istemlerin boyutu 20 MB'tan büyük olamaz. Gemini API, istemde kullanılmak üzere medya dosyalarını geçici olarak depolamak için bir File API sağlar. Bu API, 20 MB sınırının üzerinde istem verisi sağlamanıza olanak tanır. Files API'yi kullanma ve istem için desteklenen dosya biçimleri hakkında daha fazla bilgi edinmek için Medya dosyalarıyla istem gönderme bölümüne bakın.

İstem tasarımı ve metin girişi

Etkili istemler veya istem mühendisliği oluşturmak, sanat ile bilimin birleşimidir. İstem isteme yaklaşımıyla ilgili yol gösterici bilgiler için isteme giriş ve farklı istem yaklaşımları hakkında bilgi edinmek için istem 101 rehberine bakın.

İçerik oluşturun

Gemini API, kullandığınız model varyasyonuna bağlı olarak istemde bulunmak için hem metin hem de resim verilerini kullanmanıza olanak tanır. Örneğin, Gemini 1.5 modelini kullanarak yalnızca metin istemlerinden veya çok modlu istemlerden metin oluşturabilirsiniz. Bu bölümde her biriyle ilgili temel 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örme ile ilgili bir görevi gerçekleştirmek için Gemini 1.5 modeline görsel içeren metin istemi gönderebilirsiniz. Örneğin, bir resme altyazı ekleme veya bir resimdeki içeriğin kimliğini belirleme.

Aşağıdaki kod örnekleri, desteklenen her dil için metin ve resim isteminin temel uygulamasını gösterir:

Python

model = genai.GenerativeModel('gemini-1.5-flash')

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-1.5-flash",
    content=[prompt, cookie_picture]
)
print(response.text)

Kod snippet'inin tamamını görmek için Python eğiticisini inceleyin.

Go

vmodel := client.GenerativeModel("gemini-1.5-flash")

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'e bakın.

Node.js

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

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 bir örnek için Node.js eğiticisine bakın.

Web

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

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 örnek için web eğitimine bakın.

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-1.5-flash', 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-1.5-flash", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"

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

Tam bir örnek için Swift eğiticisini inceleyin.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    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 bir örnek için Android eğiticisine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash: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 bilgi için REST API eğiticisini inceleyin.

Yalnızca metin girişi

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

Aşağıdaki kod örnekleri, desteklenen her dil için yalnızca metin isteminin temel uygulamasını göstermektedir:

Python

model = genai.GenerativeModel('gemini-1.5-flash')

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

response = model.generate_content(prompt)

Tam örnek için Python eğiticisini inceleyin.

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-1.5-flash")
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'e bakın.

Node.js

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());

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

Web

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());

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

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-1.5-flash', 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-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let response = try await model.generateContent(prompt)

Tam bir örnek için Swift eğiticisini inceleyin.

Android

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

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

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

cURL

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

Daha fazla bilgi için REST API eğiticisini inceleyin.

Ç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, birden çok soru ve yanıt toplamanızı sağlar. Böylece kullanıcılar, yanıtlara doğru adım adım ilerleyebilir veya çok bölümlü problemler için yardım alabilir. Bu özellik chatbot'lar, etkileşimli eğitmenler veya müşteri destek asistanları gibi sürekli iletişim gerektiren uygulamalar için idealdir.

Aşağıdaki kod örnekleri, desteklenen her dil için sohbet etkileşiminin temel bir uygulamasını gösterir:

Python

  model = genai.GenerativeModel('gemini-1.5-flash')
  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)

Tam bir örnek için Python eğiticisindeki sohbet demosunu inceleyin.

Go

model := client.GenerativeModel("gemini-1.5-flash")
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 Eğitime git'teki sohbet demosuna bakın.

Node.js

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

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 demosunu inceleyin.

Web

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

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 demosunu inceleyin.

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-1.5-flash', 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 demosunu inceleyin.

Swift

let model = GenerativeModel(name: "gemini-1.5-flash", 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 demosunu inceleyin.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    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 bir örnek için Android eğiticisine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash: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 bilgi için REST API eğiticisini inceleyin.

Yanıtların akış şeklinde gösterilmesi

Gemini API, üretken yapay zeka modellerinden yanıt almak için ek bir yöntem sunar: veri akışı. 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ı isteklerine hızlı yanıt vermenizi sağlar.

Akışlı yanıtlar, Gemini modelleriyle serbest biçimli istem ve sohbet seçenekleridir. Aşağıdaki kod örneklerinde, desteklenen her dilde bir istem için akışlı yanıt isteme gösterilmektedir:

Python

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

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

Kod snippet'inin tamamını görmek için Python eğiticisini inceleyin.

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-1.5-flash")

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'e bakın.

Node.js

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();
  console.log(chunkText);
}

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

Web

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();
  console.log(chunkText);
}

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

Dart (Flutter)

final model = GenerativeModel(model: 'gemini-1.5-flash', 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-1.5-flash", 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 bir örnek için Swift eğiticisini inceleyin.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    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 bir örnek için Android eğiticisine bakın.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash: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 bilgi için REST API eğiticisini inceleyin.

JSON biçimi yanıtları

Uygulamanıza bağlı olarak, özellikle de programlama arayüzlerini doldurmak için yanıtları kullanıyorsanız bir isteme verilen yanıtı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.

response_mime_type yapılandırma seçeneğini application/json olarak ayarlayarak ve istemde yanıt olarak istediğiniz JSON biçimini tarif ederek model çıkışı JSON olmasını sağlayabilirsiniz:

Python

model = genai.GenerativeModel('gemini-1.5-flash',
                              generation_config={"response_mime_type": "application/json"})

prompt = """
  List 5 popular cookie recipes.

  Using this JSON schema:

    Recipe = {"recipe_name": str}

  Return a `list[Recipe]`
  """

response = model.generate_content(prompt)
print(response.text)

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {
          "parts": [
            {
              "text": "\nList 5 popular cookie recipes.\n\nUsing this JSON schema:\n\n  Recipe = {\"recipe_name\": str}\n\nReturn a `list[Recipe]`\n      "
            }
          ]
        }
      ]
      "generationConfig": {
            "response_mime_type": "application/json",
      }
    }'

Gemini 1.5 Flash modelleri, döndürülmesini istediğiniz JSON şemasının yalnızca metin açıklamasını kabul ederken Gemini 1.5 Pro modelleri, bir şema nesnesi (veya Python türünde eşdeğerini) aktarmanıza olanak tanır ve model çıkışı tam olarak bu şemayı izler. Bu, kontrollü oluşturma veya kısıtlı kod çözme olarak da bilinir.

Örneğin, Recipe nesnelerinin listesini almak için generation_config bağımsız değişkeninin response_schema alanına list[Recipe] öğesini iletin:

Python

import typing_extensions as typing

class Recipe(typing.TypedDict):
  recipe_name: str

model = genai.GenerativeModel(model_name="models/gemini-1.5-pro")

result = model.generate_content(
  "List 5 popular cookie recipes",
  generation_config=genai.GenerationConfig(response_mime_type="application/json",
                                           response_schema = list[Recipe]))

print(result.text)

cURL

  curl https://generativelanguage.googleapis.com/v1beta/models/models/gemini-1.5-pro:generateContent?
      -H 'Content-Type: application/json'
      -X POST \
      -d '{
        "contents": [
          {
            "parts": [
              {
                "text": "List 5 popular cookie recipes"
              }
            ]
          }
        ],
        "generationConfig": {
          "responseMimeType": "application/json",
          "responseSchema": {
            "type": "ARRAY",
            "items": {
              "type": "OBJECT",
              "properties": {
                "recipe_name": {
                  "type": "STRING"
                }
              }
            }
          }
        }
      }'
  ```

Daha fazla bilgi edinmek için Gemini API çözüm kitabındaki JSON modu hızlı başlangıç kılavuzunu inceleyin.

Yerleştirme

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 sonra anlamsal arama, metin sınıflandırma ve kümeleme gibi NLP görevlerinde 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