Kod yürütme

Gemini API kod yürütme özelliği, modelin Python kodu oluşturup çalıştırmasını ve nihai bir sonuca ulaşana kadar sonuçlardan iteratif olarak öğrenmesini sağlar. Kod tabanlı akıl yürütmeden yararlanan ve metin çıkışı üreten uygulamalar oluşturmak için bu kod yürütme özelliğini kullanabilirsiniz. Örneğin, kod yürütmeyi denklemleri çözen veya metni işleyen bir uygulamada kullanabilirsiniz.

Kod yürütme hem AI Studio'da hem de Gemini API'de kullanılabilir. AI Studio'da, sağ paneldeki Araçlar bölümünden kod yürütmeyi etkinleştirebilirsiniz. Gemini API, işlev çağırma işlemine benzer şekilde kod yürütme aracı sağlar. Kod yürütme aracını ekledikten sonra, ne zaman kullanılacağına model karar verir.

Kod yürütme ortamı aşağıdaki kitaplıkları içerir: altair, chess, cv2, matplotlib, mpmath, numpy, pandas, pdfminer, reportlab, seaborn, sklearn, statsmodels, striprtf, sympy ve tabulate. Kendi kitaplıklarınızı yükleyemezsiniz.

Kod yürütmeyi kullanmaya başlama

Kod yürütme not defteri de kullanılabilir:

ai.google.dev adresinde görüntüleyin Colab not defteri denemesi Not defterini GitHub'da görüntüleme

Bu bölümde, hızlı başlangıç bölümünde gösterilen kurulum ve yapılandırma adımlarını tamamladığınız varsayılmaktadır.

Modelde kod yürütmeyi etkinleştirme

Modelde kod yürütmeyi burada gösterildiği gibi etkinleştirebilirsiniz:

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

Bir not defterinde, bu yardımcı işlevle her şeyi Markdown biçiminde gösterebilirsiniz:

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)

Çıkış şu şekilde görünebilir:

Tamam, ilk 50 asal sayının toplamını hesaplamam gerekiyor. İlk 50 asal sayıyı oluşturmak ve ardından bunları toplamak için bir Python komut dosyası kullanacağım.

```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
```

Chat'te kod yürütme özelliğini kullanma

Kod yürütme özelliğini sohbet sırasında da kullanabilirsiniz.

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)

Görüşme aşağıdaki gibi devam edebilir:

[2, 34, 1, 65, 4] listesini bogo sıralaması ile sıralamamı istediğiniz anlaşılıyor. Bogo-sort, bilinen bir şekilde verimsiz bir sıralama algoritmasıdır. Bu işlem, liste sıralanana kadar tekrar tekrar karıştırılarak gerçekleştirilir. Son derece düşük performansı nedeniyle, önemli boyuttaki listeler için uygun değildir.

Ancak, yalnızca süreci göstermek için basitleştirilmiş bir sürümü çok sınırlı sayıda iterasyonla çalıştırabilirim. Devam etmeli miyim?

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

Tamam,listeyi karıştırıp sıralanıp sıralanmadığını kontrol eden bir işleve geçeceğim. En fazla 10 yineleme için çalıştıracağım. ...

Giriş/çıkış (G/Ç)

Gemini 2.0 Flash'tan itibaren kod yürütme, dosya girişini ve grafik çıkışını destekler. Bu yeni giriş ve çıkış özelliklerini kullanarak CSV ve metin dosyaları yükleyebilir, dosyalarla ilgili sorular sorabilir ve yanıtın bir parçası olarak Matplotlib grafikleri oluşturabilirsiniz.

G/Ç fiyatlandırması

Kod yürütme G/Ç'sini kullandığınızda giriş jetonları ve çıkış jetonları için ücretlendirilirsiniz:

Jeton girme:

  • Kullanıcı istemi

Çıkış jetonları:

  • Model tarafından oluşturulan kod
  • Kod ortamında kod yürütme çıkışı
  • Model tarafından oluşturulan özet

G/Ç ayrıntıları

Kod yürütme G/Ç ile çalışırken aşağıdaki teknik ayrıntılara dikkat edin:

  • Kod ortamının maksimum çalışma süresi 30 saniyedir.
  • Kod ortamı bir hata oluşturursa model, kod çıkışını yeniden oluşturmaya karar verebilir. Bu işlem 5 kez tekrarlanabilir.
  • Maksimum dosya girişi boyutu, model jetonu penceresiyle sınırlıdır. AI Studio'da, Gemini Flash 2.0 kullanılarak oluşturulan maksimum giriş dosyası boyutu 1 milyon parçadır (desteklenen giriş türlerinin metin dosyaları için yaklaşık 2 MB). Çok büyük bir dosya yüklerseniz AI Studio dosyayı göndermenize izin vermez.
Tek tur İki yönlü (Çok modlu Live API)
Desteklenen modeller Tüm Gemini 2.0 modelleri Yalnızca Flash deneysel modelleri
Desteklenen dosya giriş türleri .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts
Desteklenen nokta grafik kitaplıkları Matplotlib Matplotlib
Çok amaçlı araç kullanımı Hayır Evet

Faturalandırma

Gemini API'den kod yürütme özelliğinin etkinleştirilmesi için ek ücret alınmaz. Kullandığınız Gemini modeline göre geçerli giriş ve çıkış jetonu ücretiyle faturalandırılırsınız.

Kod yürütmeyle ilgili faturalandırma hakkında bilmeniz gereken diğer noktalar:

  • Modele ilettiğiniz giriş jetonları için yalnızca bir kez, model tarafından size döndürülen nihai çıkış jetonları için ise bir kez faturalandırılırsınız.
  • Oluşturulan kodu temsil eden jetonlar çıkış jetonu olarak sayılır. Oluşturulan kod, metin ve resim gibi çoklu biçimli çıkışlar içerebilir.
  • Kod yürütme sonuçları da çıkış jetonu olarak sayılır.

Faturalandırma modeli aşağıdaki şemada gösterilmektedir:

kod yürütme faturalandırma modeli

  • Kullandığınız Gemini modeline göre geçerli giriş ve çıkış jetonu ücretiyle faturalandırılırsınız.
  • Gemini, yanıtınızı oluştururken kod yürütme işlemini kullanıyorsa orijinal istem, oluşturulan kod ve yürütülen kodun sonucu ara jetonlar olarak etiketlenir ve giriş jetonları olarak faturalandırılır.
  • Ardından Gemini bir özet oluşturur ve oluşturulan kodu, çalıştırılan kodun sonucunu ve nihai özeti döndürür. Bunlar çıkış jetonları olarak faturalandırılır.
  • Gemini API, API yanıtında bir ara jeton sayısı içerir. Böylece, ilk isteminizden sonra neden ek giriş jetonları aldığınızı bilirsiniz.

Sınırlamalar

  • Model yalnızca kod oluşturabilir ve çalıştırabilir. Medya dosyaları gibi diğer yapıları döndüremez.
  • Bazı durumlarda kod yürütmeyi etkinleştirmek, model çıktısının diğer alanlarında (ör. hikaye yazma) gerilemelere neden olabilir.
  • Farklı modellerin kod yürütmeyi başarılı bir şekilde kullanma becerisinde bazı farklılıklar vardır.