Tính năng thực thi mã API Gemini cho phép mô hình tạo và chạy mã Python, đồng thời học lặp lại từ các kết quả cho đến khi đạt được kết quả cuối cùng. Bạn có thể sử dụng chức năng thực thi mã này để xây dựng các ứng dụng tận dụng được khả năng suy luận dựa trên mã và tạo ra kết quả văn bản. Ví dụ: bạn có thể sử dụng tính năng thực thi mã trong một ứng dụng giải phương trình hoặc xử lý văn bản.
Bạn có thể thực thi mã trong cả AI Studio và Gemini API. Trong AI Studio, bạn có thể bật tính năng thực thi mã trong bảng điều khiển bên phải trong mục Tools (Công cụ). API Gemini cung cấp tính năng thực thi mã dưới dạng một công cụ, tương tự như lệnh gọi hàm. Sau khi bạn thêm tính năng thực thi mã dưới dạng một công cụ, mô hình sẽ quyết định thời điểm sử dụng công cụ đó.
Môi trường thực thi mã bao gồm các thư viện sau: altair
, chess
, cv2
, matplotlib
, mpmath
, numpy
, pandas
, pdfminer
, reportlab
, seaborn
, sklearn
, statsmodels
, striprtf
, sympy
và tabulate
. Bạn không thể cài đặt thư viện của riêng mình.
Bắt đầu với việc thực thi mã
Bạn cũng có thể sử dụng sổ tay thực thi mã:
Phần này giả định rằng bạn đã hoàn tất các bước thiết lập và định cấu hình được nêu trong phần bắt đầu nhanh.
Bật tính năng thực thi mã trên mô hình
Bạn có thể bật tính năng thực thi mã trên mô hình, như minh hoạ ở đây:
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
)]
)
)
Trong sổ tay, bạn có thể hiển thị mọi nội dung ở định dạng Markdown bằng hàm trợ giúp sau:
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ết quả có thể có dạng như sau:
Được rồi, tôi cần tính tổng của 50 số nguyên tố đầu tiên. Tôi sẽ sử dụng một tập lệnh python để tạo 50 số nguyên tố đầu tiên, sau đó cộng các số đó lại với nhau.
```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 ```
Sử dụng tính năng thực thi mã trong cuộc trò chuyện
Bạn cũng có thể sử dụng tính năng thực thi mã trong cuộc trò chuyện.
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)
Cuộc trò chuyện có thể tiếp tục như sau:
Theo tôi hiểu thì bạn muốn tôi sắp xếp bogo danh sách [2, 34, 1, 65, 4]. Bogo-sort là một thuật toán sắp xếp nổi tiếng là không hiệu quả. Phương thức này hoạt động bằng cách xáo trộn danh sách nhiều lần cho đến khi danh sách được sắp xếp. Do hiệu suất cực kỳ kém, nên phương thức này không phù hợp với danh sách có kích thước đáng kể.
Tuy nhiên, để minh hoạ, tôi có thể chạy một phiên bản đơn giản cho một số ít lần lặp lại, chỉ để cho thấy quá trình này. Tôi có nên tiếp tục không?
response = chat.send_message("Yes, please create the code.")
display_code_execution_result(response)
Được rồi,tôi sẽ tiếp tục với một hàm giúp xáo trộn danh sách và kiểm tra xem danh sách đó có được sắp xếp hay không. Tôi sẽ chạy thuật toán này tối đa 10 lần lặp. ...
Đầu vào/đầu ra (I/O)
Kể từ Gemini 2.0 Flash, quá trình thực thi mã sẽ hỗ trợ đầu vào tệp và đầu ra biểu đồ. Khi sử dụng các chức năng đầu vào và đầu ra mới này, bạn có thể tải tệp CSV và tệp văn bản lên, đặt câu hỏi về các tệp đó và tạo biểu đồ Matplotlib trong phản hồi.
Giá của I/O
Khi sử dụng I/O thực thi mã, bạn sẽ bị tính phí cho mã thông báo đầu vào và mã thông báo đầu ra:
Mã thông báo đầu vào:
- Lời nhắc người dùng
Mã thông báo đầu ra:
- Mã do mô hình tạo
- Kết quả thực thi mã trong môi trường mã
- Bản tóm tắt do mô hình tạo
Thông tin chi tiết về I/O
Khi bạn làm việc với I/O thực thi mã, hãy lưu ý đến các thông tin kỹ thuật sau:
- Thời gian chạy tối đa của môi trường mã là 30 giây.
- Nếu môi trường mã tạo ra lỗi, mô hình có thể quyết định tạo lại đầu ra mã. Quá trình này có thể xảy ra tối đa 5 lần.
- Kích thước đầu vào tệp tối đa bị giới hạn bởi cửa sổ mã thông báo mô hình. Trong AI Studio, khi sử dụng Gemini Flash 2.0, kích thước tệp đầu vào tối đa là 1 triệu mã thông báo (khoảng 2 MB đối với tệp văn bản thuộc các loại dữ liệu đầu vào được hỗ trợ). Nếu bạn tải một tệp quá lớn lên, AI Studio sẽ không cho phép bạn gửi tệp đó.
Một lượt | Hai chiều (API trực tiếp đa phương thức) | |
---|---|---|
Các mô hình được hỗ trợ | Tất cả mô hình Gemini 2.0 | Chỉ các mô hình thử nghiệm Flash |
Các loại đầu vào tệp được hỗ trợ | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts |
Các thư viện lập biểu đồ được hỗ trợ | Matplotlib | Matplotlib |
Sử dụng nhiều công cụ | Không | Có |
Thanh toán
Bạn không phải trả thêm phí khi kích hoạt tính năng thực thi mã từ Gemini API. Bạn sẽ được tính phí theo tỷ lệ hiện tại của mã thông báo đầu vào và đầu ra dựa trên mô hình Gemini mà bạn đang sử dụng.
Dưới đây là một số điều khác bạn cần biết về việc tính phí cho việc thực thi mã:
- Bạn chỉ bị tính phí một lần cho các mã thông báo đầu vào mà bạn truyền vào mô hình và bạn sẽ bị tính phí cho các mã thông báo đầu ra cuối cùng mà mô hình trả về cho bạn.
- Các mã thông báo đại diện cho mã được tạo được tính là mã thông báo đầu ra. Mã được tạo có thể bao gồm văn bản và đầu ra đa phương thức như hình ảnh.
- Kết quả thực thi mã cũng được tính là mã thông báo đầu ra.
Mô hình thanh toán được thể hiện trong sơ đồ sau:
- Bạn sẽ được tính phí theo mức giá hiện tại của mã thông báo đầu vào và đầu ra dựa trên mô hình Gemini mà bạn đang sử dụng.
- Nếu Gemini sử dụng tính năng thực thi mã khi tạo câu trả lời, thì câu lệnh ban đầu, mã được tạo và kết quả của mã được thực thi sẽ được gắn nhãn là mã thông báo trung gian và được tính phí là mã thông báo đầu vào.
- Sau đó, Gemini sẽ tạo một bản tóm tắt và trả về mã đã tạo, kết quả của mã đã thực thi và bản tóm tắt cuối cùng. Các lượt này được tính phí dưới dạng mã thông báo đầu ra.
- API Gemini bao gồm số lượng mã thông báo trung gian trong phản hồi API, vì vậy, bạn sẽ biết lý do bạn nhận được mã thông báo đầu vào bổ sung ngoài lời nhắc ban đầu.
Các điểm hạn chế
- Mô hình chỉ có thể tạo và thực thi mã. Phương thức này không thể trả về các cấu phần phần mềm khác như tệp phương tiện.
- Trong một số trường hợp, việc bật tính năng thực thi mã có thể dẫn đến sự hồi quy trong các khu vực khác của đầu ra mô hình (ví dụ: viết một câu chuyện).
- Có một số khác biệt về khả năng sử dụng tính năng thực thi mã thành công của các mô hình.