Ringkasan Gemini API

Gemini API menyediakan akses ke model generatif terkini dari Google. Setelah memahami fitur umum yang tersedia untuk Anda melalui API, cobalah tutorial untuk bahasa pilihan Anda untuk mulai mengembangkan aplikasi.

Model

Gemini adalah serangkaian model AI generatif multimodal yang dikembangkan oleh Google. Model Gemini dapat menerima teks dan gambar dalam perintah, bergantung pada variasi model yang Anda pilih, dan menghasilkan respons teks.

Untuk mendapatkan informasi model yang lebih detail, buka halaman model Gemini. Anda juga dapat menggunakan metode list_models untuk mencantumkan semua model yang tersedia, lalu metode get_model untuk mendapatkan metadata untuk model tertentu.

Data dan desain {i>prompt<i}

Model Gemini tertentu menerima data teks dan file media sebagai input. Kemampuan ini menciptakan banyak kemungkinan tambahan untuk menghasilkan konten, menganalisis data, dan memecahkan masalah. Ada beberapa batasan dan persyaratan yang perlu dipertimbangkan, termasuk batas token input umum untuk model yang Anda gunakan. Untuk mengetahui informasi tentang batas token untuk model tertentu, lihat model Gemini.

Perintah yang menggunakan Gemini API tidak boleh melebihi 20 MB. Gemini API menyediakan File API untuk menyimpan sementara file media agar dapat digunakan dalam pembuatan perintah, sehingga Anda dapat menyediakan data perintah di atas batas 20 MB. Untuk mengetahui informasi selengkapnya tentang cara menggunakan Files API dan format file yang didukung untuk pembuatan perintah, lihat Meminta dengan file media.

Desain perintah dan input teks

Membuat perintah yang efektif, atau Prompt Engineering, adalah kombinasi dari seni dan sains. Lihat pengantar perintah untuk mengetahui panduan cara mendekati perintah dan panduan prompt 101 untuk mempelajari berbagai pendekatan dalam memberikan perintah.

Membuat konten

Gemini API memungkinkan Anda menggunakan data teks dan gambar untuk pemberian perintah, bergantung pada variasi model yang Anda gunakan. Misalnya, buat teks dari perintah hanya teks atau multimodal menggunakan model Gemini 1.5. Bagian ini memberikan contoh kode dasar untuk masing-masing fitur. Lihat referensi API generateContent untuk mendapatkan contoh lebih mendetail yang mencakup semua parameter.

Input teks dan gambar

Anda dapat mengirim perintah teks dengan gambar ke model Gemini 1.5 untuk melakukan tugas terkait visi. Misalnya, memberikan teks pada gambar atau mengidentifikasi hal yang ada dalam gambar.

Contoh kode berikut menunjukkan implementasi dasar perintah teks dan gambar untuk setiap bahasa yang didukung:

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)

Lihat tutorial Python untuk melihat cuplikan kode lengkap.

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)
}

Lihat tutorial Go untuk mengetahui contoh lengkapnya.

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

Baca tutorial Node.js untuk mengetahui contoh lengkapnya.

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

Lihat tutorial web untuk mengetahui contoh lengkapnya.

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

Lihat tutorial Dart (Flutter) untuk melihat contoh lengkapnya.

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)

Baca tutorial Swift untuk mengetahui contoh lengkapnya.

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)

Lihat tutorial Android untuk mengetahui contoh lengkapnya.

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)'"
                  }
                }
              ]
            }
          ]
         }')

Lihat tutorial REST API untuk mengetahui detail selengkapnya.

Input hanya teks

Gemini API juga dapat menangani input yang hanya mencakup teks. Fitur ini memungkinkan Anda melakukan tugas natural language processing (NLP) seperti pelengkapan dan peringkasan teks.

Contoh kode berikut menunjukkan implementasi dasar prompt hanya teks untuk setiap bahasa yang didukung:

Python

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

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

response = model.generate_content(prompt)

Lihat tutorial Python untuk mengetahui contoh lengkapnya.

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)
}

Lihat tutorial Go untuk mengetahui contoh lengkapnya.

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

Baca tutorial Node.js untuk mengetahui contoh lengkapnya.

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

Lihat tutorial web untuk mengetahui contoh lengkapnya.

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

Lihat tutorial Dart (Flutter) untuk melihat contoh lengkapnya.

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)

Baca tutorial Swift untuk mengetahui contoh lengkapnya.

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)

Lihat tutorial Android untuk mengetahui contoh lengkapnya.

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"}]}
    ]
}'

