OpenAI সামঞ্জস্য

তিনটি কোড লাইন আপডেট করে এবং আপনার জেমিনি এপিআই কী ব্যবহার করে REST API-এর পাশাপাশি OpenAI লাইব্রেরি (পাইথন এবং টাইপস্ক্রিপ্ট / জাভাস্ক্রিপ্ট) ব্যবহার করে জেমিনি মডেলগুলো অ্যাক্সেস করা যায়। আপনি যদি ইতিমধ্যেই OpenAI লাইব্রেরিগুলো ব্যবহার না করে থাকেন, তবে আমরা আপনাকে সরাসরি জেমিনি এপিআই কল করার পরামর্শ দিই।

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.chat.completions.create(
    model="gemini-3-flash-preview",
    messages=[
        {   "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "Explain to me how AI works"
        }
    ]
)

print(response.choices[0].message)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

const response = await openai.chat.completions.create({
    model: "gemini-3-flash-preview",
    messages: [
        {   role: "system",
            content: "You are a helpful assistant." 
        },
        {
            role: "user",
            content: "Explain to me how AI works",
        },
    ],
});

console.log(response.choices[0].message);

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $GEMINI_API_KEY" \
  -d '{
    "model": "gemini-3-flash-preview",
    "messages": [
      {
        "role": "user",
        "content": "Explain to me how AI works"
      }
    ]
  }'

কী পরিবর্তন হলো? মাত্র তিনটি লাইন!

  • api_key="GEMINI_API_KEY" : " GEMINI_API_KEY " এর জায়গায় আপনার আসল জেমিনি এপিআই কী (Gemini API key) বসান, যা আপনি গুগল এআই স্টুডিও (Google AI Studio) থেকে পেতে পারেন।

  • base_url="https://generativelanguage.googleapis.com/v1beta/openai/" : এটি OpenAI লাইব্রেরিকে ডিফল্ট URL-এর পরিবর্তে Gemini API এন্ডপয়েন্টে অনুরোধ পাঠাতে নির্দেশ দেয়।

  • model="gemini-3-flash-preview" : একটি সামঞ্জস্যপূর্ণ জেমিনি মডেল বেছে নিন

চিন্তা

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

বিভিন্ন জেমিনি মডেলের যুক্তি প্রদানের কনফিগারেশন ভিন্ন ভিন্ন, নিচে দেখানো হলো কীভাবে সেগুলো ওপেনএআই-এর যুক্তি প্রদানের প্রচেষ্টার সাথে সামঞ্জস্যপূর্ণ:

reasoning_effort (ওপেনএআই) thinking_level (জেমিনি ৩.১ প্রো) thinking_level (জেমিনি ৩.১ ফ্ল্যাশ-লাইট) thinking_level (মিথুন ৩ ফ্ল্যাশ) thinking_budget (মিথুন ২.৫)
minimal low minimal minimal 1,024
low low low low 1,024
medium medium medium medium 8,192
high high high high 24,576

যদি কোনো reasoning_effort নির্দিষ্ট করা না থাকে, তাহলে Gemini মডেলটির ডিফল্ট লেভেল বা বাজেট ব্যবহার করে।

আপনি যদি চিন্তা করা বন্ধ করতে চান, তাহলে ২.৫ মডেলের জন্য reasoning_effort "none" এ সেট করতে পারেন। Gemini 2.5 Pro বা 3 মডেলের জন্য Reasoning বন্ধ করা যায় না।

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.chat.completions.create(
    model="gemini-3-flash-preview",
    reasoning_effort="low",
    messages=[
        {   "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "Explain to me how AI works"
        }
    ]
)

print(response.choices[0].message)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

const response = await openai.chat.completions.create({
    model: "gemini-3-flash-preview",
    reasoning_effort: "low",
    messages: [
        {   role: "system",
            content: "You are a helpful assistant." 
        },
        {
            role: "user",
            content: "Explain to me how AI works",
        },
    ],
});

console.log(response.choices[0].message);

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $GEMINI_API_KEY" \
  -d '{
    "model": "gemini-3-flash-preview",
    "reasoning_effort": "low",
    "messages": [
      {
        "role": "user",
        "content": "Explain to me how AI works"
      }
    ]
  }'

জেমিনি চিন্তন মডেলগুলো চিন্তার সারাংশও তৈরি করে। আপনার অনুরোধে জেমিনি ফিল্ডগুলো অন্তর্ভুক্ত করতে আপনি extra_body ফিল্ডটি ব্যবহার করতে পারেন।

