Tuning

আপনার কাছে ইনপুট/আউটপুট উদাহরণের একটি ছোট ডেটাসেট থাকলে জেমিনি API-এর সূক্ষ্ম টিউনিং সমর্থন আউটপুট কিউরেট করার জন্য একটি প্রক্রিয়া প্রদান করে। আরো বিস্তারিত জানার জন্য, মডেল টিউনিং গাইড এবং টিউটোরিয়াল দেখুন।

পদ্ধতি: tunedModels.create

একটি সুর করা মডেল তৈরি করে। google.longrunning.Operations পরিষেবার মাধ্যমে মধ্যবর্তী টিউনিং অগ্রগতি (যদি থাকে) পরীক্ষা করুন।

অপারেশন পরিষেবার মাধ্যমে স্থিতি এবং ফলাফল অ্যাক্সেস করুন। উদাহরণ: GET /v1/tunedModels/az2mb0bpw6i/operations/000-111-222

শেষবিন্দু

পোস্ট https: / /generativelanguage.googleapis.com /v1beta /tunedModels

ক্যোয়ারী প্যারামিটার

tunedModelId string

ঐচ্ছিক। টিউন করা মডেলের অনন্য আইডি যদি নির্দিষ্ট করা থাকে। এই মানটি 40টি অক্ষর পর্যন্ত হওয়া উচিত, প্রথম অক্ষরটি একটি অক্ষর হতে হবে, শেষটি একটি অক্ষর বা একটি সংখ্যা হতে পারে৷ আইডি অবশ্যই রেগুলার এক্সপ্রেশনের সাথে মেলে: [az]([a-z0-9-]{0,38}[a-z0-9])? .

শরীরের অনুরোধ

অনুরোধের মূল অংশে TunedModel এর একটি উদাহরণ রয়েছে।

ক্ষেত্র
displayName string

ঐচ্ছিক। ব্যবহারকারী ইন্টারফেসে এই মডেলের জন্য প্রদর্শনের নাম। প্রদর্শনের নামটি স্পেস সহ 40টি অক্ষর পর্যন্ত হতে হবে।

description string

ঐচ্ছিক। এই মডেলের একটি সংক্ষিপ্ত বিবরণ।

tuningTask object ( TuningTask )

প্রয়োজন। টিউনিং টাস্ক যা টিউন করা মডেল তৈরি করে।

readerProjectNumbers[] string ( int64 format)

ঐচ্ছিক। টিউন করা মডেলে পড়ার অ্যাক্সেস আছে এমন প্রজেক্ট নম্বরের তালিকা।

source_model Union type
টিউনিংয়ের সূচনা বিন্দু হিসাবে ব্যবহৃত মডেল। source_model নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
tunedModelSource object ( TunedModelSource )

ঐচ্ছিক। টিউনডমডেল নতুন মডেলের প্রশিক্ষণের সূচনা পয়েন্ট হিসাবে ব্যবহার করতে হবে।

baseModel string

অপরিবর্তনীয়। টিউন করার জন্য Model নাম। উদাহরণ: models/gemini-1.5-flash-001

temperature number

ঐচ্ছিক। আউটপুটের এলোমেলোতা নিয়ন্ত্রণ করে।

মানগুলি সহ [0.0,1.0] এর বেশি হতে পারে। 1.0 এর কাছাকাছি একটি মান আরও বৈচিত্র্যময় প্রতিক্রিয়া তৈরি করবে, যখন 0.0 এর কাছাকাছি একটি মান সাধারণত মডেল থেকে কম আশ্চর্যজনক প্রতিক্রিয়া সৃষ্টি করবে।

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

topP number

ঐচ্ছিক। নিউক্লিয়াস স্যাম্পলিংয়ের জন্য।

নিউক্লিয়াস স্যাম্পলিং টোকেনের ক্ষুদ্রতম সেট বিবেচনা করে যার সম্ভাব্যতার যোগফল কমপক্ষে topP

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

topK integer

ঐচ্ছিক। টপ-কে স্যাম্পলিংয়ের জন্য।

Top-k স্যাম্পলিং topK সবচেয়ে সম্ভাব্য টোকেনের সেট বিবেচনা করে। এই মানটি মডেলে কল করার সময় ব্যাকএন্ড দ্বারা ব্যবহার করা ডিফল্ট নির্দিষ্ট করে।

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

উদাহরণ অনুরোধ

পাইথন

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

প্রতিক্রিয়া শরীর

সফল হলে, রেসপন্স বডিতে Operation একটি নতুন তৈরি উদাহরণ থাকে।

পদ্ধতি: tunedModels.generateContent

একটি ইনপুট GenerateContentRequest দেওয়া একটি মডেল প্রতিক্রিয়া তৈরি করে। বিস্তারিত ব্যবহারের তথ্যের জন্য পাঠ্য প্রজন্ম নির্দেশিকা পড়ুন। টিউন করা মডেল সহ মডেলগুলির মধ্যে ইনপুট ক্ষমতা আলাদা। বিস্তারিত জানার জন্য মডেল গাইড এবং টিউনিং গাইড পড়ুন।

শেষবিন্দু

