程式碼執行

Gemini API 程式碼執行功能可讓模型產生及執行 Python 程式碼,並根據結果進行迭代式學習,直到產生最終輸出結果為止。您可以使用這項程式碼執行功能,建構可從程式碼推理中受益,並產生文字輸出的應用程式。舉例來說,您可以在解決方程式或處理文字的應用程式中使用程式碼執行功能。

AI Studio 和 Gemini API 都支援程式碼執行作業。在 AI Studio 中,您可以在「進階設定」下方啟用程式碼執行功能。Gemini API 提供程式碼執行工具,類似於函式呼叫。將程式碼執行作業新增為工具後,模型會決定何時使用該工具。

開始執行程式碼

您也可以使用程式碼執行筆記本:

在 ai.google.dev 上查看 試用 Colab 筆記本 在 GitHub 中查看筆記本

本節假設您已完成快速入門中顯示的設定步驟。

啟用模型上的程式碼執行功能

您可以啟用模型的程式碼執行作業,如下所示:

import os
import google.generativeai as genai

genai.configure(api_key=os.environ['API_KEY'])

model = genai.GenerativeModel(
    model_name='gemini-1.5-pro',
    tools='code_execution')

response = model.generate_content((
    'What is the sum of the first 50 prime numbers? '
    'Generate and run code for the calculation, and make sure you get all 50.'))

print(response.text)

輸出內容可能如下所示:

```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}")
```

**Explanation:**

1. **`is_prime(n)` Function:**
   - Takes an integer `n` as input.
   - Returns `False` for numbers less than or equal to 1 (not prime).
   - Iterates from 2 up to the square root of `n`. If `n` is divisible by any
     number in this range, it's not prime, and we return `False`.
   - If the loop completes without finding a divisor, the number is prime, and
     we return `True`.

2. **`sum_of_primes(n)` Function:**
   - Takes an integer `n` (number of primes desired) as input.
   - Initializes an empty list `primes` to store the prime numbers.
   - Starts a loop, iterating through numbers starting from 2.
   - For each number `i`, it checks if it's prime using the `is_prime()` function.
   - If `i` is prime, it's appended to the `primes` list.
   - The loop continues until the `primes` list has `n` prime numbers.
   - Finally, it calculates and returns the sum of all the prime numbers in the
     `primes` list.

3. **Main Part:**
   - Calls `sum_of_primes(50)` to get the sum of the first 50 prime numbers.
   - Prints the result.

**Output:**

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

啟用要求上的程式碼執行作業

或者,您也可以在呼叫 generate_content 時啟用程式碼執行作業:

import os
import google.generativeai as genai

genai.configure(api_key=os.environ['API_KEY'])

model = genai.GenerativeModel(model_name='gemini-1.5-pro')

response = model.generate_content(
    ('What is the sum of the first 50 prime numbers? '
    'Generate and run code for the calculation, and make sure you get all 50.'),
    tools='code_execution')

print(response.text)

在聊天中使用程式碼執行功能

您也可以在聊天中執行程式碼。

import os
import google.generativeai as genai

genai.configure(api_key=os.environ['API_KEY'])

model = genai.GenerativeModel(model_name='gemini-1.5-pro',
                              tools='code_execution')

chat = model.start_chat()

response = chat.send_message((
    'What is the sum of the first 50 prime numbers? '
    'Generate and run code for the calculation, and make sure you get all 50.'))

print(response.text)

程式碼執行與函式呼叫

程式碼執行和函式呼叫功能類似:

  • 程式碼執行作業可讓模型在固定的隔離環境中執行 API 後端程式碼。
  • 函式呼叫可讓您在所需環境中執行模型要求的函式。

一般來說,如果程式碼執行作業可以處理您的用途,建議您使用這項作業。程式碼執行作業的使用方式更簡單 (只要啟用即可),且會在單一 GenerateContent 要求中解析 (因此只會產生單一費用)。函式呼叫會使用額外的 GenerateContent 要求,以便傳回每個函式呼叫的輸出內容 (因此會產生多項費用)。

在大多數情況下,如果您有要在本機執行的函式,應使用函式呼叫;如果您希望 API 為您編寫及執行 Python 程式碼並傳回結果,則應使用程式碼執行功能。

帳單

啟用 Gemini API 的程式碼執行作業不會產生額外費用。我們會以輸入和輸出符記的目前費率向您收費。

以下是執行程式碼的其他計費相關注意事項:

  • 系統只會針對您傳遞至模型的輸入符記收費一次,並針對模型傳回的最終輸出符記收費。
  • 代表產生程式碼的符記會計為輸出符記。
  • 程式碼執行結果也會計入輸出符號。

限制

  • 模型只能產生及執行程式碼。但無法傳回其他構件,例如媒體檔案。
  • 這項功能不支援檔案輸入/輸出,或涉及非文字輸出的用途 (例如資料圖表或 CSV 檔案上傳)。
  • 程式碼執行作業最多可執行 30 秒,之後就會逾時。
  • 在某些情況下,啟用程式碼執行功能可能會導致模型輸出內容的其他部分 (例如撰寫故事) 出現回歸現象。
  • 不同模型使用程式碼執行功能的能力有所差異。根據我們的測試,Gemini 1.5 Pro 是效能最佳的模型。