Ringkasan Gemini API

Gemini API memberi Anda akses ke model generatif terbaru dari Google. Setelah Anda memahami fitur umum yang tersedia melalui API, coba tutorial untuk bahasa pilihan Anda untuk memulai pengembangan.

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 mendetail, lihat 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.

Prompt data dan desain

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 berukuran lebih dari 20 MB. Gemini API menyediakan File API untuk menyimpan file media sementara untuk digunakan dalam pemberian perintah, yang memungkinkan Anda memberikan data perintah di atas batas 20 MB. Untuk mengetahui informasi selengkapnya tentang penggunaan Files API dan format file yang didukung untuk perintah, lihat Meminta perintah dengan file media.

Prompt Design dan input teks

Membuat perintah yang efektif, atau prompt engineering, adalah kombinasi seni dan sains. Lihat pengantar perintah untuk mengetahui panduan cara mendekati perintah dan panduan Perintah 101 untuk mempelajari berbagai pendekatan terkait perintah.

Membuat konten

Gemini API memungkinkan Anda menggunakan data teks dan gambar untuk perintah, bergantung pada variasi model yang Anda gunakan. Misalnya, Anda dapat membuat teks menggunakan perintah teks dengan model gemini-pro dan menggunakan data teks serta gambar untuk meminta model gemini-pro-vision. Bagian ini memberikan contoh kode sederhana dari masing-masing bagian tersebut. Lihat referensi generateContent API untuk contoh lebih mendetail yang mencakup semua parameter.

Input teks dan gambar

Anda dapat mengirim perintah teks dengan gambar ke model gemini-pro-vision untuk melakukan tugas terkait penglihatan. Misalnya, pemberian teks pada gambar atau mengidentifikasi apa yang ada dalam gambar.

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

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)

Lihat tutorial Python untuk melihat cuplikan kode lengkap.

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

Lihat tutorial Go untuk mengetahui contoh lengkap.

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

Lihat tutorial Node.js untuk mengetahui contoh lengkap.

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

Lihat tutorial web untuk contoh lengkapnya.

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

Lihat Tutorial Dart (Flutter) untuk contoh lengkap.

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)

Baca tutorial Swift untuk mengetahui contoh lengkapnya.

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)

Lihat tutorial Android untuk mengetahui contoh lengkap.

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

Lihat tutorial REST API untuk detail selengkapnya.

Input hanya teks

Gemini API juga dapat menangani input khusus teks. Dengan fitur ini, Anda dapat melakukan tugas natural language processing (NLP) seperti penyelesaian teks dan ringkasan.

Contoh kode berikut menunjukkan implementasi sederhana permintaan hanya teks untuk setiap bahasa yang didukung:

Python

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

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-pro")
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 lengkap.

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

Lihat tutorial Node.js untuk mengetahui contoh lengkap.

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

Lihat tutorial web untuk contoh lengkapnya.

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

Lihat Tutorial Dart (Flutter) untuk contoh lengkap.

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)

Baca tutorial Swift untuk mengetahui contoh lengkapnya.

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)

Lihat tutorial Android untuk mengetahui contoh lengkap.

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

Lihat tutorial REST API untuk detail selengkapnya.

Percakapan bergantian (chat)

Anda dapat menggunakan Gemini API untuk membangun pengalaman chat interaktif bagi pengguna. Dengan menggunakan fitur chat API, Anda dapat mengumpulkan beberapa putaran pertanyaan dan respons, sehingga pengguna secara bertahap melangkah menuju 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 sederhana interaksi chat untuk setiap bahasa yang didukung:

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)

Lihat demo chat dalam tutorial Python untuk contoh lengkapnya.

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

Lihat demo chat dalam tutorial Go untuk mengetahui contoh lengkapnya.

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

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

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

Lihat demo chat dalam tutorial web untuk contoh lengkapnya.

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

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

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)

Lihat demo chat dalam tutorial Swift untuk mengetahui contoh lengkapnya.

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)

Lihat tutorial Android untuk mengetahui contoh lengkap.

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

Lihat tutorial REST API untuk 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 sebagaimana 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 perintah dan chat berformat 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-pro",
    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-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
}

Lihat tutorial Go untuk mengetahui contoh lengkap.

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

Lihat tutorial Node.js untuk mengetahui contoh lengkap.

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

Lihat tutorial web untuk contoh lengkapnya.

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

Lihat Tutorial Dart (Flutter) untuk contoh lengkap.

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

Baca tutorial Swift untuk mengetahui contoh lengkapnya.

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
}

Lihat tutorial Android untuk mengetahui contoh lengkap.

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

Lihat tutorial REST API untuk detail selengkapnya.

Respons format JSON

Bergantung pada aplikasi, 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.

Gunakan fitur output ini dengan menetapkan opsi konfigurasi response_mime_type ke application/json dan menyertakan spesifikasi format JSON dalam isi permintaan Anda. Contoh kode berikut menunjukkan cara meminta respons JSON untuk perintah:

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

Embeddings

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

Langkah berikutnya