পোস্ট https: / /generativelanguage.googleapis.com /v1beta /{model=tunedModels /*}:generateContent

পাথ প্যারামিটার

model string

প্রয়োজন। সমাপ্তি তৈরি করার জন্য ব্যবহার করা Model নাম।

বিন্যাস: models/{model} । এটি tunedModels/{tunedmodel} ফর্মটি নেয়।

শরীরের অনুরোধ

অনুরোধের অংশে নিম্নলিখিত কাঠামো সহ ডেটা রয়েছে:

ক্ষেত্র
contents[] object ( Content )

প্রয়োজন। মডেলের সাথে বর্তমান কথোপকথনের বিষয়বস্তু।

একক-পালা প্রশ্নের জন্য, এটি একটি একক উদাহরণ। চ্যাটের মতো বহু-মুখী প্রশ্নের জন্য, এটি একটি পুনরাবৃত্ত ক্ষেত্র যাতে কথোপকথনের ইতিহাস এবং সর্বশেষ অনুরোধ থাকে।

tools[] object ( Tool )

ঐচ্ছিক। পরবর্তী প্রতিক্রিয়া তৈরি করতে Model ব্যবহার করতে পারে Tools একটি তালিকা৷

একটি Tool হল কোডের একটি অংশ যা Model জ্ঞান এবং সুযোগের বাইরে একটি ক্রিয়া সম্পাদন করতে বা ক্রিয়াগুলির সেট করার জন্য সিস্টেমকে বহিরাগত সিস্টেমের সাথে যোগাযোগ করতে সক্ষম করে। সমর্থিত Tool হল Function এবং codeExecution । আরও জানতে ফাংশন কলিং এবং কোড এক্সিকিউশন গাইডগুলি পড়ুন।

toolConfig object ( ToolConfig )

ঐচ্ছিক। অনুরোধে উল্লেখ করা যেকোনো Tool জন্য টুল কনফিগারেশন। একটি ব্যবহারের উদাহরণের জন্য ফাংশন কলিং গাইড পড়ুন।

safetySettings[] object ( SafetySetting )

ঐচ্ছিক। অনিরাপদ বিষয়বস্তু ব্লক করার জন্য অনন্য SafetySetting দৃষ্টান্তের একটি তালিকা।

এটি GenerateContentRequest.contents এবং GenerateContentResponse.candidates এ প্রয়োগ করা হবে। প্রতিটি SafetyCategory প্রকারের জন্য একাধিক সেটিং থাকা উচিত নয়৷ এপিআই এই সেটিংস দ্বারা নির্ধারিত থ্রেশহোল্ড পূরণ করতে ব্যর্থ যে কোনো বিষয়বস্তু এবং প্রতিক্রিয়া ব্লক করবে। এই তালিকাটি সেফটিসেটিংসে নির্দিষ্ট করা প্রতিটি SafetyCategory জন্য ডিফল্ট সেটিংস ওভাররাইড করে। যদি তালিকায় প্রদত্ত একটি প্রদত্ত SafetyCategory জন্য কোনো SafetySetting না থাকে, তাহলে API সেই বিভাগের জন্য ডিফল্ট নিরাপত্তা সেটিং ব্যবহার করবে। ক্ষতির বিভাগগুলি HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY সমর্থিত৷ উপলব্ধ নিরাপত্তা সেটিংস সম্পর্কে বিস্তারিত তথ্যের জন্য গাইড পড়ুন। এছাড়াও আপনার AI অ্যাপ্লিকেশনগুলিতে সুরক্ষা বিবেচনাগুলি কীভাবে অন্তর্ভুক্ত করবেন তা শিখতে সুরক্ষা নির্দেশিকা পড়ুন।

systemInstruction object ( Content )

ঐচ্ছিক। বিকাশকারী সেট সিস্টেম নির্দেশনা(গুলি) । বর্তমানে, শুধুমাত্র টেক্সট.

generationConfig object ( GenerationConfig )

ঐচ্ছিক। মডেল জেনারেশন এবং আউটপুটগুলির জন্য কনফিগারেশন বিকল্প।

cachedContent string

ঐচ্ছিক। ভবিষ্যদ্বাণী পরিবেশনের জন্য প্রসঙ্গ হিসাবে ব্যবহার করার জন্য ক্যাশ করা সামগ্রীর নাম৷ বিন্যাস: cachedContents/{cachedContent}

উদাহরণ অনুরোধ

পাঠ্য

পাইথন

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-2.0-flash", contents="Write a story about a magic backpack."
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: "Write a story about a magic backpack.",
});
console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content content =
    new Content.Builder().addText("Write a story about a magic backpack.").build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(
    response,
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
      }

      @Override
      public void onFailure(Throwable t) {
        t.printStackTrace();
      }
    },
    executor);

ছবি

পাইথন

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-2.0-flash", contents=["Tell me about this instrument", organ]
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Bitmap image = BitmapFactory.decodeResource(context.getResources(), R.drawable.image);

Content content =
    new Content.Builder()
        .addText("What's different between these pictures?")
        .addImage(image)
        .build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(
    response,
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
      }

      @Override
      public void onFailure(Throwable t) {
        t.printStackTrace();
      }
    },
    executor);

অডিও

পাইথন

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const audio = await ai.files.upload({
  file: path.join(media, "sample.mp3"),
});

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: [
    createUserContent([
      "Give me a summary of this audio file.",
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

ভিডিও

পাইথন

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

PDF

পাইথন

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

চ্যাট

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-2.0-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-2.0-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: "I have 2 dogs in my house.",
});
console.log("Chat response 1:", response1.text);

const response2 = await chat.sendMessage({
  message: "How many paws are in my house?",
});
console.log("Chat response 2:", response2.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-2.0-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

শেল

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();

Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();

List<Content> history = Arrays.asList(userContent, modelContent);

// Initialize the chat
ChatFutures chat = model.startChat(history);

// Create a new user message
Content.Builder userMessageBuilder = new Content.Builder();
userMessageBuilder.setRole("user");
userMessageBuilder.addText("How many paws are in my house?");
Content userMessage = userMessageBuilder.build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(userMessage);

Futures.addCallback(
    response,
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
      }

      @Override
      public void onFailure(Throwable t) {
        t.printStackTrace();
      }
    },
    executor);

ক্যাশে

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-1.5-flash-001"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-1.5-flash-001";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
console.log("Cache created:", cache);

const response = await ai.models.generateContent({
  model: modelName,
  contents: "Please summarize this transcript",
  config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-1.5-flash-001"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

টিউন করা মডেল

পাইথন

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

JSON মোড

পাইথন

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
    recipe_name: str
    ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-2.0-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: "List a few popular cookie recipes.",
  config: {
    responseMimeType: "application/json",
    responseSchema: {
      type: "array",
      items: {
        type: "object",
        properties: {
          recipeName: { type: "string" },
          ingredients: { type: "array", items: { type: "string" } },
        },
        required: ["recipeName", "ingredients"],
      },
    },
  },
});
console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-2.0-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

জাভা

Schema<List<String>> schema =
    new Schema(
        /* name */ "recipes",
        /* description */ "List of recipes",
        /* format */ null,
        /* nullable */ false,
        /* list */ null,
        /* properties */ null,
        /* required */ null,
        /* items */ new Schema(
            /* name */ "recipe",
            /* description */ "A recipe",
            /* format */ null,
            /* nullable */ false,
            /* list */ null,
            /* properties */ Map.of(
                "recipeName",
                new Schema(
                    /* name */ "recipeName",
                    /* description */ "Name of the recipe",
                    /* format */ null,
                    /* nullable */ false,
                    /* list */ null,
                    /* properties */ null,
                    /* required */ null,
                    /* items */ null,
                    /* type */ FunctionType.STRING)),
            /* required */ null,
            /* items */ null,
            /* type */ FunctionType.OBJECT),
        /* type */ FunctionType.ARRAY);

GenerationConfig.Builder configBuilder = new GenerationConfig.Builder();
configBuilder.responseMimeType = "application/json";
configBuilder.responseSchema = schema;

GenerationConfig generationConfig = configBuilder.build();

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-pro",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey,
        /* generationConfig */ generationConfig);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content content = new Content.Builder().addText("List a few popular cookie recipes.").build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(
    response,
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
      }

      @Override
      public void onFailure(Throwable t) {
        t.printStackTrace();
      }
    },
    executor);