মনে রাখবেন যে reasoning_effort এবং thinking_level / thinking_budget কার্যকারিতা একে অপরের সাথে মিলে যায়, তাই এগুলো একই সময়ে ব্যবহার করা যাবে না।

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.chat.completions.create(
    model="gemini-3-flash-preview",
    messages=[{"role": "user", "content": "Explain to me how AI works"}],
    extra_body={
      'extra_body': {
        "google": {
          "thinking_config": {
            "thinking_level": "low",
            "include_thoughts": True
          }
        }
      }
    }
)

print(response.choices[0].message)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

const response = await openai.chat.completions.create({
    model: "gemini-3-flash-preview",
    messages: [{role: "user", content: "Explain to me how AI works",}],
    extra_body: {
      "google": {
        "thinking_config": {
          "thinking_level": "low",
          "include_thoughts": true
        }
      }
    }
});

console.log(response.choices[0].message);

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer GEMINI_API_KEY" \
  -d '{
      "model": "gemini-3-flash-preview",
        "messages": [{"role": "user", "content": "Explain to me how AI works"}],
        "extra_body": {
          "google": {
            "thinking_config": {
              "thinking_level": "low",
              "include_thoughts": true
            }
          }
        }
      }'

জেমিনি ৩ তার চ্যাট কমপ্লিশন এপিআই-তে থট সিগনেচারের জন্য ওপেনএআই সামঞ্জস্যতা সমর্থন করে। আপনি থট সিগনেচার পৃষ্ঠায় সম্পূর্ণ উদাহরণটি খুঁজে পেতে পারেন।

স্ট্রিমিং

জেমিনি এপিআই স্ট্রিমিং রেসপন্স সমর্থন করে।

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.chat.completions.create(
  model="gemini-3-flash-preview",
  messages=[
    {
        "role": "system",
        "content": "You are a helpful assistant."
    },
    {   "role": "user",
        "content": "Hello!"
    }
  ],
  stream=True
)

for chunk in response:
    print(chunk.choices[0].delta)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

async function main() {
  const completion = await openai.chat.completions.create({
    model: "gemini-3-flash-preview",
    messages: [
      {
          "role": "system",
          "content": "You are a helpful assistant."
      },
      {
          "role": "user",
          "content": "Hello!"
      }
    ],
    stream: true,
  });

  for await (const chunk of completion) {
    console.log(chunk.choices[0].delta.content);
  }
}

main();

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer GEMINI_API_KEY" \
  -d '{
      "model": "gemini-3-flash-preview",
      "messages": [
          {"role": "user", "content": "Explain to me how AI works"}
      ],
      "stream": true
    }'

ফাংশন কলিং

ফাংশন কলিং জেনারেটিভ মডেল থেকে স্ট্রাকচার্ড ডেটা আউটপুট পাওয়া সহজ করে তোলে এবং এটি জেমিনি এপিআই-তে সমর্থিত

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

tools = [
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get the weather in a given location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. Chicago, IL",
          },
          "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
        },
        "required": ["location"],
      },
    }
  }
]

messages = [{"role": "user", "content": "What's the weather like in Chicago today?"}]
response = client.chat.completions.create(
  model="gemini-3-flash-preview",
  messages=messages,
  tools=tools,
  tool_choice="auto"
)

print(response)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

async function main() {
  const messages = [{"role": "user", "content": "What's the weather like in Chicago today?"}];
  const tools = [
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "Get the weather in a given location",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. Chicago, IL",
              },
              "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
            },
            "required": ["location"],
          },
        }
      }
  ];

  const response = await openai.chat.completions.create({
    model: "gemini-3-flash-preview",
    messages: messages,
    tools: tools,
    tool_choice: "auto",
  });

  console.log(response);
}

main();

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer GEMINI_API_KEY" \
-d '{
  "model": "gemini-3-flash-preview",
  "messages": [
    {
      "role": "user",
      "content": "What'\''s the weather like in Chicago today?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the current weather in a given location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. Chicago, IL"
            },
            "unit": {
              "type": "string",
              "enum": ["celsius", "fahrenheit"]
            }
          },
          "required": ["location"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}'

চিত্র বোঝা

জেমিনি মডেলগুলো সহজাতভাবেই মাল্টিমোডাল এবং অনেক প্রচলিত ভিশন টাস্কে সেরা মানের পারফরম্যান্স প্রদান করে।

পাইথন

import base64
from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

# Function to encode the image
def encode_image(image_path):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode('utf-8')

# Getting the base64 string
base64_image = encode_image("Path/to/agi/image.jpeg")

response = client.chat.completions.create(
  model="gemini-3-flash-preview",
  messages=[
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What is in this image?",
        },
        {
          "type": "image_url",
          "image_url": {
            "url":  f"data:image/jpeg;base64,{base64_image}"
          },
        },
      ],
    }
  ],
)

print(response.choices[0])

জাভাস্ক্রিপ্ট

import OpenAI from "openai";
import fs from 'fs/promises';

const openai = new OpenAI({
  apiKey: "GEMINI_API_KEY",
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

async function encodeImage(imagePath) {
  try {
    const imageBuffer = await fs.readFile(imagePath);
    return imageBuffer.toString('base64');
  } catch (error) {
    console.error("Error encoding image:", error);
    return null;
  }
}

async function main() {
  const imagePath = "Path/to/agi/image.jpeg";
  const base64Image = await encodeImage(imagePath);

  const messages = [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What is in this image?",
        },
        {
          "type": "image_url",
          "image_url": {
            "url": `data:image/jpeg;base64,${base64Image}`
          },
        },
      ],
    }
  ];

  try {
    const response = await openai.chat.completions.create({
      model: "gemini-3-flash-preview",
      messages: messages,
    });

    console.log(response.choices[0]);
  } catch (error) {
    console.error("Error calling Gemini API:", error);
  }
}

main();

বিশ্রাম

bash -c '
  base64_image=$(base64 -i "Path/to/agi/image.jpeg");
  curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer GEMINI_API_KEY" \
    -d "{
      \"model\": \"gemini-3-flash-preview\",
      \"messages\": [
        {
          \"role\": \"user\",
          \"content\": [
            { \"type\": \"text\", \"text\": \"What is in this image?\" },
            {
              \"type\": \"image_url\",
              \"image_url\": { \"url\": \"data:image/jpeg;base64,${base64_image}\" }
            }
          ]
        }
      ]
    }"
'

একটি ছবি তৈরি করুন

gemini-2.5-flash-image অথবা gemini-3-pro-image-preview ব্যবহার করে একটি ইমেজ তৈরি করুন। সমর্থিত প্যারামিটারগুলোর মধ্যে রয়েছে prompt , model , n , size , এবং response_format । এখানে বা extra_body সেকশনে তালিকাভুক্ত নয় এমন অন্য যেকোনো প্যারামিটার কম্প্যাটিবিলিটি লেয়ার দ্বারা নীরবে উপেক্ষা করা হবে।

পাইথন

import base64
from openai import OpenAI
from PIL import Image
from io import BytesIO

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
)

response = client.images.generate(
    model="gemini-2.5-flash-image",
    prompt="a portrait of a sheepadoodle wearing a cape",
    response_format='b64_json',
    n=1,
)

for image_data in response.data:
  image = Image.open(BytesIO(base64.b64decode(image_data.b64_json)))
  image.show()

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: "GEMINI_API_KEY",
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

async function main() {
  const image = await openai.images.generate(
    {
      model: "gemini-2.5-flash-image",
      prompt: "a portrait of a sheepadoodle wearing a cape",
      response_format: "b64_json",
      n: 1,
    }
  );

  console.log(image.data);
}

main();

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/images/generations" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer GEMINI_API_KEY" \
  -d '{
        "model": "gemini-2.5-flash-image",
        "prompt": "a portrait of a sheepadoodle wearing a cape",
        "response_format": "b64_json",
        "n": 1,
      }'

একটি ভিডিও তৈরি করুন

Sora-সামঞ্জস্যপূর্ণ /v1/videos এন্ডপয়েন্টের মাধ্যমে veo-3.1-generate-preview ব্যবহার করে একটি ভিডিও তৈরি করুন। সমর্থিত শীর্ষ-স্তরের প্যারামিটারগুলো হলো prompt এবং modelduration_seconds , image , এবং aspect_ratio এর মতো অতিরিক্ত প্যারামিটারগুলো extra_body সাথে অবশ্যই পাস করতে হবে। সমস্ত উপলব্ধ প্যারামিটারের জন্য extra_body বিভাগটি দেখুন।

