Gemini API একটি কোড এক্সিকিউশন টুল প্রদান করে যা মডেলটিকে পাইথন কোড তৈরি এবং চালাতে সক্ষম করে। মডেলটি তারপরে একটি চূড়ান্ত আউটপুটে না আসা পর্যন্ত কোড নির্বাহের ফলাফল থেকে পুনরাবৃত্তিমূলকভাবে শিখতে পারে। আপনি কোড-ভিত্তিক যুক্তি থেকে উপকৃত অ্যাপ্লিকেশনগুলি তৈরি করতে কোড এক্সিকিউশন ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি সমীকরণ সমাধান বা পাঠ্য প্রক্রিয়া করার জন্য কোড এক্সিকিউশন ব্যবহার করতে পারেন। আপনি আরও বিশেষ কাজ সম্পাদন করতে কোড নির্বাহের পরিবেশে অন্তর্ভুক্ত লাইব্রেরিগুলিও ব্যবহার করতে পারেন।
জেমিনি শুধুমাত্র পাইথনে কোড চালাতে সক্ষম। আপনি এখনও জেমিনিকে অন্য ভাষায় কোড তৈরি করতে বলতে পারেন, কিন্তু মডেলটি চালানোর জন্য কোড এক্সিকিউশন টুল ব্যবহার করতে পারে না।
কোড এক্সিকিউশন সক্রিয় করুন
কোড এক্সিকিউশন সক্ষম করতে, মডেলে কোড এক্সিকিউশন টুল কনফিগার করুন। এটি মডেলটিকে কোড তৈরি এবং চালানোর অনুমতি দেয়।
পাইথন
from google import genai
from google.genai import types
client = genai.Client()
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)]
),
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
if part.executable_code is not None:
print(part.executable_code.code)
if part.code_execution_result is not None:
print(part.code_execution_result.output)
জাভাস্ক্রিপ্ট
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
let response = await ai.models.generateContent({
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: {
tools: [{ codeExecution: {} }],
},
});
const parts = response?.candidates?.[0]?.content?.parts || [];
parts.forEach((part) => {
if (part.text) {
console.log(part.text);
}
if (part.executableCode && part.executableCode.code) {
console.log(part.executableCode.code);
}
if (part.codeExecutionResult && part.codeExecutionResult.output) {
console.log(part.codeExecutionResult.output);
}
});
যাও
package main
import (
"context"
"fmt"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
config := &genai.GenerateContentConfig{
Tools: []*genai.Tool{
{CodeExecution: &genai.ToolCodeExecution{}},
},
}
result, _ := client.Models.GenerateContent(
ctx,
"gemini-2.0-flash",
genai.Text("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,
)
fmt.Println(result.Text())
fmt.Println(result.ExecutableCode())
fmt.Println(result.CodeExecutionResult())
}
বিশ্রাম
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d ' {"tools": [{"code_execution": {}}],
"contents": {
"parts":
{
"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
}
},
}'
আউটপুট নিম্নলিখিত মত কিছু দেখতে পারে, যা পঠনযোগ্যতার জন্য ফরম্যাট করা হয়েছে:
Okay, I need to calculate the sum of the first 50 prime numbers. Here's how I'll
approach this:
1. **Generate Prime Numbers:** I'll use an iterative method to find prime
numbers. I'll start with 2 and check if each subsequent number is divisible
by any number between 2 and its square root. If not, it's a prime.
2. **Store Primes:** I'll store the prime numbers in a list until I have 50 of
them.
3. **Calculate the Sum:** Finally, I'll sum the prime numbers in the list.
Here's the Python code to do this:
def is_prime(n):
"""Efficiently checks if a number is prime."""
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
primes = []
num = 2
while len(primes) < 50:
if is_prime(num):
primes.append(num)
num += 1
sum_of_primes = sum(primes)
print(f'{primes=}')
print(f'{sum_of_primes=}')
primes=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67,
71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229]
sum_of_primes=5117
The sum of the first 50 prime numbers is 5117.
এই আউটপুটটি বেশ কয়েকটি বিষয়বস্তুর অংশকে একত্রিত করে যা কোড এক্সিকিউশন ব্যবহার করার সময় মডেলটি ফেরত দেয়:
-
text
: মডেল দ্বারা উত্পন্ন ইনলাইন পাঠ্য -
executableCode
: মডেল দ্বারা উত্পন্ন কোড যা কার্যকর করা হয় -
codeExecutionResult
: এক্সিকিউটেবল কোডের ফলাফল
এই অংশগুলির নামকরণের নিয়মগুলি প্রোগ্রামিং ভাষার দ্বারা পরিবর্তিত হয়।
চ্যাটে কোড এক্সিকিউশন ব্যবহার করুন
আপনি চ্যাটের অংশ হিসেবে কোড এক্সিকিউশনও ব্যবহার করতে পারেন।
পাইথন
from google import genai
from google.genai import types
client = genai.Client()
chat = client.chats.create(
model="gemini-2.0-flash",
config=types.GenerateContentConfig(
tools=[types.Tool(code_execution=types.ToolCodeExecution)]
),
)
response = chat.send_message("I have a math question for you.")
print(response.text)
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."
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
if part.executable_code is not None:
print(part.executable_code.code)
if part.code_execution_result is not None:
print(part.code_execution_result.output)
জাভাস্ক্রিপ্ট
import {GoogleGenAI} from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
const chat = ai.chats.create({
model: "gemini-2.0-flash",
history: [
{
role: "user",
parts: [{ text: "I have a math question for you:" }],
},
{
role: "model",
parts: [{ text: "Great! I'm ready for your math question. Please ask away." }],
},
],
config: {
tools: [{codeExecution:{}}],
}
});
const response = await chat.sendMessage({
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."
});
console.log("Chat response:", response.text);
যাও
package main
import (
"context"
"fmt"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
config := &genai.GenerateContentConfig{
Tools: []*genai.Tool{
{CodeExecution: &genai.ToolCodeExecution{}},
},
}
chat, _ := client.Chats.Create(
ctx,
"gemini-2.0-flash",
config,
nil,
)
result, _ := chat.SendMessage(
ctx,
genai.Part{Text: "What is the sum of the first 50 prime numbers? " +
"Generate and run code for the calculation, and " +
"make sure you get all 50.",
},
)
fmt.Println(result.Text())
fmt.Println(result.ExecutableCode())
fmt.Println(result.CodeExecutionResult())
}
বিশ্রাম
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"tools": [{"code_execution": {}}],
"contents": [
{
"role": "user",
"parts": [{
"text": "Can you print \"Hello world!\"?"
}]
},{
"role": "model",
"parts": [
{
"text": ""
},
{
"executable_code": {
"language": "PYTHON",
"code": "\nprint(\"hello world!\")\n"
}
},
{
"code_execution_result": {
"outcome": "OUTCOME_OK",
"output": "hello world!\n"
}
},
{
"text": "I have printed \"hello world!\" using the provided python code block. \n"
}
],
},{
"role": "user",
"parts": [{
"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
}]
}
]
}'
ইনপুট/আউটপুট (I/O)
Gemini 2.0 Flash দিয়ে শুরু করে, কোড এক্সিকিউশন ফাইল ইনপুট এবং গ্রাফ আউটপুট সমর্থন করে। এই ইনপুট এবং আউটপুট ক্ষমতাগুলি ব্যবহার করে, আপনি CSV এবং পাঠ্য ফাইলগুলি আপলোড করতে পারেন, ফাইলগুলি সম্পর্কে প্রশ্ন জিজ্ঞাসা করতে পারেন এবং প্রতিক্রিয়ার অংশ হিসাবে Matplotlib গ্রাফ তৈরি করতে পারেন৷ আউটপুট ফাইলগুলি প্রতিক্রিয়াতে ইনলাইন চিত্র হিসাবে ফেরত দেওয়া হয়।
I/O মূল্য নির্ধারণ
কোড এক্সিকিউশন I/O ব্যবহার করার সময়, আপনাকে ইনপুট টোকেন এবং আউটপুট টোকেনের জন্য চার্জ করা হয়:
ইনপুট টোকেন:
- ব্যবহারকারী প্রম্পট
আউটপুট টোকেন:
- মডেল দ্বারা উত্পন্ন কোড
- কোড পরিবেশে কোড এক্সিকিউশন আউটপুট
- মডেল দ্বারা উত্পন্ন সারাংশ
I/O বিবরণ
আপনি যখন কোড এক্সিকিউশন I/O নিয়ে কাজ করছেন, তখন নিম্নলিখিত প্রযুক্তিগত বিবরণ সম্পর্কে সচেতন থাকুন:
- কোড পরিবেশের সর্বোচ্চ রানটাইম 30 সেকেন্ড।
- যদি কোড এনভায়রনমেন্ট একটি ত্রুটি উত্পন্ন করে, মডেলটি কোড আউটপুট পুনরায় তৈরি করার সিদ্ধান্ত নিতে পারে। এটি 5 বার পর্যন্ত ঘটতে পারে।
- মডেল টোকেন উইন্ডো দ্বারা সর্বাধিক ফাইল ইনপুট আকার সীমিত। AI স্টুডিওতে, Gemini Flash 2.0 ব্যবহার করে, সর্বাধিক ইনপুট ফাইলের আকার হল 1 মিলিয়ন টোকেন (সমর্থিত ইনপুট ধরনের টেক্সট ফাইলগুলির জন্য প্রায় 2MB)। আপনি যদি খুব বড় একটি ফাইল আপলোড করেন, তাহলে AI স্টুডিও আপনাকে এটি পাঠাতে দেবে না।
- কোড এক্সিকিউশন টেক্সট এবং CSV ফাইলের সাথে সবচেয়ে ভালো কাজ করে।
- ইনপুট ফাইলটি
part.inlineData
বাpart.fileData
( ফাইলস এপিআই এর মাধ্যমে আপলোড করা) এ পাস করা যেতে পারে এবং আউটপুট ফাইলটি সর্বদাpart.inlineData
হিসাবে ফেরত দেওয়া হয়।
একক পালা | দ্বিমুখী (মাল্টিমোডাল লাইভ API) | |
---|---|---|
মডেল সমর্থিত | সমস্ত জেমিনি 2.0 মডেল | শুধুমাত্র ফ্ল্যাশ পরীক্ষামূলক মডেল |
ফাইল ইনপুট প্রকার সমর্থিত | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts | .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts |
প্লটিং লাইব্রেরি সমর্থিত | ম্যাটপ্লটলিব | ম্যাটপ্লটলিব |
মাল্টি-টুল ব্যবহার | না | হ্যাঁ |
বিলিং
Gemini API থেকে কোড এক্সিকিউশন সক্ষম করার জন্য কোন অতিরিক্ত চার্জ নেই। আপনি যে মিথুন মডেল ব্যবহার করছেন তার উপর ভিত্তি করে ইনপুট এবং আউটপুট টোকেনের বর্তমান হারে আপনাকে বিল করা হবে।
কোড এক্সিকিউশনের জন্য বিলিং সম্পর্কে জানার জন্য এখানে কিছু অন্যান্য বিষয় রয়েছে:
- আপনি মডেলে যে ইনপুট টোকেনগুলি পাস করেন তার জন্য আপনাকে শুধুমাত্র একবার বিল করা হবে এবং মডেল দ্বারা আপনাকে ফেরত দেওয়া চূড়ান্ত আউটপুট টোকেনগুলির জন্য আপনাকে বিল করা হবে।
- উত্পন্ন কোডের প্রতিনিধিত্বকারী টোকেনগুলিকে আউটপুট টোকেন হিসাবে গণনা করা হয়। জেনারেটেড কোড টেক্সট এবং ছবির মত মাল্টিমোডাল আউটপুট অন্তর্ভুক্ত করতে পারে।
- কোড নির্বাহের ফলাফলও আউটপুট টোকেন হিসাবে গণনা করা হয়।
বিলিং মডেল নিম্নলিখিত চিত্রে দেখানো হয়েছে:
- আপনি যে মিথুন মডেল ব্যবহার করছেন তার উপর ভিত্তি করে ইনপুট এবং আউটপুট টোকেনগুলির বর্তমান হারে আপনাকে বিল করা হচ্ছে৷
- আপনার প্রতিক্রিয়া তৈরি করার সময় Gemini যদি কোড এক্সিকিউশন ব্যবহার করে, তাহলে আসল প্রম্পট, জেনারেট করা কোড এবং এক্সিকিউট করা কোডের ফলাফলকে ইন্টারমিডিয়েট টোকেন লেবেল করা হয় এবং ইনপুট টোকেন হিসেবে বিল করা হয়।
- জেমিনি তারপর একটি সারাংশ তৈরি করে এবং জেনারেট করা কোড, কার্যকর করা কোডের ফলাফল এবং চূড়ান্ত সারাংশ ফেরত দেয়। এগুলিকে আউটপুট টোকেন হিসাবে বিল করা হয়।
- Gemini API এ API প্রতিক্রিয়াতে একটি মধ্যবর্তী টোকেন গণনা অন্তর্ভুক্ত করে, তাই আপনি জানেন কেন আপনি আপনার প্রাথমিক প্রম্পটের বাইরে অতিরিক্ত ইনপুট টোকেন পাচ্ছেন।
সীমাবদ্ধতা
- মডেলটি শুধুমাত্র কোড তৈরি এবং চালাতে পারে। এটি মিডিয়া ফাইলের মত অন্যান্য শিল্পকর্ম ফেরত দিতে পারে না।
- কিছু ক্ষেত্রে, কোড এক্সিকিউশন সক্ষম করার ফলে মডেল আউটপুটের অন্যান্য ক্ষেত্রে রিগ্রেশন হতে পারে (উদাহরণস্বরূপ, একটি গল্প লেখা)।
- কোড এক্সিকিউশন সফলভাবে ব্যবহার করার জন্য বিভিন্ন মডেলের ক্ষমতার মধ্যে কিছু ভিন্নতা রয়েছে।
সমর্থিত লাইব্রেরি
কোড এক্সিকিউশন এনভায়রনমেন্টে নিম্নলিখিত লাইব্রেরিগুলি অন্তর্ভুক্ত রয়েছে:
- attrs
- দাবা
- contourpy
- fpdf
- জিওপান্ডাস
- ইমেজ
- জিঞ্জা২
- joblib
- jsonschema
- jsonschema- স্পেসিফিকেশন
- lxml
- matplotlib
- mpmath
- নম্র
- opencv-পাইথন
- openpyxl
- প্যাকেজিং
- পান্ডা
- বালিশ
- প্রোটোবাফ
- পাইলেটেক্স
- পাইপার্সিং
- PyPDF2
- python-dateutil
- python-docx
- python-pptx
- রিপোর্টল্যাব
- scikit-শিখা
- মশলাদার
- সমুদ্রজাত
- ছয়
- striprtf
- সহানুভূতিশীল
- সারণী
- tensorflow
- টুলজ
- xlrd
আপনি আপনার নিজের লাইব্রেরি ইনস্টল করতে পারবেন না.
এরপর কি
- কোড এক্সিকিউশন Colab ব্যবহার করে দেখুন।
- অন্যান্য জেমিনি API টুল সম্পর্কে জানুন: