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 是效能最佳的模型。