কোড এক্সিকিউশন

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-2.0-pro-exp-02-05",
    contents=(
        "Write and execute code that calculates the sum of the first 50 prime numbers. "
        "Ensure that only the executable code and its resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
    print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-2.0-pro-exp-02-05",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
        new GenerativeModel(
                /* modelName */ "gemini-1.5-pro",
                // Access your API key as a Build Configuration variable (see "Set up your API key"
                // above)
                /* apiKey */ BuildConfig.apiKey,
                /* generationConfig */ null,
                /* safetySettings */ null,
                /* requestOptions */ new RequestOptions(),
                /* tools */ Collections.singletonList(Tool.CODE_EXECUTION));
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content inputContent =
        new Content.Builder().addText("What is the sum of the first 50 prime numbers?").build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

ListenableFuture<GenerateContentResponse> response = model.generateContent(inputContent);
Futures.addCallback(
        response,
        new FutureCallback<GenerateContentResponse>() {
            @Override
            public void onSuccess(GenerateContentResponse result) {
                // Each `part` either contains `text`, `executable_code` or an
                // `execution_result`
                Candidate candidate = result.getCandidates().get(0);
                for (Part part : candidate.getContent().getParts()) {
                    System.out.println(part);
                }

                // Alternatively, you can use the `text` accessor which joins the parts into a
                // markdown compatible text representation
                String resultText = result.getText();
                System.out.println(resultText);
            }

            @Override
            public void onFailure(Throwable t) {
                t.printStackTrace();
            }
        },
        executor);

ফাংশন কলিং

পাইথন

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
    """returns a + b."""
    return a + b

def subtract(a: float, b: float) -> float:
    """returns a - b."""
    return a - b

def multiply(a: float, b: float) -> float:
    """returns a * b."""
    return a * b

def divide(a: float, b: float) -> float:
    """returns a / b."""
    return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-2.0-flash",
    config=types.GenerateContentConfig(tools=[add, subtract, multiply, divide]),
)
response = chat.send_message(
    message="I have 57 cats, each owns 44 mittens, how many mittens is that in total?"
)
print(response.text)

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
modelName := "gemini-2.0-flash"

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
	case "addNumbers":
		result = add(args.FirstParam, args.SecondParam)
	case "subtractNumbers":
		result = subtract(args.FirstParam, args.SecondParam)
	case "multiplyNumbers":
		result = multiply(args.FirstParam, args.SecondParam)
	case "divideNumbers":
		result = divide(args.FirstParam, args.SecondParam)
	default:
		return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is " + fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

  /**
   * The add function returns the sum of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function add(a, b) {
    return a + b;
  }

  /**
   * The subtract function returns the difference (a - b).
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function subtract(a, b) {
    return a - b;
  }

  /**
   * The multiply function returns the product of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function multiply(a, b) {
    return a * b;
  }

  /**
   * The divide function returns the quotient of a divided by b.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function divide(a, b) {
    return a / b;
  }

  const addDeclaration = {
    name: "addNumbers",
    parameters: {
      type: "object",
      description: "Return the result of adding two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description:
            "The first parameter which can be an integer or a floating point number.",
        },
        secondParam: {
          type: "number",
          description:
            "The second parameter which can be an integer or a floating point number.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const subtractDeclaration = {
    name: "subtractNumbers",
    parameters: {
      type: "object",
      description:
        "Return the result of subtracting the second number from the first.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const multiplyDeclaration = {
    name: "multiplyNumbers",
    parameters: {
      type: "object",
      description: "Return the product of two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const divideDeclaration = {
    name: "divideNumbers",
    parameters: {
      type: "object",
      description:
        "Return the quotient of dividing the first number by the second.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  // Step 1: Call generateContent with function calling enabled.
  const generateContentResponse = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents:
      "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
    config: {
      toolConfig: {
        functionCallingConfig: {
          mode: FunctionCallingConfigMode.ANY,
        },
      },
      tools: [
        {
          functionDeclarations: [
            addDeclaration,
            subtractDeclaration,
            multiplyDeclaration,
            divideDeclaration,
          ],
        },
      ],
    },
  });

  // Step 2: Extract the function call.(
  // Assuming the response contains a 'functionCalls' array.
  const functionCall =
    generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
  console.log(functionCall);

  // Parse the arguments.
  const args = functionCall.args;
  // Expected args format: { firstParam: number, secondParam: number }

  // Step 3: Invoke the actual function based on the function name.
  const functionMapping = {
    addNumbers: add,
    subtractNumbers: subtract,
    multiplyNumbers: multiply,
    divideNumbers: divide,
  };
  const func = functionMapping[functionCall.name];
  if (!func) {
    console.error("Unimplemented error:", functionCall.name);
    return generateContentResponse;
  }
  const resultValue = func(args.firstParam, args.secondParam);
  console.log("Function result:", resultValue);

  // Step 4: Use the chat API to send the result as the final answer.
  const chat = ai.chats.create({ model: "gemini-2.0-flash" });
  const chatResponse = await chat.sendMessage({
    message: "The final result is " + resultValue,
  });
  console.log(chatResponse.text);
  return chatResponse;
}

শেল


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

জাভা

FunctionDeclaration multiplyDefinition =
    defineFunction(
        /* name  */ "multiply",
        /* description */ "returns a * b.",
        /* parameters */ Arrays.asList(
            Schema.numDouble("a", "First parameter"),
            Schema.numDouble("b", "Second parameter")),
        /* required */ Arrays.asList("a", "b"));

Tool tool = new Tool(Arrays.asList(multiplyDefinition), null);

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey,
        /* generationConfig (optional) */ null,
        /* safetySettings (optional) */ null,
        /* requestOptions (optional) */ new RequestOptions(),
        /* functionDeclarations (optional) */ Arrays.asList(tool));
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Create prompt
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText(
    "I have 57 cats, each owns 44 mittens, how many mittens is that in total?");
Content userMessage = userContentBuilder.build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

// Initialize the chat
ChatFutures chat = model.startChat();

// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(userMessage);

