Ekzekutimi i kodit

Veçoria e ekzekutimit të kodit API Gemini i mundëson modelit të gjenerojë dhe ekzekutojë kodin Python dhe të mësojë në mënyrë të përsëritur nga rezultatet derisa të arrijë në një dalje përfundimtare. Ju mund ta përdorni këtë aftësi të ekzekutimit të kodit për të ndërtuar aplikacione që përfitojnë nga arsyetimi i bazuar në kod dhe që prodhojnë dalje teksti. Për shembull, mund të përdorni ekzekutimin e kodit në një aplikacion që zgjidh ekuacione ose përpunon tekstin.

Ekzekutimi i kodit është i disponueshëm si në AI Studio ashtu edhe në Gemini API. Në AI Studio, mund të aktivizoni ekzekutimin e kodit në panelin e djathtë nën Veglat . Gemini API ofron ekzekutimin e kodit si një mjet, i ngjashëm me thirrjen e funksionit . Pasi të shtoni ekzekutimin e kodit si mjet, modeli vendos se kur do ta përdorë atë.

Mjedisi i ekzekutimit të kodit përfshin bibliotekat e mëposhtme: altair , chess , cv2 , matplotlib , mpmath , numpy , pandas , pdfminer , reportlab , seaborn , sklearn , statsmodels , striprtf , sympy , dhe tabulate . Ju nuk mund të instaloni bibliotekat tuaja.

Filloni me ekzekutimin e kodit

Ekziston gjithashtu një fletore për ekzekutimin e kodit:

Ky seksion supozon se keni përfunduar hapat e konfigurimit dhe konfigurimit të treguar në fillimin e shpejtë .

Aktivizo ekzekutimin e kodit në model

Mund të aktivizoni ekzekutimin e kodit në model, siç tregohet këtu:

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

Në një fletore mund të shfaqni gjithçka në formatin Markdown me këtë funksion ndihmës:

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)

Dalja mund të duket diçka si kjo:

Në rregull, më duhet të llogaris shumën e 50 numrave të parë të thjeshtë. Unë do të përdor një skrip python për të gjeneruar 50 numrat e parë të thjeshtë dhe më pas do t'i përmbledh ato.

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

Përdorni ekzekutimin e kodit në chat

Ju gjithashtu mund të përdorni ekzekutimin e kodit si pjesë e një bisede.

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)

Biseda mund të vazhdojë kështu:

Unë e kuptoj që ju dëshironi që unë ta radhis listën [2, 34, 1, 65, 4]. Bogo-sort është një algoritëm shumë i paefektshëm klasifikimi. Ajo funksionon duke e përzier në mënyrë të përsëritur listën derisa të ndodhë që të renditet. Për shkak të performancës së tij jashtëzakonisht të dobët, është jopraktike për listat e çdo madhësie të rëndësishme.

Megjithatë, për qëllime demonstrimi, unë mund të ekzekutoj një version të thjeshtuar për një numër shumë të kufizuar përsëritjesh, vetëm për të treguar procesin. A duhet të shkoj përpara?

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

Në rregull, do të vazhdoj me një funksion që përzien listën dhe kontrollon nëse është e renditur. Unë do ta ekzekutoj për një maksimum prej 10 përsëritjesh. ...

Hyrja/dalja (I/O)

Duke filluar me Gemini 2.0 Flash , ekzekutimi i kodit mbështet hyrjen e skedarit dhe daljen e grafikut. Duke përdorur këto aftësi të reja hyrëse dhe dalëse, mund të ngarkoni skedarë CSV dhe tekst, të bëni pyetje rreth skedarëve dhe të krijoni grafikët Matplotlib si pjesë e përgjigjes.

Çmimi I/O

Kur përdorni I/O të ekzekutimit të kodit, ju tarifoheni për shenjat hyrëse dhe ato dalëse:

Shenjat hyrëse:

  • Kërkesa e përdoruesit

Shenjat e daljes:

  • Kodi i krijuar nga modeli
  • Prodhimi i ekzekutimit të kodit në mjedisin e kodit
  • Përmbledhja e krijuar nga modeli

Detajet I/O

Kur jeni duke punuar me ekzekutimin e kodit I/O, kini parasysh detajet teknike të mëposhtme:

  • Koha maksimale e funksionimit të mjedisit të kodit është 30 sekonda.
  • Nëse mjedisi i kodit gjeneron një gabim, modeli mund të vendosë të rigjenerojë daljen e kodit. Kjo mund të ndodhë deri në 5 herë.
  • Madhësia maksimale e hyrjes së skedarit është e kufizuar nga dritarja e modelit të shenjës. Në AI Studio, duke përdorur Gemini Flash 2.0, madhësia maksimale e skedarit hyrës është 1 milion argumente (afërsisht 2 MB për skedarët e tekstit të llojeve të dhëna të mbështetura). Nëse ngarkoni një skedar që është shumë i madh, AI Studio nuk do t'ju lejojë ta dërgoni atë.
Kthesë e vetme Dydrejtimëshe (API Multimodal Live)
Modelet e mbështetura Të gjitha modelet Gemini 2.0 Vetëm modelet eksperimentale të Flash
Llojet e hyrjes së skedarëve të mbështetur .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts
Komplotimi i bibliotekave mbështetet Matplotlib Matplotlib
Përdorimi me shumë mjete Nr po

Faturimi

Nuk ka asnjë tarifë shtesë për aktivizimin e ekzekutimit të kodit nga Gemini API. Do të faturoheni me normën aktuale të kodeve hyrëse dhe dalëse bazuar në modelin Gemini që po përdorni.

Këtu janë disa gjëra të tjera për të ditur rreth faturimit për ekzekutimin e kodit:

  • Ju faturoheni vetëm një herë për shenjat hyrëse që i kaloni modelit dhe faturoheni për shenjat përfundimtare të daljes që ju janë kthyer nga modeli.
  • Shenjat që përfaqësojnë kodin e gjeneruar numërohen si shenja dalëse. Kodi i gjeneruar mund të përfshijë tekst dhe dalje multimodale si imazhe.
  • Rezultatet e ekzekutimit të kodit llogariten gjithashtu si shenja dalëse.

Modeli i faturimit është paraqitur në diagramin e mëposhtëm:

modeli i faturimit të ekzekutimit të kodit

  • Faturoheni me normën aktuale të kodeve hyrëse dhe dalëse bazuar në modelin Gemini që po përdorni.
  • Nëse Binjakët përdor ekzekutimin e kodit kur gjeneron përgjigjen tuaj, kërkesa origjinale, kodi i gjeneruar dhe rezultati i kodit të ekzekutuar etiketohen si shenja të ndërmjetme dhe faturohen si shenja hyrëse .
  • Binjakët më pas gjenerojnë një përmbledhje dhe kthen kodin e gjeneruar, rezultatin e kodit të ekzekutuar dhe përmbledhjen përfundimtare. Këto faturohen si shenja dalëse .
  • API Gemini përfshin një numërim të ndërmjetëm të shenjave në përgjigjen e API-së, kështu që ju e dini pse po merrni argumente shtesë hyrëse përtej kërkesës suaj fillestare.

Kufizimet

  • Modeli mund të gjenerojë dhe ekzekutojë vetëm kod. Nuk mund të kthejë objekte të tjera si skedarët e medias.
  • Në disa raste, aktivizimi i ekzekutimit të kodit mund të çojë në regresione në fusha të tjera të prodhimit të modelit (për shembull, shkrimi i një historie).
  • Ka disa ndryshime në aftësinë e modeleve të ndryshme për të përdorur me sukses ekzekutimin e kodit.