ভিডিও তৈরি একটি দীর্ঘ প্রক্রিয়া যা একটি অপারেশন আইডি প্রদান করে, এবং এর সমাপ্তি যাচাই করার জন্য আপনি আইডিটি পোল করতে পারেন।

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

# Returns a Long Running Operation (status: processing)
response = client.videos.create(
    model="veo-3.1-generate-preview",
    prompt="A cinematic drone shot of a waterfall",
)

print(f"Operation ID: {response.id}")
print(f"Status: {response.status}")

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

async function main() {
    // Returns a Long Running Operation (status: processing)
    const response = await openai.videos.create({
        model: "veo-3.1-generate-preview",
        prompt: "A cinematic drone shot of a waterfall",
    });

    console.log(`Operation ID: ${response.id}`);
    console.log(`Status: ${response.status}`);
}

main();

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/videos" \
  -H "Authorization: Bearer $GEMINI_API_KEY" \
  -F "model=veo-3.1-generate-preview" \
  -F "prompt=A cinematic drone shot of a waterfall"

ভিডিওর অবস্থা দেখুন

ভিডিও তৈরি প্রক্রিয়াটি অ্যাসিঙ্ক্রোনাস। স্ট্যাটাস জানতে এবং কাজ শেষ হলে চূড়ান্ত ভিডিও URL পেতে GET /v1/videos/{id} ব্যবহার করুন:

পাইথন

import time
from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

# Poll until video is ready
video_id = response.id  # From the create call
while True:
    video = client.videos.retrieve(video_id)
    if video.status == "completed":
        print(f"Video URL: {video.url}")
        break
    elif video.status == "failed":
        print(f"Generation failed: {video.error}")
        break
    print(f"Status: {video.status}. Waiting...")
    time.sleep(10)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

async function main() {
    // Poll until video is ready
    const videoId = response.id;  // From the create call
    while (true) {
        const video = await openai.videos.retrieve(videoId);
        if (video.status === "completed") {
            console.log(`Video URL: ${video.url}`);
            break;
        } else if (video.status === "failed") {
            console.log(`Generation failed: ${video.error}`);
            break;
        }
        console.log(`Status: ${video.status}. Waiting...`);
        await new Promise(resolve => setTimeout(resolve, 10000));
    }
}

main();

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/videos/VIDEO_ID" \
  -H "Authorization: Bearer $GEMINI_API_KEY"

শ্রবণ বোধগম্যতা

অডিও ইনপুট বিশ্লেষণ করুন:

পাইথন

import base64
from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

with open("/path/to/your/audio/file.wav", "rb") as audio_file:
  base64_audio = base64.b64encode(audio_file.read()).decode('utf-8')

response = client.chat.completions.create(
    model="gemini-3-flash-preview",
    messages=[
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Transcribe this audio",
        },
        {
              "type": "input_audio",
              "input_audio": {
                "data": base64_audio,
                "format": "wav"
          }
        }
      ],
    }
  ],
)

print(response.choices[0].message.content)

জাভাস্ক্রিপ্ট

import fs from "fs";
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "GEMINI_API_KEY",
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

const audioFile = fs.readFileSync("/path/to/your/audio/file.wav");
const base64Audio = Buffer.from(audioFile).toString("base64");

async function main() {
  const response = await client.chat.completions.create({
    model: "gemini-3-flash-preview",
    messages: [
      {
        role: "user",
        content: [
          {
            type: "text",
            text: "Transcribe this audio",
          },
          {
            type: "input_audio",
            input_audio: {
              data: base64Audio,
              format: "wav",
            },
          },
        ],
      },
    ],
  });

  console.log(response.choices[0].message.content);
}

main();

বিশ্রাম

bash -c '
  base64_audio=$(base64 -i "/path/to/your/audio/file.wav");
  curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer GEMINI_API_KEY" \
    -d "{
      \"model\": \"gemini-3-flash-preview\",
      \"messages\": [
        {
          \"role\": \"user\",
          \"content\": [
            { \"type\": \"text\", \"text\": \"Transcribe this audio file.\" },
            {
              \"type\": \"input_audio\",
              \"input_audio\": {
                \"data\": \"${base64_audio}\",
                \"format\": \"wav\"
              }
            }
          ]
        }
      ]
    }"
'

কাঠামোগত আউটপুট

জেমিনি মডেলগুলো আপনার সংজ্ঞায়িত যেকোনো কাঠামোতে JSON অবজেক্ট আউটপুট করতে পারে।