Futures.addCallback(
    response,
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        if (!result.getFunctionCalls().isEmpty()) {
          handleFunctionCall(result);
        }
        if (!result.getText().isEmpty()) {
          System.out.println(result.getText());
        }
      }

      @Override
      public void onFailure(Throwable t) {
        t.printStackTrace();
      }

      private void handleFunctionCall(GenerateContentResponse result) {
        FunctionCallPart multiplyFunctionCallPart =
            result.getFunctionCalls().stream()
                .filter(fun -> fun.getName().equals("multiply"))
                .findFirst()
                .get();
        double a = Double.parseDouble(multiplyFunctionCallPart.getArgs().get("a"));
        double b = Double.parseDouble(multiplyFunctionCallPart.getArgs().get("b"));

        try {
          // `multiply(a, b)` is a regular java function defined in another class
          FunctionResponsePart functionResponsePart =
              new FunctionResponsePart(
                  "multiply", new JSONObject().put("result", multiply(a, b)));

          // Create prompt
          Content.Builder functionCallResponse = new Content.Builder();
          userContentBuilder.setRole("user");
          userContentBuilder.addPart(functionResponsePart);
          Content userMessage = userContentBuilder.build();

          chat.sendMessage(userMessage);
        } catch (JSONException e) {
          throw new RuntimeException(e);
        }
      }
    },
    executor);

জেনারেশন কনফিগারেশন

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: "Tell me a story about a magic backpack.",
  config: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-2.0-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

শেল

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

জাভা

GenerationConfig.Builder configBuilder = new GenerationConfig.Builder();
configBuilder.temperature = 0.9f;
configBuilder.topK = 16;
configBuilder.topP = 0.1f;
configBuilder.maxOutputTokens = 200;
configBuilder.stopSequences = Arrays.asList("red");

GenerationConfig generationConfig = configBuilder.build();

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel("gemini-1.5-flash", BuildConfig.apiKey, generationConfig);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

নিরাপত্তা সেটিংস

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! "
    "Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT", threshold="BLOCK_ONLY_HIGH"
            ),
        ]
    ),
)
try:
    print(response.text)
except Exception:
    print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
  const unsafePrompt =
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.";

  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: unsafePrompt,
    config: {
      safetySettings: [
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_MEDIUM_AND_ABOVE",
        },
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_ONLY_HIGH",
        },
      ],
    },
  });

  try {
    console.log("Generated text:", response.text);
  } catch (error) {
    console.log("No information generated by the model.");
  }
  console.log("Safety ratings:", response.candidates[0].safetyRatings);
  return response;
}

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

শেল

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

জাভা

SafetySetting harassmentSafety =
    new SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH);

SafetySetting hateSpeechSafety =
    new SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE);

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        "gemini-1.5-flash",
        BuildConfig.apiKey,
        null, // generation config is optional
        Arrays.asList(harassmentSafety, hateSpeechSafety));

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

সিস্টেম নির্দেশনা

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: "Good morning! How are you?",
  config: {
    systemInstruction: "You are a cat. Your name is Neko.",
  },
});
console.log(response.text);

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

শেল

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

জাভা

GenerativeModel model =
    new GenerativeModel(
        // Specify a Gemini model appropriate for your use case
        /* modelName */ "gemini-1.5-flash",
        /* apiKey */ BuildConfig.apiKey,
        /* generationConfig (optional) */ null,
        /* safetySettings (optional) */ null,
        /* requestOptions (optional) */ new RequestOptions(),
        /* tools (optional) */ null,
        /* toolsConfig (optional) */ null,
        /* systemInstruction (optional) */ new Content.Builder()
            .addText("You are a cat. Your name is Neko.")
            .build());

প্রতিক্রিয়া শরীর

সফল হলে, প্রতিক্রিয়া বডিতে GenerateContentResponse এর একটি উদাহরণ থাকে।

পদ্ধতি: tunedModels.streamGenerateContent

একটি ইনপুট GenerateContentRequest প্রদত্ত মডেল থেকে একটি প্রবাহিত প্রতিক্রিয়া তৈরি করে।

শেষবিন্দু

