مدلهای Gemini بااستفاده از کتابخانههای OpenAI (Python و TypeScript / Javascript) بههمراه REST API، با بهروزرسانی سه خط کد و استفاده از کلید Gemini API شما قابلدسترسی هستند. اگر ازقبل از کتابخانههای OpenAI استفاده نمیکنید، توصیه میکنیم مستقیماً Gemini API را فراخوانی کنید.
Python
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.8-flash",
messages=[
{ "role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Explain to me how AI works"
}
]
)
print(response.choices[0].message)
JavaScript
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.8-flash",
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.8-flash",
"messages": [
{
"role": "user",
"content": "Explain to me how AI works"
}
]
}'
چه چیزی تغییر کرده است؟ فقط سه خط!
api_key="GEMINI_API_KEY": «GEMINI_API_KEY» را با کلید Gemini API واقعی خودتان که میتوانید در Google AI Studio دریافت کنید جایگزین کنید.base_url="https://generativelanguage.googleapis.com/v1beta/openai/": This tells the OpenAI library to send requests to the Gemini API endpoint instead of the default URL.model="gemini-3.8-flash": انتخاب کردن مدل Gemini سازگار
درحال فکر کردن
مدلهای Gemini برای تفکر درباره مسائل پیچیده آموزش دیدهاند که این امر منجر به بهبود قابلتوجه استدلال میشود. Gemini API با پارامترهای اندیشیدن ارائه میشود که کنترل دقیقی بر میزان اندیشیدن مدل فراهم میکند.
مدلهای مختلف Gemini پیکربندیهای استدلال متفاوتی دارند، میتوانید ببینید که چگونه با تلاشهای استدلال OpenAI به شرح زیر مطابقت دارند:
reasoning_effort (OpenAI) |
thinking_level (Gemini 4 Argon) |
thinking_level (Gemini 3.1 Flash-Lite) |
thinking_level (Gemini 3 Flash) |
thinking_budget (Gemini 2.5) |
|---|---|---|---|---|
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" برای مدلهای 2.5 تنظیم کنید. استدلال را نمیتوان برای مدلهای Gemini 2.5 Pro یا 3 خاموش کرد.
Python
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.8-flash",
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)
JavaScript
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.8-flash",
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.8-flash",
"reasoning_effort": "low",
"messages": [
{
"role": "user",
"content": "Explain to me how AI works"
}
]
}'
مدلهای تفکر Gemini همچنین خلاصههای فکری تولید میکنند.
میتوانید از فیلد extra_body برای افزودن فیلدهای Gemini
به درخواستتان استفاده کنید.
توجه داشته باشید که reasoning_effort و thinking_level/thinking_budget عملکرد همپوشانی دارند، بنابراین نمیتوانند همزمان استفاده شوند.
Python
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.8-flash",
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)
JavaScript
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.8-flash",
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);
REST
curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer GEMINI_API_KEY" \
-d '{
"model": "gemini-3.8-flash",
"messages": [{"role": "user", "content": "Explain to me how AI works"}],
"extra_body": {
"google": {
"thinking_config": {
"thinking_level": "low",
"include_thoughts": true
}
}
}
}'
Gemini 3 از سازگاری OpenAI برای امضاهای فکری در تکمیل گپ API پشتیبانی میکند. مثال کامل را میتوانید در صفحه امضاهای فکری پیدا کنید.
جاریسازی
Gemini API از پاسخهای جاریسازی پشتیبانی میکند.
Python
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.8-flash",
messages=[
{
"role": "system",
"content": "You are a helpful assistant."
},
{ "role": "user",
"content": "Hello!"
}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta)
JavaScript
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.8-flash",
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();
REST
curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer GEMINI_API_KEY" \
-d '{
"model": "gemini-3.8-flash",
"messages": [
{"role": "user", "content": "Explain to me how AI works"}
],
"stream": true
}'
فراخوانی تابع
فراخوانی تابع دریافت بروندادهای داده ساختاریافته از مدلهای زایا را برای شما آسانتر میکند و در Gemini API پشتیبانی میشود.
Python
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.8-flash",
messages=messages,
tools=tools,
tool_choice="auto"
)
print(response)
JavaScript
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.8-flash",
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.8-flash",
"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"
}'
درک تصویر
مدلهای Gemini بهطور ذاتی چندوجهی هستند و در بسیاری از تکالیف دیداری رایج بهترین عملکرد را در کلاس خود ارائه میدهند.
Python
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.8-flash",
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])
JavaScript
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.8-flash",
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.8-flash\",
\"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 فهرست نشده باشد، بهطور بیصدا توسط لایه سازگاری نادیده گرفته خواهد شد.
Python
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()
JavaScript
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,
}'
تولید ویدیو
بااستفاده از veo-3.1-generate-preview ازطریق نقطه پایانی سازگار با Sora،
/v1/videos ویدیو تولید کنید. پارامترهای سطح بالای پشتیبانیشده prompt و model هستند. پارامترهای اضافی مثل duration_seconds، image، و aspect_ratio باید با extra_body ارسال شوند. برای همه پارامترهای دردسترس، بخش extra_body را ببینید.
تولید ویدیو عملیاتی طولانی است که شناسه عملیاتی را برمیگرداند که میتوانید برای تکمیل آن نظرسنجی کنید.
Python
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}")
JavaScript
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"
بررسی وضعیت ویدیو
تولید ویدیو ناهمزمان است. از GET /v1/videos/{id} برای نظرسنجی وضعیت
و بازیابی نشانی وب نهایی ویدیو پساز تکمیل استفاده کنید:
Python
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)
JavaScript
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();
REST
curl "https://generativelanguage.googleapis.com/v1beta/openai/videos/VIDEO_ID" \
-H "Authorization: Bearer $GEMINI_API_KEY"
درک صوتی
تجزیهوتحلیل ورودی صوتی:
Python
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.8-flash",
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)
JavaScript
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.8-flash",
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.8-flash\",
\"messages\": [
{
\"role\": \"user\",
\"content\": [
{ \"type\": \"text\", \"text\": \"Transcribe this audio file.\" },
{
\"type\": \"input_audio\",
\"input_audio\": {
\"data\": \"${base64_audio}\",
\"format\": \"wav\"
}
}
]
}
]
}"
'
برونداد ساختاریافته
مدلهای Gemini میتوانند اشیای JSON را در هر ساختاری که تعریف میکنید تولید کنند.
Python
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.8-flash",
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)
JavaScript
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.8-flash",
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 برای جاسازیهای فقط نوشتاری استفاده کنید.
Python
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)
JavaScript
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();
REST
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"
}'
Batch API
میتوانید کارهای دستهای ایجاد کنید، آنها را ارسال کنید، و وضعیت آنها را بااستفاده از کتابخانه OpenAI بررسی کنید.
باید فایل JSONL را در قالب ورودی OpenAI آماده کنید. برای مثال:
{"custom_id": "request-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gemini-3.8-flash", "messages": [{"role": "user", "content": "Tell me a one-sentence joke."}]}}
{"custom_id": "request-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gemini-3.8-flash", "messages": [{"role": "user", "content": "Why is the sky blue?"}]}}
سازگاری OpenAI برای Batch از ایجاد دسته، نظارت بر وضعیت کار، و مشاهده نتایج دسته پشتیبانی میکند.
درحالحاضر سازگاری برای بارگذاری و بارگیری پشتیبانی نمیشود. درعوض، مثال زیر از
کارخواه genai برای بارگذاری و بارگیری
فایلها استفاده میکند، همانند زمانی که از Batch API در Gemini استفاده میکنید.
Python
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 همچنین از تولید جاسازیها با Batch API پشتیبانی میکند. برای انجام این کار، فیلد endpoint روش create را برای نقطه پایانی جاسازیها و همچنین کلیدهای url و model را در فایل JSONL تغییر دهید:
# 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 مراجعه کنید.
استنتاج انعطافپذیر و اولویتدار
Gemini API ازنظر نام و منطق با پارامتر service_tier OpenAI مطابقت دارد،
محدودیتها را اعمال میکند و ترافیک را بهطور مناسب برای هر دو سطح استنتاج Flex و Priority هدایت میکند.
Python
from openai import OpenAI
client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
completion = client.chat.completions.create(
model="gemini-3.8-flash",
messages=[
{"role": "user", "content": "Write a short poem about clouds."}
],
service_tier="priority" # Or service_tier="flex"
)
print(completion)
وقتی بهطور صریح اختصاص داده نشده باشد، service_tier بهطور پیشفرض به standard تبدیل میشود که معادل
default برای OpenAI است.
در سند بهینهسازی درباره سطوح استنتاج بیشتر بدانید.
فعال کردن ویژگیهای Gemini با extra_body
چندین ویژگی پشتیبانیشده توسط Gemini وجود دارد که در مدلهای OpenAI دردسترس نیستند اما میتوانند بااستفاده از فیلد extra_body فعال شوند.
| پارامتر | نوع | نقطه پایانی | شرح |
|---|---|---|---|
cached_content |
نوشتار | گپ | با حافظه نهان محتوای عمومی Gemini مطابقت دارد. |
thinking_config |
شیء | گپ | با ThinkingConfig در Gemini مطابقت دارد. |
aspect_ratio |
نوشتار | تصاویر | نسبت ابعادی برونداد (مثلاً "16:9"، "1:1"، "9:16"). |
generation_config |
شیء | تصاویر | شیء پیکربندی تولید Gemini (برای نمونه، {"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 |
فهرست | ویدیو | حداکثر ۳ تصویر برای مرجع سبک/نویسه (داراییهای base64). |
image |
نوشتار | ویدیو | تصویر ورودی اولیه کدگذاریشده با Base64 برای شرطی کردن تولید ویدیو. |
last_frame |
شیء | ویدیو | تصویر نهایی برای درونیابی (به image بهعنوان قاب اول نیاز دارد). |
نمونه استفاده از extra_body
در اینجا مثالی از استفاده از extra_body برای تنظیم cached_content آورده شده است:
Python
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.8-flash",
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())
فهرست کردن مدلها
فهرست مدلهای Gemini دردسترس را دریافت کنید:
Python
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)
JavaScript
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();
REST
curl https://generativelanguage.googleapis.com/v1beta/openai/models \
-H "Authorization: Bearer GEMINI_API_KEY"
بازیابی مدل
بازیابی مدل Gemini:
Python
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.8-flash")
print(model.id)
JavaScript
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.8-flash");
console.log(model.id);
}
main();
استراحت
curl https://generativelanguage.googleapis.com/v1beta/openai/models/gemini-3.8-flash \
-H "Authorization: Bearer GEMINI_API_KEY"
محدودیتهای فعلی
درحالیکه پشتیبانی از ویژگی را گسترش میدهیم، پشتیبانی از کتابخانههای OpenAI هنوز در مرحله بتا است.
اگر درباره پارامترهای پشتیبانیشده، ویژگیهای آتی، یا هرگونه مشکلی در شروع کار با Gemini سؤال دارید، به تالار گفتمان توسعهدهندگان ما بپیوندید.
قدم بعدی چیست
برای کار کردن روی مثالهای دقیقتر، سازگاری با OpenAI در Colab را امتحان کنید.