Membuat output terstruktur dengan Gemini API


Gemini menghasilkan teks tidak terstruktur secara default, tetapi beberapa aplikasi memerlukan teks terstruktur. Untuk kasus penggunaan ini, Anda dapat membatasi Gemini untuk merespons dengan JSON, format data terstruktur yang cocok untuk pemrosesan otomatis. Anda juga dapat membatasi model untuk merespons dengan salah satu opsi yang ditentukan dalam enum.

Berikut beberapa kasus penggunaan yang mungkin memerlukan output terstruktur dari model:

  • Buat database perusahaan dengan mengambil informasi perusahaan dari artikel surat kabar.
  • Mengambil informasi standar dari resume.
  • Mengekstrak bahan dari resep dan menampilkan link ke situs bahan makanan untuk setiap bahan.

Dalam perintah, Anda dapat meminta Gemini untuk menghasilkan output berformat JSON, tetapi perhatikan bahwa model tidak dijamin akan menghasilkan JSON dan tidak ada yang lain selain JSON. Untuk respons yang lebih deterministik, Anda dapat meneruskan skema JSON tertentu di kolom responseSchema sehingga Gemini selalu merespons dengan struktur yang diharapkan.

Panduan ini menunjukkan cara membuat JSON menggunakan metode generateContent melalui SDK pilihan Anda atau menggunakan REST API secara langsung. Contoh ini menunjukkan input khusus teks, walaupun Gemini juga dapat menghasilkan respons JSON untuk permintaan multimodal yang menyertakan gambar, video, dan audio.

Sebelum memulai: Menyiapkan project dan kunci API

Sebelum memanggil Gemini API, Anda perlu menyiapkan project dan mengonfigurasi kunci API.

Buat JSON

Saat dikonfigurasi untuk menghasilkan JSON, model akan merespons perintah apa pun dengan output berformat JSON.

Anda dapat mengontrol struktur respons JSON dengan memberikan skema. Ada dua cara untuk menyediakan skema ke model:

  • Sebagai teks dalam perintah
  • Sebagai skema terstruktur yang disediakan melalui konfigurasi model

Kedua pendekatan tersebut berfungsi di Gemini 1.5 Flash dan Gemini 1.5 Pro.

Memberikan skema sebagai teks dalam perintah

Contoh berikut meminta model untuk menampilkan resep kue dalam format JSON tertentu.

Karena model mendapatkan spesifikasi format dari teks dalam perintah, Anda mungkin memiliki beberapa fleksibilitas dalam cara merepresentasikan spesifikasi. Format yang wajar untuk merepresentasikan skema JSON dapat berfungsi.

// 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 = `List a few popular cookie recipes using this JSON schema:

Recipe = {'recipeName': string}
Return: Array<Recipe>`;

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

Output-nya mungkin terlihat seperti ini:

[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]

Menyediakan skema melalui konfigurasi model

Contoh berikut melakukan hal berikut:

  1. Membuat instance model yang dikonfigurasi melalui skema untuk merespons dengan JSON.
  2. Meminta model untuk menampilkan resep kue.
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const schema = {
  description: "List of recipes",
  type: SchemaType.ARRAY,
  items: {
    type: SchemaType.OBJECT,
    properties: {
      recipeName: {
        type: SchemaType.STRING,
        description: "Name of the recipe",
        nullable: false,
      },
    },
    required: ["recipeName"],
  },
};

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-pro",
  generationConfig: {
    responseMimeType: "application/json",
    responseSchema: schema,
  },
});

const result = await model.generateContent(
  "List a few popular cookie recipes.",
);
console.log(result.response.text());

Output-nya mungkin terlihat seperti ini:

[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]