পোস্ট https: / /generativelanguage.googleapis.com /v1beta /{model=tunedModels /*}:streamGenerateContent

পাথ প্যারামিটার

model string

প্রয়োজন। সমাপ্তি তৈরি করার জন্য ব্যবহার করা Model নাম।

বিন্যাস: models/{model} । এটি tunedModels/{tunedmodel} ফর্মটি নেয়।

শরীরের অনুরোধ

অনুরোধের অংশে নিম্নলিখিত কাঠামো সহ ডেটা রয়েছে:

ক্ষেত্র
contents[] object ( Content )

প্রয়োজন। মডেলের সাথে বর্তমান কথোপকথনের বিষয়বস্তু।

একক-পালা প্রশ্নের জন্য, এটি একটি একক উদাহরণ। চ্যাটের মতো বহু-মুখী প্রশ্নের জন্য, এটি একটি পুনরাবৃত্ত ক্ষেত্র যাতে কথোপকথনের ইতিহাস এবং সর্বশেষ অনুরোধ থাকে।

tools[] object ( Tool )

ঐচ্ছিক। পরবর্তী প্রতিক্রিয়া তৈরি করতে Model ব্যবহার করতে পারে Tools একটি তালিকা৷

একটি Tool হল কোডের একটি অংশ যা Model জ্ঞান এবং সুযোগের বাইরে একটি ক্রিয়া সম্পাদন করতে বা ক্রিয়াগুলির সেট করার জন্য সিস্টেমকে বহিরাগত সিস্টেমের সাথে যোগাযোগ করতে সক্ষম করে। সমর্থিত Tool হল Function এবং codeExecution । আরও জানতে ফাংশন কলিং এবং কোড এক্সিকিউশন গাইডগুলি পড়ুন।

toolConfig object ( ToolConfig )

ঐচ্ছিক। অনুরোধে উল্লেখ করা যেকোনো Tool জন্য টুল কনফিগারেশন। একটি ব্যবহারের উদাহরণের জন্য ফাংশন কলিং গাইড পড়ুন।

safetySettings[] object ( SafetySetting )

ঐচ্ছিক। অনিরাপদ বিষয়বস্তু ব্লক করার জন্য অনন্য SafetySetting দৃষ্টান্তের একটি তালিকা।

এটি GenerateContentRequest.contents এবং GenerateContentResponse.candidates এ প্রয়োগ করা হবে। প্রতিটি SafetyCategory প্রকারের জন্য একাধিক সেটিং থাকা উচিত নয়৷ এপিআই এই সেটিংস দ্বারা নির্ধারিত থ্রেশহোল্ড পূরণ করতে ব্যর্থ যে কোনো বিষয়বস্তু এবং প্রতিক্রিয়া ব্লক করবে। এই তালিকাটি সেফটিসেটিংসে নির্দিষ্ট করা প্রতিটি SafetyCategory জন্য ডিফল্ট সেটিংস ওভাররাইড করে। যদি তালিকায় প্রদত্ত একটি প্রদত্ত SafetyCategory জন্য কোনো SafetySetting না থাকে, তাহলে API সেই বিভাগের জন্য ডিফল্ট নিরাপত্তা সেটিং ব্যবহার করবে। ক্ষতির বিভাগগুলি HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY সমর্থিত৷ উপলব্ধ নিরাপত্তা সেটিংস সম্পর্কে বিস্তারিত তথ্যের জন্য গাইড পড়ুন। এছাড়াও আপনার AI অ্যাপ্লিকেশনগুলিতে সুরক্ষা বিবেচনাগুলি কীভাবে অন্তর্ভুক্ত করবেন তা শিখতে সুরক্ষা নির্দেশিকা পড়ুন।

systemInstruction object ( Content )

ঐচ্ছিক। বিকাশকারী সেট সিস্টেম নির্দেশনা(গুলি) । বর্তমানে, শুধুমাত্র টেক্সট.

generationConfig object ( GenerationConfig )

ঐচ্ছিক। মডেল জেনারেশন এবং আউটপুটগুলির জন্য কনফিগারেশন বিকল্প।

cachedContent string

ঐচ্ছিক। ভবিষ্যদ্বাণী পরিবেশনের জন্য প্রসঙ্গ হিসাবে ব্যবহার করার জন্য ক্যাশ করা সামগ্রীর নাম৷ বিন্যাস: cachedContents/{cachedContent}

উদাহরণ অনুরোধ

পাঠ্য

পাইথন

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-2.0-flash", contents="Write a story about a magic backpack."
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContentStream({
  model: "gemini-2.0-flash",
  contents: "Write a story about a magic backpack.",
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-2.0-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

শেল

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Content content =
    new Content.Builder().addText("Write a story about a magic backpack.").build();

Publisher<GenerateContentResponse> streamingResponse = model.generateContentStream(content);

StringBuilder outputContent = new StringBuilder();

streamingResponse.subscribe(
    new Subscriber<GenerateContentResponse>() {
      @Override
      public void onNext(GenerateContentResponse generateContentResponse) {
        String chunk = generateContentResponse.getText();
        outputContent.append(chunk);
      }

      @Override
      public void onComplete() {
        System.out.println(outputContent);
      }

      @Override
      public void onError(Throwable t) {
        t.printStackTrace();
      }

      @Override
      public void onSubscribe(Subscription s) {
        s.request(Long.MAX_VALUE);
      }
    });

ছবি

পাইথন

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-2.0-flash", contents=["Tell me about this instrument", organ]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContentStream({
  model: "gemini-2.0-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-2.0-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

শেল

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Bitmap image1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.image1);
Bitmap image2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.image2);

Content content =
    new Content.Builder()
        .addText("What's different between these pictures?")
        .addImage(image1)
        .addImage(image2)
        .build();

// For illustrative purposes only. You should use an executor that fits your needs.
Executor executor = Executors.newSingleThreadExecutor();

Publisher<GenerateContentResponse> streamingResponse = model.generateContentStream(content);

StringBuilder outputContent = new StringBuilder();

streamingResponse.subscribe(
    new Subscriber<GenerateContentResponse>() {
      @Override
      public void onNext(GenerateContentResponse generateContentResponse) {
        String chunk = generateContentResponse.getText();
        outputContent.append(chunk);
      }

      @Override
      public void onComplete() {
        System.out.println(outputContent);
      }

      @Override
      public void onError(Throwable t) {
        t.printStackTrace();
      }

      @Override
      public void onSubscribe(Subscription s) {
        s.request(Long.MAX_VALUE);
      }
    });

অডিও

পাইথন

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-2.0-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-2.0-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

শেল

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

ভিডিও

পাইথন

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-2.0-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: "gemini-2.0-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-2.0-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

শেল

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

পাইথন

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-2.0-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
    print(chunk.text)
    print("_" * 80)

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-2.0-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

শেল

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

চ্যাট

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-2.0-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message_stream(message="How many paws are in my house?")
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-2.0-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

console.log("Streaming response for first message:");
const stream1 = await chat.sendMessageStream({
  message: "I have 2 dogs in my house.",
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log("Streaming response for second message:");
const stream2 = await chat.sendMessageStream({
  message: "How many paws are in my house?",
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log(chat.getHistory());

যাও

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-2.0-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

শেল

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

জাভা

// Specify a Gemini model appropriate for your use case
GenerativeModel gm =
    new GenerativeModel(
        /* modelName */ "gemini-1.5-flash",
        // Access your API key as a Build Configuration variable (see "Set up your API key"
        // above)
        /* apiKey */ BuildConfig.apiKey);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();

Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();

List<Content> history = Arrays.asList(userContent, modelContent);

// Initialize the chat
ChatFutures chat = model.startChat(history);

// Create a new user message
Content.Builder userMessageBuilder = new Content.Builder();
userMessageBuilder.setRole("user");
userMessageBuilder.addText("How many paws are in my house?");
Content userMessage = userMessageBuilder.build();

// Use streaming with text-only input
Publisher<GenerateContentResponse> streamingResponse = model.generateContentStream(userMessage);

StringBuilder outputContent = new StringBuilder();

streamingResponse.subscribe(
    new Subscriber<GenerateContentResponse>() {
      @Override
      public void onNext(GenerateContentResponse generateContentResponse) {
        String chunk = generateContentResponse.getText();
        outputContent.append(chunk);
      }

      @Override
      public void onComplete() {
        System.out.println(outputContent);
      }

      @Override
      public void onSubscribe(Subscription s) {
        s.request(Long.MAX_VALUE);
      }

      @Override
      public void onError(Throwable t) {}

    });

প্রতিক্রিয়া শরীর

সফল হলে, প্রতিক্রিয়া বডিতে GenerateContentResponse দৃষ্টান্তের একটি স্ট্রীম থাকে।

পদ্ধতি: tunedModels.get

একটি নির্দিষ্ট TunedModel সম্পর্কে তথ্য পায়।

শেষবিন্দু

