Eksekusi kode

Fitur eksekusi kode Gemini API memungkinkan model membuat dan menjalankan kode Python serta belajar secara iteratif dari hasilnya hingga mencapai output akhir. Anda dapat menggunakan kemampuan eksekusi kode ini untuk mem-build aplikasi yang mendapatkan manfaat dari penalaran berbasis kode dan menghasilkan output teks. Misalnya, Anda dapat menggunakan eksekusi kode dalam aplikasi yang menyelesaikan persamaan atau memproses teks.

Eksekusi kode tersedia di AI Studio dan Gemini API. Di AI Studio, Anda dapat mengaktifkan eksekusi kode di panel kanan pada bagian Alat. Gemini API menyediakan eksekusi kode sebagai alat, mirip dengan panggilan fungsi. Setelah Anda menambahkan eksekusi kode sebagai alat, model akan menentukan kapan harus menggunakannya.

Lingkungan eksekusi kode mencakup library berikut: altair, chess, cv2, matplotlib, mpmath, numpy, pandas, pdfminer, reportlab, seaborn, sklearn, statsmodels, striprtf, sympy, dan tabulate. Anda tidak dapat menginstal library Anda sendiri.

Mulai menggunakan eksekusi kode

Notebook eksekusi kode juga tersedia:

Bagian ini mengasumsikan bahwa Anda telah menyelesaikan langkah-langkah penyiapan dan konfigurasi yang ditampilkan di panduan memulai.

Mengaktifkan eksekusi kode pada model

Anda dapat mengaktifkan eksekusi kode pada model, seperti yang ditunjukkan di sini:

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content(
  model='gemini-2.0-flash',
  contents='What is the sum of the first 50 prime numbers? '
           'Generate and run code for the calculation, and make sure you get all 50.',
  config=types.GenerateContentConfig(
    tools=[types.Tool(
      code_execution=types.ToolCodeExecution
    )]
  )
)

Dalam notebook, Anda dapat menampilkan semuanya dalam format Markdown dengan fungsi bantuan ini:

def display_code_execution_result(response):
  for part in response.candidates[0].content.parts:
    if part.text is not None:
      display(Markdown(part.text))
    if part.executable_code is not None:
      code_html = f'<pre style="background-color: #BBBBEE;">{part.executable_code.code}</pre>' # Change code color
      display(HTML(code_html))
    if part.code_execution_result is not None:
      display(Markdown(part.code_execution_result.output))
    if part.inline_data is not None:
      display(Image(data=part.inline_data.data, format="png"))
    display(Markdown("---"))

display_code_execution_result(response)

Outputnya mungkin akan terlihat seperti ini:

Oke, saya perlu menghitung jumlah 50 bilangan prima pertama. Saya akan menggunakan skrip python untuk membuat 50 bilangan prima pertama, lalu menjumlahkannya.

```python
def is_prime(n):
  """Checks if a number is prime."""
  if n <= 1:
    return False
  for i in range(2, int(n**0.5) + 1):
    if n % i == 0:
      return False
  return True

def sum_of_primes(n):
  """Calculates the sum of the first n prime numbers."""
  primes = []
  i = 2
  while len(primes) < n:
    if is_prime(i):
      primes.append(i)
    i += 1
  return sum(primes)

# Calculate the sum of the first 50 prime numbers
sum_of_first_50_primes = sum_of_primes(50)

print(f"The sum of the first 50 prime numbers is: {sum_of_first_50_primes}")
```

**Output:**

```
The sum of the first 50 prime numbers is: 5117
```

Menggunakan eksekusi kode di chat

Anda juga dapat menggunakan eksekusi kode sebagai bagian dari chat.

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

chat = client.chats.create(
    model='gemini-2.0-flash',
    config=types.GenerateContentConfig(
      tools=[types.Tool(
        code_execution=types.ToolCodeExecution
      )]
    )
)

response = chat.send_message("Can you run some code to bogo-sort this list of numbers?: [2,34,1,65,4]")
display_code_execution_result(response)

Percakapan dapat dilanjutkan seperti ini:

Saya mengerti bahwa Anda ingin saya mengurutkan daftar [2, 34, 1, 65, 4] dengan bogo-sort. Bogo-sort adalah algoritma pengurutan yang sangat tidak efisien. Cara kerjanya adalah dengan mengacak daftar berulang kali hingga diurutkan. Karena performanya yang sangat buruk, metode ini tidak praktis untuk daftar dengan ukuran yang signifikan.