পাইথন

from pydantic import BaseModel
from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

class CalendarEvent(BaseModel):
    name: str
    date: str
    participants: list[str]

completion = client.beta.chat.completions.parse(
    model="gemini-3-flash-preview",
    messages=[
        {"role": "system", "content": "Extract the event information."},
        {"role": "user", "content": "John and Susan are going to an AI conference on Friday."},
    ],
    response_format=CalendarEvent,
)

print(completion.choices[0].message.parsed)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";
import { zodResponseFormat } from "openai/helpers/zod";
import { z } from "zod";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai"
});

const CalendarEvent = z.object({
  name: z.string(),
  date: z.string(),
  participants: z.array(z.string()),
});

const completion = await openai.chat.completions.parse({
  model: "gemini-3-flash-preview",
  messages: [
    { role: "system", content: "Extract the event information." },
    { role: "user", content: "John and Susan are going to an AI conference on Friday" },
  ],
  response_format: zodResponseFormat(CalendarEvent, "event"),
});

const event = completion.choices[0].message.parsed;
console.log(event);

এমবেডিং

টেক্সট এমবেডিং টেক্সট স্ট্রিংগুলোর পারস্পরিক সম্পর্ক পরিমাপ করে এবং এটি জেমিনি এপিআই (Gemini API) ব্যবহার করে তৈরি করা যায়। আপনি মাল্টিমোডাল এমবেডিংয়ের জন্য gemini-embedding-2-preview অথবা শুধুমাত্র টেক্সট এমবেডিংয়ের জন্য gemini-embedding-001 ব্যবহার করতে পারেন।

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.embeddings.create(
    input="Your text string goes here",
    model="gemini-embedding-2-preview"
)

print(response.data[0].embedding)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "GEMINI_API_KEY",
    baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"
});

async function main() {
  const embedding = await openai.embeddings.create({
    model: "gemini-embedding-2-preview",
    input: "Your text string goes here",
  });

  console.log(embedding);
}

main();

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/openai/embeddings" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer GEMINI_API_KEY" \
-d '{
    "input": "Your text string goes here",
    "model": "gemini-embedding-2-preview"
  }'

ব্যাচ এপিআই

আপনি OpenAI লাইব্রেরি ব্যবহার করে ব্যাচ জব তৈরি করতে, সেগুলো জমা দিতে এবং সেগুলোর অবস্থা পরীক্ষা করতে পারেন।

আপনাকে JSONL ফাইলটি OpenAI ইনপুট ফরম্যাটে প্রস্তুত করতে হবে। উদাহরণস্বরূপ:

{"custom_id": "request-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gemini-3-flash-preview", "messages": [{"role": "user", "content": "Tell me a one-sentence joke."}]}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gemini-3-flash-preview", "messages": [{"role": "user", "content": "Why is the sky blue?"}]}}

ব্যাচের জন্য ওপেনএআই সামঞ্জস্যতা একটি ব্যাচ তৈরি করা, কাজের অবস্থা পর্যবেক্ষণ করা এবং ব্যাচের ফলাফল দেখার সুবিধা দেয়।

বর্তমানে আপলোড এবং ডাউনলোডের সামঞ্জস্যতা সমর্থিত নয়। এর পরিবর্তে, নিম্নলিখিত উদাহরণটিতে ফাইল আপলোড এবং ডাউনলোডের জন্য genai ক্লায়েন্ট ব্যবহার করা হয়েছে, ঠিক যেমনটি জেমিনি ব্যাচ এপিআই (Gemini Batch API) ব্যবহারের ক্ষেত্রে করা হয়।

পাইথন

from openai import OpenAI

# Regular genai client for uploads & downloads
from google import genai
client = genai.Client()

openai_client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

# Upload the JSONL file in OpenAI input format, using regular genai SDK
uploaded_file = client.files.upload(
    file='my-batch-requests.jsonl',
    config=types.UploadFileConfig(display_name='my-batch-requests', mime_type='jsonl')
)

# Create batch
batch = openai_client.batches.create(
    input_file_id=batch_input_file_id,
    endpoint="/v1/chat/completions",
    completion_window="24h"
)

# Wait for batch to finish (up to 24h)
while True:
    batch = client.batches.retrieve(batch.id)
    if batch.status in ('completed', 'failed', 'cancelled', 'expired'):
        break
    print(f"Batch not finished. Current state: {batch.status}. Waiting 30 seconds...")
    time.sleep(30)