https: / /generativelanguage.googleapis.com /v1beta /{name=tunedModels /*} পান

পাথ প্যারামিটার

name string

প্রয়োজন। মডেলের সম্পদের নাম।

বিন্যাস: tunedModels/my-model-id এটি tunedModels/{tunedmodel} ফর্ম নেয়।

শরীরের অনুরোধ

অনুরোধের বডি খালি হতে হবে।

উদাহরণ অনুরোধ

পাইথন

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

প্রতিক্রিয়া শরীর

সফল হলে, প্রতিক্রিয়া বডিতে TunedModel এর একটি উদাহরণ থাকে।

পদ্ধতি: tunedModels.list

টিউন করা মডেলের তালিকা তৈরি করা হয়েছে।

শেষবিন্দু

https: / /generativelanguage.googleapis.com /v1beta /tunedModels পান

ক্যোয়ারী প্যারামিটার

pageSize integer

ঐচ্ছিক। TunedModels সর্বাধিক সংখ্যক ফেরত দিতে হবে (প্রতি পৃষ্ঠায়)। পরিষেবাটি কম টিউন করা মডেলগুলি ফিরিয়ে দিতে পারে৷

অনির্দিষ্ট থাকলে, সর্বাধিক 10 টি টিউন করা মডেল ফেরত দেওয়া হবে। এই পদ্ধতিটি প্রতি পৃষ্ঠায় সর্বাধিক 1000টি মডেল ফেরত দেয়, এমনকি যদি আপনি একটি বড় পৃষ্ঠার আকার পাস করেন।

pageToken string

ঐচ্ছিক। একটি পূর্ববর্তী tunedModels.list কল থেকে প্রাপ্ত একটি পৃষ্ঠা টোকেন।

পরবর্তী পৃষ্ঠাটি পুনরুদ্ধার করার জন্য পরবর্তী অনুরোধের যুক্তি হিসাবে একটি অনুরোধ দ্বারা ফিরে আসা pageToken প্রদান করুন।

পেজিনেট করার সময়, tunedModels.list এ প্রদত্ত অন্যান্য সমস্ত প্যারামিটার অবশ্যই পেজ টোকেন প্রদানকারী কলের সাথে মেলে।

filter string

ঐচ্ছিক। একটি ফিল্টার হল টিউন করা মডেলের বিবরণ এবং প্রদর্শন নামের উপর একটি সম্পূর্ণ পাঠ্য অনুসন্ধান। ডিফল্টরূপে, ফলাফল সকলের সাথে ভাগ করা টিউন করা মডেলগুলিকে অন্তর্ভুক্ত করবে না৷

অতিরিক্ত অপারেটর: - মালিক:আমি - লেখক:আমি - পাঠক:আমি - পাঠক:সবাই

উদাহরণ: "মালিক: আমি" সমস্ত টিউন করা মডেলগুলি ফেরত দেয় যেখানে কলারের মালিকের ভূমিকা রয়েছে "পাঠক: আমি" সমস্ত টিউন করা মডেল ফেরত দেয় যেখানে কলারের পাঠকের ভূমিকা রয়েছে "পাঠক: প্রত্যেকে" সকলের সাথে শেয়ার করা সমস্ত টিউন করা মডেল ফেরত দেয়

শরীরের অনুরোধ

অনুরোধের বডি খালি হতে হবে।

উদাহরণ অনুরোধ

পাইথন

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

প্রতিক্রিয়া শরীর

tunedModels.list থেকে প্রতিক্রিয়া মডেলগুলির একটি পৃষ্ঠাযুক্ত তালিকা রয়েছে৷

সফল হলে, প্রতিক্রিয়া বডিতে নিম্নলিখিত কাঠামোর সাথে ডেটা থাকে:

ক্ষেত্র
tunedModels[] object ( TunedModel )

ফিরে আসা মডেলরা।

nextPageToken string

একটি টোকেন, যা পরবর্তী পৃষ্ঠা পুনরুদ্ধার করতে pageToken হিসাবে পাঠানো যেতে পারে।

যদি এই ক্ষেত্রটি বাদ দেওয়া হয়, তাহলে আর কোনো পৃষ্ঠা নেই।

JSON প্রতিনিধিত্ব
{
  "tunedModels": [
    {
      object (TunedModel)
    }
  ],
  "nextPageToken": string
}

পদ্ধতি: tunedModels.patch

একটি টিউন করা মডেল আপডেট করে।

শেষবিন্দু

প্যাচ https: / /generativelanguage.googleapis.com /v1beta /{tunedModel.name=tunedModels /*}
PATCH https://generativelanguage.googleapis.com/v1beta/{tunedModel.name=tunedModels/*}

পাথ প্যারামিটার

tunedModel.name string

শুধুমাত্র আউটপুট। টিউন করা মডেলের নাম। একটি অনন্য নাম তৈরি করা হবে. উদাহরণ: tunedModels/az2mb0bpw6i যদি displayName তৈরিতে সেট করা থাকে, তাহলে নামের আইডি অংশটি হাইফেনের সাথে ডিসপ্লেনামের শব্দগুলিকে সংযুক্ত করে এবং অনন্যতার জন্য একটি এলোমেলো অংশ যোগ করে সেট করা হবে।

উদাহরণ:

  • displayName = Sentence Translator
  • name = tunedModels/sentence-translator-u3b7m এটি রূপ নেয় tunedModels/{tunedmodel}

ক্যোয়ারী প্যারামিটার

updateMask string ( FieldMask format)

ঐচ্ছিক। আপডেট করার জন্য ক্ষেত্রগুলির তালিকা৷

এটি ক্ষেত্রগুলির সম্পূর্ণরূপে যোগ্য নামের একটি কমা দ্বারা পৃথক করা তালিকা৷ উদাহরণ: "user.displayName,photo"

শরীরের অনুরোধ

অনুরোধের মূল অংশে TunedModel এর একটি উদাহরণ রয়েছে।

ক্ষেত্র
displayName string

ঐচ্ছিক। ব্যবহারকারী ইন্টারফেসে এই মডেলের জন্য প্রদর্শনের নাম। প্রদর্শনের নামটি স্পেস সহ 40টি অক্ষর পর্যন্ত হতে হবে।

description string

ঐচ্ছিক। এই মডেলের একটি সংক্ষিপ্ত বিবরণ।

tuningTask object ( TuningTask )

প্রয়োজন। টিউনিং টাস্ক যা টিউন করা মডেল তৈরি করে।

readerProjectNumbers[] string ( int64 format)

ঐচ্ছিক। টিউন করা মডেলে পড়ার অ্যাক্সেস আছে এমন প্রজেক্ট নম্বরের তালিকা।

source_model Union type
টিউনিংয়ের সূচনা বিন্দু হিসাবে ব্যবহৃত মডেল। source_model নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
tunedModelSource object ( TunedModelSource )

ঐচ্ছিক। টিউনডমডেল নতুন মডেলের প্রশিক্ষণের সূচনা পয়েন্ট হিসাবে ব্যবহার করতে হবে।

temperature number

ঐচ্ছিক। আউটপুটের এলোমেলোতা নিয়ন্ত্রণ করে।

মানগুলি সহ [0.0,1.0] এর বেশি হতে পারে। 1.0 এর কাছাকাছি একটি মান আরও বৈচিত্র্যময় প্রতিক্রিয়া তৈরি করবে, যখন 0.0 এর কাছাকাছি একটি মান সাধারণত মডেল থেকে কম আশ্চর্যজনক প্রতিক্রিয়া সৃষ্টি করবে।

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

topP number

ঐচ্ছিক। নিউক্লিয়াস স্যাম্পলিংয়ের জন্য।

নিউক্লিয়াস স্যাম্পলিং টোকেনের ক্ষুদ্রতম সেট বিবেচনা করে যার সম্ভাব্যতার যোগফল কমপক্ষে topP

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

topK integer

ঐচ্ছিক। টপ-কে স্যাম্পলিংয়ের জন্য।

Top-k স্যাম্পলিং topK সবচেয়ে সম্ভাব্য টোকেনের সেট বিবেচনা করে। এই মানটি মডেলে কল করার সময় ব্যাকএন্ড দ্বারা ব্যবহার করা ডিফল্ট নির্দিষ্ট করে।

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

প্রতিক্রিয়া শরীর

সফল হলে, প্রতিক্রিয়া বডিতে TunedModel এর একটি উদাহরণ থাকে।

পদ্ধতি: tunedModels.delete

একটি টিউন করা মডেল মুছে দেয়।

শেষবিন্দু

https: / /generativelanguage.googleapis.com /v1beta /{name=tunedModels /*} মুছুন

পাথ প্যারামিটার

name string

প্রয়োজন। মডেলের সম্পদের নাম। বিন্যাস: tunedModels/my-model-id এটি tunedModels/{tunedmodel} ফর্ম নেয়।

শরীরের অনুরোধ

অনুরোধের বডি খালি হতে হবে।

প্রতিক্রিয়া শরীর

সফল হলে, প্রতিক্রিয়া বডি একটি খালি JSON অবজেক্ট।

REST রিসোর্স: tunedModels

সম্পদ: TunedModel

ModelService.CreateTunedModel ব্যবহার করে তৈরি একটি সূক্ষ্ম-টিউনড মডেল।

ক্ষেত্র
name string

শুধুমাত্র আউটপুট। টিউন করা মডেলের নাম। একটি অনন্য নাম তৈরি করা হবে. উদাহরণ: tunedModels/az2mb0bpw6i যদি displayName তৈরিতে সেট করা থাকে, তাহলে নামের আইডি অংশটি হাইফেনের সাথে ডিসপ্লেনামের শব্দগুলিকে সংযুক্ত করে এবং অনন্যতার জন্য একটি এলোমেলো অংশ যোগ করে সেট করা হবে।

উদাহরণ:

  • displayName = Sentence Translator
  • নাম = tunedModels/sentence-translator-u3b7m
displayName string

ঐচ্ছিক। ব্যবহারকারী ইন্টারফেসে এই মডেলের জন্য প্রদর্শনের নাম। প্রদর্শনের নামটি স্পেস সহ 40টি অক্ষর পর্যন্ত হতে হবে।

description string

ঐচ্ছিক। এই মডেলের একটি সংক্ষিপ্ত বিবরণ।

state enum ( State )

শুধুমাত্র আউটপুট। সুর করা মডেলের অবস্থা।

createTime string ( Timestamp format)

শুধুমাত্র আউটপুট। টাইমস্ট্যাম্প যখন এই মডেলটি তৈরি করা হয়েছিল।

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

updateTime string ( Timestamp format)

শুধুমাত্র আউটপুট। টাইমস্ট্যাম্প যখন এই মডেল আপডেট করা হয়েছিল।

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

tuningTask object ( TuningTask )

প্রয়োজন। টিউনিং টাস্ক যা টিউন করা মডেল তৈরি করে।

readerProjectNumbers[] string ( int64 format)

ঐচ্ছিক। টিউন করা মডেলে পড়ার অ্যাক্সেস আছে এমন প্রজেক্ট নম্বরের তালিকা।

source_model Union type
টিউনিংয়ের সূচনা বিন্দু হিসাবে ব্যবহৃত মডেল। source_model নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
tunedModelSource object ( TunedModelSource )

ঐচ্ছিক। টিউনডমডেল নতুন মডেলের প্রশিক্ষণের সূচনা পয়েন্ট হিসাবে ব্যবহার করতে হবে।

baseModel string

অপরিবর্তনীয়। টিউন করার জন্য Model নাম। উদাহরণ: models/gemini-1.5-flash-001

temperature number

ঐচ্ছিক। আউটপুটের এলোমেলোতা নিয়ন্ত্রণ করে।

মানগুলি সহ [0.0,1.0] এর বেশি হতে পারে। 1.0 এর কাছাকাছি একটি মান আরও বৈচিত্র্যময় প্রতিক্রিয়া তৈরি করবে, যখন 0.0 এর কাছাকাছি একটি মান সাধারণত মডেল থেকে কম আশ্চর্যজনক প্রতিক্রিয়া সৃষ্টি করবে।

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

topP number

ঐচ্ছিক। নিউক্লিয়াস স্যাম্পলিংয়ের জন্য।

নিউক্লিয়াস স্যাম্পলিং টোকেনের ক্ষুদ্রতম সেট বিবেচনা করে যার সম্ভাব্যতার যোগফল কমপক্ষে topP

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

topK integer

ঐচ্ছিক। টপ-কে স্যাম্পলিংয়ের জন্য।

Top-k স্যাম্পলিং topK সবচেয়ে সম্ভাব্য টোকেনের সেট বিবেচনা করে। এই মানটি মডেলে কল করার সময় ব্যাকএন্ড দ্বারা ব্যবহার করা ডিফল্ট নির্দিষ্ট করে।

এই মানটি মডেল তৈরি করার সময় বেস মডেল দ্বারা ব্যবহৃত একটি হতে ডিফল্ট নির্দিষ্ট করে।

JSON প্রতিনিধিত্ব
{
  "name": string,
  "displayName": string,
  "description": string,
  "state": enum (State),
  "createTime": string,
  "updateTime": string,
  "tuningTask": {
    object (TuningTask)
  },
  "readerProjectNumbers": [
    string
  ],

  // source_model
  "tunedModelSource": {
    object (TunedModelSource)
  },
  "baseModel": string
  // Union type
  "temperature": number,
  "topP": number,
  "topK": integer
}

TunedModelSource

একটি নতুন মডেল প্রশিক্ষণের জন্য একটি উত্স হিসাবে টিউন করা মডেল.

ক্ষেত্র
tunedModel string

অপরিবর্তনীয়। নতুন মডেলের প্রশিক্ষণের সূচনা পয়েন্ট হিসাবে ব্যবহার করার জন্য TunedModel এর নাম। উদাহরণ: tunedModels/my-tuned-model

baseModel string

শুধুমাত্র আউটপুট। এই TunedModel বেস Model নাম থেকে টিউন করা হয়েছে. উদাহরণ: models/gemini-1.5-flash-001

JSON প্রতিনিধিত্ব
{
  "tunedModel": string,
  "baseModel": string
}

রাজ্য

সুর করা মডেলের অবস্থা।

এনামস
STATE_UNSPECIFIED ডিফল্ট মান। এই মান অব্যবহৃত.
CREATING মডেল তৈরি করা হচ্ছে।
ACTIVE মডেলটি ব্যবহারের জন্য প্রস্তুত।
FAILED মডেল তৈরি করা ব্যর্থ হয়েছে.

টিউনিং টাস্ক

টিউনিং কাজ যা টিউন করা মডেল তৈরি করে।

ক্ষেত্র
startTime string ( Timestamp format)

শুধুমাত্র আউটপুট। এই মডেল টিউনিং শুরু করার সময় টাইমস্ট্যাম্প.

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

completeTime string ( Timestamp format)

শুধুমাত্র আউটপুট। এই মডেল টিউন করার সময় টাইমস্ট্যাম্প সম্পন্ন হয়েছে।

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

snapshots[] object ( TuningSnapshot )

শুধুমাত্র আউটপুট। টিউনিংয়ের সময় সংগৃহীত মেট্রিক।

trainingData object ( Dataset )

প্রয়োজন। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। মডেল প্রশিক্ষণ তথ্য.

hyperparameters object ( Hyperparameters )

অপরিবর্তনীয়। হাইপারপ্যারামিটার টিউনিং প্রক্রিয়া নিয়ন্ত্রণ করে। প্রদান না করা হলে, ডিফল্ট মান ব্যবহার করা হবে।

JSON প্রতিনিধিত্ব
{
  "startTime": string,
  "completeTime": string,
  "snapshots": [
    {
      object (TuningSnapshot)
    }
  ],
  "trainingData": {
    object (Dataset)
  },
  "hyperparameters": {
    object (Hyperparameters)
  }
}

টিউনিং স্ন্যাপশট

একটি একক টিউনিং ধাপের জন্য রেকর্ড করুন।

ক্ষেত্র
step integer

শুধুমাত্র আউটপুট। টিউনিং ধাপ।

epoch integer

শুধুমাত্র আউটপুট। এই পদক্ষেপটি সেই যুগের অংশ ছিল।

meanLoss number

শুধুমাত্র আউটপুট। এই ধাপের জন্য প্রশিক্ষণ উদাহরণের গড় ক্ষতি।

computeTime string ( Timestamp format)

শুধুমাত্র আউটপুট। টাইমস্ট্যাম্প যখন এই মেট্রিক গণনা করা হয়েছিল।

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

JSON প্রতিনিধিত্ব
{
  "step": integer,
  "epoch": integer,
  "meanLoss": number,
  "computeTime": string
}

ডেটাসেট

প্রশিক্ষণ বা বৈধতার জন্য ডেটাসেট।

ক্ষেত্র
dataset Union type
ইনলাইন ডেটা বা ডেটার রেফারেন্স। dataset নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
examples object ( TuningExamples )

ঐচ্ছিক। সহজ ইনপুট/আউটপুট পাঠ্য সহ ইনলাইন উদাহরণ।

JSON প্রতিনিধিত্ব
{

  // dataset
  "examples": {
    object (TuningExamples)
  }
  // Union type
}

টিউনিং উদাহরণ

টিউনিং উদাহরণের একটি সেট। প্রশিক্ষণ বা বৈধতা তথ্য হতে পারে.

ক্ষেত্র
examples[] object ( TuningExample )

উদাহরণ. উদাহরণ ইনপুট পাঠ্য বা আলোচনার জন্য হতে পারে, তবে একটি সেটের সমস্ত উদাহরণ অবশ্যই একই ধরণের হতে হবে।

JSON প্রতিনিধিত্ব
{
  "examples": [
    {
      object (TuningExample)
    }
  ]
}

টিউনিং উদাহরণ

টিউনিংয়ের জন্য একটি একক উদাহরণ।

ক্ষেত্র
output string

প্রয়োজন। প্রত্যাশিত মডেল আউটপুট।

model_input Union type
এই উদাহরণের জন্য মডেল ইনপুট. model_input নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
textInput string

ঐচ্ছিক। টেক্সট মডেল ইনপুট।

JSON প্রতিনিধিত্ব
{
  "output": string,

  // model_input
  "textInput": string
  // Union type
}

হাইপারপ্যারামিটার

হাইপারপ্যারামিটার টিউনিং প্রক্রিয়া নিয়ন্ত্রণ করে। https://ai.google.dev/docs/model_tuning_guidance- এ আরও পড়ুন

ক্ষেত্র
learning_rate_option Union type
টিউনিংয়ের সময় শেখার হার নির্দিষ্ট করার বিকল্প। learning_rate_option নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
learningRate number

ঐচ্ছিক। অপরিবর্তনীয়। টিউনিংয়ের জন্য শেখার হার হাইপারপ্যারামিটার। সেট করা না থাকলে, 0.001 বা 0.0002 এর একটি ডিফল্ট প্রশিক্ষণের উদাহরণের সংখ্যার উপর ভিত্তি করে গণনা করা হবে।

learningRateMultiplier number

ঐচ্ছিক। অপরিবর্তনীয়। শেখার হার গুণকটি ডিফল্ট (প্রস্তাবিত) মানের উপর ভিত্তি করে একটি চূড়ান্ত শেখার হার গণনা করতে ব্যবহৃত হয়। প্রকৃত শেখার হার := learningRateMultiplier * ডিফল্ট শেখার হার ডিফল্ট শেখার হার বেস মডেল এবং ডেটাসেট আকারের উপর নির্ভরশীল। সেট না করা হলে, 1.0 এর একটি ডিফল্ট ব্যবহার করা হবে।

epochCount integer

অপরিবর্তনীয়। প্রশিক্ষণ যুগের সংখ্যা। একটি যুগ হল প্রশিক্ষণ ডেটার মধ্য দিয়ে একটি পাস। সেট না হলে, ডিফল্ট 5 ব্যবহার করা হবে।

batchSize integer

অপরিবর্তনীয়। টিউনিংয়ের জন্য ব্যাচ আকারের হাইপারপ্যারামিটার। যদি সেট না করা হয়, তাহলে প্রশিক্ষণ উদাহরণের সংখ্যার উপর ভিত্তি করে 4 বা 16 এর একটি ডিফল্ট ব্যবহার করা হবে।

JSON প্রতিনিধিত্ব
{

  // learning_rate_option
  "learningRate": number,
  "learningRateMultiplier": number
  // Union type
  "epochCount": integer,
  "batchSize": integer
}