Lihat tutorial REST API untuk mengetahui detail selengkapnya.

Percakapan bolak-balik (chat)

Anda dapat menggunakan Gemini API untuk membuat pengalaman percakapan yang interaktif bagi pengguna. Dengan menggunakan fitur chat API, Anda dapat mengumpulkan beberapa putaran pertanyaan dan respons, sehingga pengguna dapat secara bertahap memberikan jawaban atau mendapatkan bantuan terkait masalah multi-bagian. Fitur ini ideal untuk aplikasi yang memerlukan komunikasi berkelanjutan, seperti chatbot, tutor interaktif, atau asisten dukungan pelanggan.

Contoh kode berikut menunjukkan penerapan dasar interaksi chat untuk setiap bahasa yang didukung:

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)

Lihat demo chat di tutorial Python untuk mendapatkan contoh lengkap.

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)
}

Lihat demo chat di tutorial Go untuk mengetahui contoh lengkapnya.

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

Lihat demo chat di tutorial Node.js untuk mengetahui contoh lengkap.

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

Lihat demo chat di tutorial web untuk mengetahui contoh lengkapnya.

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

Lihat demo chat di tutorial Dart (Flutter) untuk contoh lengkapnya.

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)

Lihat demo chat di tutorial Swift untuk mengetahui contoh lengkapnya.

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)

Lihat tutorial Android untuk mengetahui contoh lengkapnya.

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!"

Lihat tutorial REST API untuk mengetahui detail selengkapnya.

Respons yang di-streaming

Gemini API menyediakan cara tambahan untuk menerima respons dari model AI generatif: sebagai aliran data. Respons yang di-streaming mengirimkan potongan data inkremental kembali ke aplikasi Anda saat dihasilkan oleh model. Fitur ini memungkinkan Anda merespons permintaan pengguna dengan cepat untuk menampilkan progres dan menciptakan pengalaman yang lebih interaktif.

Respons yang di-streaming adalah opsi untuk membuat perintah dan percakapan dalam bentuk bebas dengan model Gemini. Contoh kode berikut menunjukkan cara meminta respons yang di-streaming untuk perintah untuk setiap bahasa yang didukung:

Python

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

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

Lihat tutorial Python untuk melihat cuplikan kode lengkap.

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
}

Lihat tutorial Go untuk mengetahui contoh lengkapnya.

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

Baca tutorial Node.js untuk mengetahui contoh lengkapnya.

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

Lihat tutorial web untuk mengetahui contoh lengkapnya.

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

Lihat tutorial Dart (Flutter) untuk melihat contoh lengkapnya.

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")
}

Baca tutorial Swift untuk mengetahui contoh lengkapnya.

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
}

Lihat tutorial Android untuk mengetahui contoh lengkapnya.

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

Lihat tutorial REST API untuk mengetahui detail selengkapnya.

Respons format JSON

Bergantung pada aplikasi Anda, Anda mungkin ingin respons terhadap perintah ditampilkan dalam format data terstruktur, terutama jika Anda menggunakan respons untuk mengisi antarmuka pemrograman. Gemini API menyediakan parameter konfigurasi untuk meminta respons dalam format JSON.

Anda dapat mengatur JSON output model dengan menetapkan opsi konfigurasi response_mime_type ke application/json dan dalam perintah, jelaskan format JSON yang Anda inginkan sebagai respons:

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",
      }
    }'

Meskipun model Gemini 1.5 Flash hanya menerima deskripsi teks dari skema JSON yang ingin Anda tampilkan, model Gemini 1.5 Pro memungkinkan Anda meneruskan objek skema (atau jenis Python yang setara), dan output model akan mengikuti skema tersebut dengan ketat. Hal ini juga dikenal sebagai pembuatan terkontrol atau dekode terbatas.

Misalnya, untuk mendapatkan daftar objek Recipe, teruskan list[Recipe] ke kolom response_schema dari argumen generation_config:

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"
                }
              }
            }
          }
        }
      }'
  ```

Untuk mempelajari lebih lanjut, lihat panduan memulai mode JSON di buku resep Gemini API.

Embeddings

Layanan penyematan di Gemini API menghasilkan embedding yang canggih untuk kata, frasa, dan kalimat. Embeddings yang dihasilkan kemudian dapat digunakan untuk tugas-tugas NLP, di antaranya seperti penelusuran semantik, klasifikasi teks, dan pengelompokan. Lihat panduan embeddings untuk mempelajari apa yang dimaksud dengan embedding dan beberapa kasus penggunaan utama layanan penyematan untuk membantu Anda memulai.

Langkah berikutnya