print(f"Batch finished: {batch}")

# Download results in OpenAI output format, using regular genai SDK
file_content = genai_client.files.download(file=batch.output_file_id).decode('utf-8')

# See batch_output JSONL in OpenAI output format
for line in file_content.splitlines():
    print(line)    

OpenAI SDK ব্যাচ এপিআই (Batch API) ব্যবহার করে এমবেডিং তৈরি করাও সমর্থন করে। এটি করার জন্য, create মেথডের endpoint ফিল্ডটিকে একটি এমবেডিংস এন্ডপয়েন্ট দিয়ে পরিবর্তন করুন, এবং সেইসাথে JSONL ফাইলের urlmodel কী-গুলোও পরিবর্তন করুন:

# JSONL file using embeddings model and endpoint
# {"custom_id": "request-1", "method": "POST", "url": "/v1/embeddings", "body": {"model": "ggemini-embedding-001", "messages": [{"role": "user", "content": "Tell me a one-sentence joke."}]}}
# {"custom_id": "request-2", "method": "POST", "url": "/v1/embeddings", "body": {"model": "gemini-embedding-001", "messages": [{"role": "user", "content": "Why is the sky blue?"}]}}

# ...

# Create batch step with embeddings endpoint
batch = openai_client.batches.create(
    input_file_id=batch_input_file_id,
    endpoint="/v1/embeddings",
    completion_window="24h"
)

একটি সম্পূর্ণ উদাহরণের জন্য OpenAI কম্প্যাটিবিলিটি কুকবুকের ব্যাচ এমবেডিং জেনারেশন বিভাগটি দেখুন।

extra_body দিয়ে মিথুন রাশির বৈশিষ্ট্যগুলি সক্রিয় করুন

