Menjalankan kode dengan Gemini API

Fitur eksekusi kode Gemini API memungkinkan model untuk membuat dan menjalankan kode Python, serta belajar dari hasil secara berulang hingga mencapai output akhir. Anda dapat menggunakan kemampuan eksekusi kode ini untuk membangun aplikasi yang memanfaatkan penalaran berbasis kode dan menghasilkan output teks. Misalnya, Anda dapat menggunakan eksekusi kode dalam aplikasi yang menyelesaikan persamaan atau memproses teks.

Gemini API menyediakan eksekusi kode sebagai alat, mirip dengan panggilan fungsi. Setelah Anda menambahkan eksekusi kode sebagai alat, model akan memutuskan kapan harus menggunakannya.

Model yang didukung

Batasan

  • Fitur ini tidak mendukung I/O file.
  • Eksekusi kode dapat berjalan selama maksimal 30 detik sebelum waktu habis.

Contoh sintaksis

curl

PROJECT_ID = myproject
REGION = us-central1
MODEL_ID = gemini-2.0-flash-001

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      ...
    }],
    "tools": [{
      "code_execution":  {}
    }]
  }'

Daftar parameter

Lihat contoh untuk mengetahui detail implementasi.

Python

Untuk mengaktifkan eksekusi kode, tentukan tool eksekusi kode dalam permintaan Anda.

CodeExecution

Alat yang menjalankan kode yang dihasilkan oleh model, dan otomatis menampilkan hasilnya ke model. Lihat juga ExecutableCode dan CodeExecutionResult yang merupakan input dan output untuk alat ini.

Part

executable_code

Opsional: ExecutableCode

Kode yang dihasilkan oleh model yang dimaksudkan untuk dieksekusi.
Lihat Eksekusi Kode [API].

code_execution_result

Opsional: CodeExecutionResult

Hasil eksekusi [ExecutableCode].
Lihat Eksekusi Kode [API].

ExecutableCode

language

Wajib: string (enum)

Bahasa pemrograman yang didukung untuk code yang dihasilkan.


Didukung:
  • PYTHON

code

Wajib: string

Kode yang akan dieksekusi.
Lihat Eksekusi Kode [API].

CodeExecutionResult

outcome

Wajib: string (enum)

Hasil eksekusi kode.


Kemungkinan hasil:
  • Eksekusi kode berhasil diselesaikan. (OUTCOME_OK)
  • Eksekusi kode selesai, tetapi gagal. stderr harus berisi alasan. (OUTCOME_FAILED)
  • Eksekusi kode berjalan terlalu lama, dan dibatalkan. Mungkin ada atau tidak ada output parsial. (OUTCOME_DEADLINE_EXCEEDED)

output

Wajib: string

Berisi stdout jika eksekusi kode berhasil, stderr atau deskripsi lainnya jika tidak.
Lihat Eksekusi Kode [API].

Contoh

Berikut adalah ilustrasi cara mengirimkan kueri dan deklarasi fungsi ke model.

Kasus penggunaan dasar

curl

PROJECT_ID = myproject
REGION = us-central1
MODEL_ID = gemini-2.0-flash-001

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Calculate 20th fibonacci number. Then find the nearest palindrome to it."
      }]
    }],
    "tools": [{'codeExecution': {}}],
  }'

Python

from google import genai
from google.genai.types import Tool, ToolCodeExecution, GenerateContentConfig

client = genai.Client()
model_id = "gemini-2.0-flash-001"

code_execution_tool = Tool(
    code_execution=ToolCodeExecution()
)
response = client.models.generate_content(
    model=model_id,
    contents="Calculate 20th fibonacci number. Then find the nearest palindrome to it.",
    config=GenerateContentConfig(
        tools=[code_execution_tool],
        temperature=0,
    ),
)
for part in response.candidates[0].content.parts:
    if part.executable_code:
        print(part.executable_code)
    if part.code_execution_result:
        print(part.code_execution_result)
# Example response:
# code='...' language='PYTHON'
# outcome='OUTCOME_OK' output='The 20th Fibonacci number is: 6765\n'
# code='...' language='PYTHON'
# outcome='OUTCOME_OK' output='Lower Palindrome: 6666\nHigher Palindrome: 6776\nNearest Palindrome to 6765: 6776\n'

Mengaktifkan eksekusi kode pada model

Untuk mengaktifkan eksekusi kode dasar, lihat Eksekusi kode.

Langkah berikutnya