اجرای کد

اجرای کد ابزاری است که مدل را قادر می‌سازد کد پایتون را تولید و اجرا کند. مدل می‌تواند به صورت تکراری از نتایج اجرای کد یاد بگیرد تا زمانی که به خروجی نهایی برسد.

شما می‌توانید از اجرای کد برای ساخت ویژگی‌هایی استفاده کنید که از استدلال مبتنی بر کد بهره می‌برند و خروجی متنی تولید می‌کنند. به عنوان مثال، می‌توانید از اجرای کد برای حل معادلات یا پردازش متن استفاده کنید. همچنین می‌توانید از کتابخانه‌های موجود در محیط اجرای کد برای انجام وظایف تخصصی‌تر استفاده کنید.

درست مانند تمام ابزارهایی که در اختیار مدل قرار می‌دهید، مدل تصمیم می‌گیرد چه زمانی از اجرای کد استفاده کند.

پرش به پیاده‌سازی کد

مقایسه اجرای کد در مقابل فراخوانی تابع

اجرای کد و فراخوانی تابع ویژگی‌های مشابهی هستند. به طور کلی، اگر مدل بتواند مورد استفاده شما را مدیریت کند، باید ترجیح دهید از اجرای کد استفاده کنید. اجرای کد همچنین ساده‌تر است زیرا فقط آن را فعال می‌کنید.

در اینجا چند تفاوت دیگر بین اجرای کد و فراخوانی تابع آورده شده است:

اجرای کد فراخوانی تابع
اگر می‌خواهید مدل کد پایتون را برای شما بنویسد و اجرا کند و نتیجه را برگرداند، از اجرای کد استفاده کنید. اگر از قبل توابع خودتان را دارید که می‌خواهید به صورت محلی اجرا کنید، از فراخوانی تابع استفاده کنید.
اجرای کد به مدل اجازه می‌دهد تا کد را در بک‌اند API در یک محیط ثابت و ایزوله اجرا کند. فراخوانی تابع به شما امکان می‌دهد توابعی را که مدل درخواست می‌کند، در هر محیطی که می‌خواهید اجرا کنید.
اجرای کد در یک درخواست واحد انجام می‌شود. اگرچه می‌توانید به صورت اختیاری از اجرای کد با قابلیت چت استفاده کنید، اما الزامی وجود ندارد. فراخوانی تابع نیاز به یک درخواست اضافی برای ارسال خروجی از هر فراخوانی تابع دارد. بنابراین، شما ملزم به استفاده از قابلیت چت هستید.

مدل‌های پشتیبانی‌شده

  • gemini-3.1-pro-preview
  • gemini-3.7-flashgemini-3.6-flash و gemini-3.5-flash )
  • gemini-3.5-flash-lite (و نسخه قدیمی‌تر gemini-3.1-flash-lite )

مدل‌های عمومی Gemini 2.5 از این قابلیت پشتیبانی می‌کنند، اما همه آنها منسوخ شده‌اند.

استفاده از اجرای کد

شما می‌توانید از اجرای کد هم با ورودی فقط متنی و هم با ورودی چندوجهی استفاده کنید، اما پاسخ همیشه فقط متن یا کد خواهد بود.

قبل از اینکه شروع کنی

برای مشاهده محتوا و کد مخصوص ارائه‌دهنده در این صفحه، روی ارائه‌دهنده API Gemini خود کلیک کنید.

پلتفرم عامل

اگر هنوز این کار را نکرده‌اید، راهنمای شروع به کار را تکمیل کنید، که نحوه راه‌اندازی پروژه Firebase، اتصال برنامه به Firebase، افزودن SDK، راه‌اندازی سرویس backend برای ارائه‌دهنده API انتخابی Gemini و ایجاد یک نمونه GenerativeModel شرح می‌دهد.

برای آزمایش و تکرار روی درخواست‌هایتان، توصیه می‌کنیم از Google AI Studio استفاده کنید.

فعال کردن اجرای کد

قبل از امتحان کردن این نمونه، بخش «قبل از شروع» این راهنما را برای راه‌اندازی پروژه و برنامه خود تکمیل کنید.
در آن بخش، شما همچنین می‌توانید روی دکمه‌ای برای ارائه‌دهنده‌ی API Gemini انتخابی خود کلیک کنید تا محتوای خاص ارائه‌دهنده را در این صفحه مشاهده کنید .

وقتی نمونه‌ی GenerativeModel را ایجاد می‌کنید، CodeExecution به عنوان ابزاری که مدل می‌تواند برای تولید پاسخ خود از آن استفاده کند، ارائه دهید. این به مدل اجازه می‌دهد تا کد پایتون را تولید و اجرا کند.

سویفت


import FirebaseAILogic

// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  // Provide code execution as a tool that the model can use to generate its response.
  tools: [.codeExecution()]
)

let prompt = """
What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.
"""

let response = try await model.generateContent(prompt)

guard let candidate = response.candidates.first else {
  print("No candidates in response.")
  return
}
for part in candidate.content.parts {
  if let textPart = part as? TextPart {
    print("Text = \(textPart.text)")
  } else if let executableCode = part as? ExecutableCodePart {
    print("Code = \(executableCode.code), Language = \(executableCode.language)")
  } else if let executionResult = part as? CodeExecutionResultPart {
    print("Outcome = \(executionResult.outcome), Result = \(executionResult.output ?? "no output")")
  }
}