জেমিনিতে এমন বেশ কিছু বৈশিষ্ট্য রয়েছে যা ওপেনএআই মডেলে পাওয়া যায় না, কিন্তু ` extra_body ফিল্ড ব্যবহার করে সেগুলো সক্রিয় করা যায়।

প্যারামিটার প্রকার এন্ডপয়েন্ট বর্ণনা
cached_content পাঠ্য চ্যাট মিথুন রাশির সাধারণ কন্টেন্ট ক্যাশের সাথে সঙ্গতিপূর্ণ।
thinking_config বস্তু চ্যাট মিথুন রাশির থিঙ্কিংকনফিগ-এর সাথে সামঞ্জস্যপূর্ণ।
aspect_ratio পাঠ্য ছবি আউটপুট অ্যাসপেক্ট রেশিও (যেমন, "16:9" , "1:1" , "9:16" )।
generation_config বস্তু ছবি জেমিনি জেনারেশন কনফিগারেশন অবজেক্ট (যেমন, {"responseModalities": ["IMAGE"], "candidateCount": 2} )।
safety_settings তালিকা ছবি কাস্টম নিরাপত্তা থ্রেশহোল্ড ফিল্টার (যেমন, [{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"}] )।
tools তালিকা ছবি গ্রাউন্ডিং সক্ষম করে (যেমন, [{"google_search": {}}] )। শুধুমাত্র gemini-3-pro-image-preview এর জন্য।
aspect_ratio পাঠ্য ভিডিও আউটপুট ভিডিওর ডাইমেনশন (ল্যান্ডস্কেপের জন্য 16:9 , পোর্ট্রেটের জন্য 9:16 )। নির্দিষ্ট করে না দেওয়া হলে, size থেকে ম্যাপ ব্যবহৃত হবে।
resolution পাঠ্য ভিডিও আউটপুট রেজোলিউশন ( 720p , 1080p , 4K )। দ্রষ্টব্য: 1080p এবং 4K আপস্যাম্পলার পাইপলাইন চালু করে।
duration_seconds পূর্ণসংখ্যা ভিডিও জেনারেশন দৈর্ঘ্য (মান: 4 , 6 , 8 )। reference_images , ইন্টারপোলেশন বা এক্সটেনশন ব্যবহার করার সময় এর মান অবশ্যই 8 হতে হবে।
frame_rate পাঠ্য ভিডিও ভিডিও আউটপুটের ফ্রেম রেট (যেমন, "24" )।
input_reference পাঠ্য ভিডিও ভিডিও তৈরির জন্য রেফারেন্স ইনপুট।
extend_video_id পাঠ্য ভিডিও বিদ্যমান ভিডিওর আইডি, যা সম্প্রসারিত করতে হবে।
negative_prompt পাঠ্য ভিডিও বাদ দেওয়ার মতো আইটেম (যেমন, "shaky camera" )।
seed পূর্ণসংখ্যা ভিডিও নির্ধারিত প্রজন্মের জন্য পূর্ণসংখ্যা।
style পাঠ্য ভিডিও ভিজ্যুয়াল স্টাইলিং (ডিফল্ট cinematic , সোশ্যাল মিডিয়ার জন্য অপ্টিমাইজ করা creative )।
person_generation পাঠ্য ভিডিও ব্যক্তি তৈরি নিয়ন্ত্রণ করে ( allow_adult , allow_all , dont_allow )।
reference_images তালিকা ভিডিও স্টাইল বা চরিত্রের রেফারেন্সের জন্য সর্বোচ্চ ৩টি ছবি (বেস৬৪ অ্যাসেট)।
image পাঠ্য ভিডিও ভিডিও তৈরির শর্তারোপের জন্য Base64-এনকোডেড প্রাথমিক ইনপুট ছবি।
last_frame বস্তু ভিডিও ইন্টারপোলেশনের জন্য চূড়ান্ত চিত্র ( image প্রথম ফ্রেম হিসেবে প্রয়োজন)।

extra_body ব্যবহারের উদাহরণ

extra_body ব্যবহার করে cached_content সেট করার একটি উদাহরণ নিচে দেওয়া হলো:

পাইথন

from openai import OpenAI

client = OpenAI(
    api_key=MY_API_KEY,
    base_url="https://generativelanguage.googleapis.com/v1beta/"
)

stream = client.chat.completions.create(
    model="gemini-3-flash-preview",
    n=1,
    messages=[
        {
            "role": "user",
            "content": "Summarize the video"
        }
    ],
    stream=True,
    stream_options={'include_usage': True},
    extra_body={
        'extra_body':
        {
            'google': {
              'cached_content': "cachedContents/0000aaaa1111bbbb2222cccc3333dddd4444eeee"
          }
        }
    }
)

for chunk in stream:
    print(chunk)
    print(chunk.usage.to_dict())

মডেলদের তালিকা

উপলব্ধ জেমিনি মডেলগুলির তালিকা দেখুন:

পাইথন

from openai import OpenAI

client = OpenAI(
  api_key="GEMINI_API_KEY",
  base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

models = client.models.list()
for model in models:
  print(model.id)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: "GEMINI_API_KEY",
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

async function main() {
  const list = await openai.models.list();

  for await (const model of list) {
    console.log(model);
  }
}
main();

বিশ্রাম

curl https://generativelanguage.googleapis.com/v1beta/openai/models \
-H "Authorization: Bearer GEMINI_API_KEY"

একটি মডেল পুনরুদ্ধার করুন

একটি জেমিনি মডেল পুনরুদ্ধার করুন:

পাইথন

from openai import OpenAI

client = OpenAI(
  api_key="GEMINI_API_KEY",
  base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

model = client.models.retrieve("gemini-3-flash-preview")
print(model.id)

জাভাস্ক্রিপ্ট

import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: "GEMINI_API_KEY",
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

async function main() {
  const model = await openai.models.retrieve("gemini-3-flash-preview");
  console.log(model.id);
}

main();

বিশ্রাম

curl https://generativelanguage.googleapis.com/v1beta/openai/models/gemini-3-flash-preview \
-H "Authorization: Bearer GEMINI_API_KEY"

বর্তমান সীমাবদ্ধতা

ফিচার সাপোর্ট প্রসারিত করার কাজ চলার কারণে OpenAI লাইব্রেরিগুলোর জন্য সাপোর্ট এখনও বিটা পর্যায়ে রয়েছে।

সমর্থিত প্যারামিটার বা আসন্ন ফিচার সম্পর্কে আপনার কোনো প্রশ্ন থাকলে, অথবা জেমিনি ব্যবহার শুরু করতে গিয়ে কোনো সমস্যায় পড়লে, আমাদের ডেভেলপার ফোরামে যোগ দিন।

এরপর কী?

আরও বিস্তারিত উদাহরণ অনুশীলন করতে আমাদের OpenAI Compatibility Colab ব্যবহার করে দেখুন।