ویژگی اجرای کد Gemini API مدل را قادر میسازد تا کد پایتون را تولید و اجرا کند و تا زمانی که به خروجی نهایی برسد، بهطور مکرر از نتایج یاد بگیرد. میتوانید از این قابلیت اجرای کد برای ساخت برنامههایی استفاده کنید که از استدلال مبتنی بر کد بهره میبرند و خروجی متن تولید میکنند. به عنوان مثال، می توانید از اجرای کد در برنامه ای استفاده کنید که معادلات را حل می کند یا متن را پردازش می کند.
اجرای کد هم در AI Studio و هم در Gemini API موجود است. در AI Studio، میتوانید اجرای کد را در پانل سمت راست زیر ابزارها فعال کنید. Gemini API اجرای کد را به عنوان ابزاری مشابه فراخوانی تابع فراهم می کند. پس از اینکه اجرای کد را به عنوان یک ابزار اضافه کردید، مدل تصمیم میگیرد چه زمانی از آن استفاده کند.
محیط اجرای کد شامل کتابخانه های زیر است: altair
، chess
، cv2
، matplotlib
، mpmath
، numpy
، pandas
، pdfminer
، reportlab
، seaborn
، sklearn
، statsmodels
، striprtf
، sympy
و tabulate
. شما نمی توانید کتابخانه های خود را نصب کنید.
با اجرای کد شروع کنید
یک نوت بوک اجرای کد نیز موجود است:
این بخش فرض می کند که مراحل راه اندازی و پیکربندی نشان داده شده در شروع سریع را تکمیل کرده اید.
اجرای کد را در مدل فعال کنید
همانطور که در اینجا نشان داده شده است، می توانید اجرای کد را در مدل فعال کنید:
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
)]
)
)
در یک نوت بوک می توانید همه چیز را با فرمت Markdown با این تابع کمکی نمایش دهید:
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)
خروجی ممکن است چیزی شبیه به این باشد:
خوب، من باید مجموع 50 عدد اول اول را محاسبه کنم. من از یک اسکریپت پایتون برای تولید 50 عدد اول و سپس جمع بندی آنها استفاده خواهم کرد.
```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 ```
از اجرای کد در چت استفاده کنید
همچنین می توانید از اجرای کد به عنوان بخشی از چت استفاده کنید.
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)
گفتگو می تواند به این صورت ادامه یابد:
میدانم که از من میخواهید فهرست را مرتب کنم [2، 34، 1، 65، 4]. Bogo-sort یک الگوریتم مرتبسازی بسیار ناکارآمد است. با به هم زدن مکرر لیست کار می کند تا زمانی که مرتب شود. به دلیل عملکرد بسیار ضعیف آن، برای لیست هایی با هر اندازه قابل توجهی غیر عملی است.
با این حال، برای اهداف نمایشی، می توانم یک نسخه ساده شده را برای تعداد بسیار محدودی از تکرارها اجرا کنم، فقط برای نشان دادن روند. باید برم جلو؟
response = chat.send_message("Yes, please create the code.")
display_code_execution_result(response)
بسیار خوب، من با تابعی ادامه می دهم که لیست را به هم می زند و بررسی می کند که آیا مرتب شده است یا خیر. من آن را برای حداکثر 10 تکرار اجرا خواهم کرد. ...
ورودی/خروجی (I/O)
با شروع Gemini 2.0 Flash ، اجرای کد از ورودی فایل و خروجی نمودار پشتیبانی می کند. با استفاده از این قابلیتهای ورودی و خروجی جدید، میتوانید فایلهای CSV و متنی را آپلود کنید، درباره فایلها سؤال بپرسید، و نمودارهای Matplotlib را به عنوان بخشی از پاسخ تولید کنید.
قیمت گذاری ورودی/خروجی
هنگام استفاده از اجرای کد ورودی/خروجی، برای نشانههای ورودی و نشانههای خروجی هزینه دریافت میکنید:
نشانه های ورودی:
- درخواست کاربر
نشانه های خروجی:
- کد تولید شده توسط مدل
- خروجی اجرای کد در محیط کد
- خلاصه تولید شده توسط مدل
جزئیات ورودی/خروجی
هنگامی که با اجرای کد ورودی/خروجی کار می کنید، از جزئیات فنی زیر آگاه باشید:
- حداکثر زمان اجرای محیط کد 30 ثانیه است.
- اگر محیط کد خطایی ایجاد کند، مدل ممکن است تصمیم بگیرد خروجی کد را دوباره تولید کند. این می تواند تا 5 بار اتفاق بیفتد.
- حداکثر اندازه ورودی فایل توسط پنجره نشانه مدل محدود شده است. در AI Studio، با استفاده از Gemini Flash 2.0، حداکثر اندازه فایل ورودی 1 میلیون توکن است (تقریباً 2 مگابایت برای فایل های متنی از انواع ورودی پشتیبانی شده). اگر فایلی را بارگذاری کنید که خیلی بزرگ است، AI Studio به شما اجازه ارسال آن را نمی دهد.
یک دور | دو جهته (Multimodal Live API) | |
---|---|---|
مدل های پشتیبانی شده | تمامی مدل های Gemini 2.0 | فقط مدل های آزمایشی فلش |
انواع ورودی فایل پشتیبانی می شود | png.، .jpeg، .csv، .xml، .cpp، .java، .py، .js، .ts | png.، .jpeg، .csv، .xml، .cpp، .java، .py، .js، .ts |
طرحبندی کتابخانهها پشتیبانی میشود | Matplotlib | Matplotlib |
استفاده از چند ابزار | خیر | بله |
صورتحساب
هیچ هزینه اضافی برای فعال کردن اجرای کد از Gemini API وجود ندارد. بر اساس مدل Gemini که استفاده میکنید، با نرخ فعلی نشانههای ورودی و خروجی صورتحساب دریافت خواهید کرد.
در اینجا چند چیز دیگر در مورد صدور صورتحساب برای اجرای کد وجود دارد:
- شما فقط یک بار برای نشانههای ورودی که به مدل ارسال میکنید صورتحساب دریافت میکنید و برای نشانههای خروجی نهایی که توسط مدل به شما بازگردانده میشود صورتحساب دریافت میکنید.
- توکن هایی که کد تولید شده را نشان می دهند به عنوان نشانه های خروجی شمارش می شوند. کد تولید شده می تواند شامل متن و خروجی چندوجهی مانند تصاویر باشد.
- نتایج اجرای کد نیز به عنوان نشانه های خروجی محاسبه می شود.
مدل صورتحساب در نمودار زیر نشان داده شده است:
- بر اساس مدل Gemini که استفاده می کنید، صورتحساب شما با نرخ فعلی نشانه های ورودی و خروجی محاسبه می شود.
- اگر Gemini هنگام ایجاد پاسخ شما از اجرای کد استفاده می کند، درخواست اصلی، کد تولید شده و نتیجه کد اجرا شده برچسب نشانه های میانی هستند و به عنوان نشانه های ورودی صورتحساب می شوند.
- سپس Gemini یک خلاصه تولید می کند و کد تولید شده، نتیجه کد اجرا شده و خلاصه نهایی را برمی گرداند. اینها به عنوان نشانه های خروجی صورتحساب می شوند.
- Gemini API شامل یک تعداد توکن میانی در پاسخ API است، بنابراین میدانید که چرا نشانههای ورودی اضافی فراتر از درخواست اولیه خود دریافت میکنید.
محدودیت ها
- مدل فقط می تواند کد تولید و اجرا کند. نمی تواند مصنوعات دیگر مانند فایل های رسانه ای را برگرداند.
- در برخی موارد، فعال کردن اجرای کد میتواند منجر به رگرسیون در سایر حوزههای خروجی مدل شود (مثلاً نوشتن یک داستان).
- تفاوت هایی در توانایی مدل های مختلف برای استفاده موفقیت آمیز از اجرای کد وجود دارد.