Namun, untuk tujuan demonstrasi, saya dapat menjalankan versi sederhana untuk iterasi dalam jumlah yang sangat terbatas, hanya untuk menunjukkan prosesnya. Haruskah saya melanjutkan?

response = chat.send_message("Yes, please create the code.")
display_code_execution_result(response)

Oke,saya akan melanjutkan dengan fungsi yang mengacak daftar dan memeriksa apakah daftar tersebut diurutkan. Saya akan menjalankannya untuk maksimal 10 iterasi. ...

Input/output (I/O)

Mulai dari Gemini 2.0 Flash, eksekusi kode mendukung input file dan output grafik. Dengan menggunakan kemampuan input dan output baru ini, Anda dapat mengupload file CSV dan teks, mengajukan pertanyaan tentang file, dan membuat grafik Matplotlib sebagai bagian dari respons.

Harga I/O

Saat menggunakan I/O eksekusi kode, Anda akan dikenai biaya untuk token input dan token output:

Token input:

  • Perintah pengguna

Token output:

  • Kode yang dihasilkan oleh model
  • Output eksekusi kode di lingkungan kode
  • Ringkasan yang dihasilkan oleh model

Detail I/O

Saat Anda menangani I/O eksekusi kode, perhatikan detail teknis berikut:

  • Runtime maksimum lingkungan kode adalah 30 detik.
  • Jika lingkungan kode menghasilkan error, model dapat memutuskan untuk membuat ulang output kode. Hal ini dapat terjadi hingga 5 kali.
  • Ukuran input file maksimum dibatasi oleh periode token model. Di AI Studio, menggunakan Gemini Flash 2.0, ukuran file input maksimum adalah 1 juta token (sekitar 2 MB untuk file teks dari jenis input yang didukung). Jika Anda mengupload file yang terlalu besar, AI Studio tidak akan mengizinkan Anda mengirimkannya.
Satu belokan Dua arah (Multimodal Live API)
Model yang didukung Semua model Gemini 2.0 Hanya model eksperimental Flash
Jenis input file yang didukung .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts
Library plot yang didukung Matplotlib Matplotlib
Penggunaan multi-alat Tidak Ya

Penagihan

Tidak ada biaya tambahan untuk mengaktifkan eksekusi kode dari Gemini API. Anda akan ditagih dengan tarif token input dan output saat ini berdasarkan model Gemini yang Anda gunakan.

Berikut beberapa hal lain yang perlu diketahui tentang penagihan untuk eksekusi kode:

  • Anda hanya ditagih sekali untuk token input yang Anda teruskan ke model, dan Anda ditagih untuk token output akhir yang ditampilkan kepada Anda oleh model.
  • Token yang mewakili kode yang dihasilkan dihitung sebagai token output. Kode yang dihasilkan dapat mencakup teks dan output multimodal seperti gambar.
  • Hasil eksekusi kode juga dihitung sebagai token output.

Model penagihan ditampilkan dalam diagram berikut:

model penagihan eksekusi kode

  • Anda ditagih dengan tarif token input dan output saat ini berdasarkan model Gemini yang Anda gunakan.
  • Jika Gemini menggunakan eksekusi kode saat membuat respons, perintah asli, kode yang dihasilkan, dan hasil kode yang dieksekusi diberi label token perantara dan ditagih sebagai token input.
  • Gemini kemudian membuat ringkasan dan menampilkan kode yang dihasilkan, hasil kode yang dieksekusi, dan ringkasan akhir. Hal ini ditagih sebagai token output.
  • Gemini API menyertakan jumlah token perantara dalam respons API, sehingga Anda tahu mengapa Anda mendapatkan token input tambahan di luar perintah awal.

Batasan

  • Model ini hanya dapat membuat dan menjalankan kode. Metode ini tidak dapat menampilkan artefak lain seperti file media.
  • Dalam beberapa kasus, mengaktifkan eksekusi kode dapat menyebabkan regresi di area lain output model (misalnya, menulis cerita).
  • Ada beberapa variasi dalam kemampuan berbagai model untuk menggunakan eksekusi kode dengan sukses.