คุณเรียกใช้ Gemini Omni 1.1 Flash ด้วย model id gemini-omni-1.1-flash ผ่าน Google’s Interactions API ไม่ใช่ generateContent endpoint ที่คุณใช้สำหรับโมเดลข้อความ นี่คือสิ่งแรกที่คนส่วนใหญ่สับสน หากคุณคัดลอกส่วนย่อยของข้อความ Gemini และสลับชื่อโมเดล คุณจะได้รับข้อผิดพลาด 404
คู่มือนี้จะนำคุณตั้งแต่เทอร์มินัลว่างเปล่าไปจนถึงการส่งคำขอสร้างวิดีโอที่ผ่านการทดสอบ คุณจะได้รับคีย์ ทำการเรียกใช้ครั้งแรกใน curl และ Python เรียนรู้พารามิเตอร์ที่มีอยู่ (และรายการที่น่าประหลาดใจที่ไม่มี) จัดการกับการตอบกลับขนาดใหญ่ และบันทึกทั้งหมดเป็นชุดทดสอบที่ทำซ้ำได้
โมเดลนี้เปิดตัวสู่สาธารณะ (GA) เมื่อวันที่ 27 สิงหาคม 2026 สำหรับสิ่งที่มาพร้อมกับโมเดลนี้ โปรดดู มีอะไรใหม่ใน Gemini Omni 1.1 Flash
สิ่งที่คุณต้องมีก่อนเริ่มต้น
- บัญชี Google สำหรับลงชื่อเข้าใช้ AI Studio
- คีย์ Gemini API จาก Google AI Studio
- เปิดใช้งานการเรียกเก็บเงิน Omni ไม่มีระดับฟรี (free tier) ซึ่งแตกต่างจาก ช่องทางฟรีสำหรับโมเดลข้อความ คำขอแรกของคุณมีค่าใช้จ่าย
- วิธีการส่งคำขอ HTTP: curl, Python SDK หรือไคลเอนต์ API
จัดเก็บคีย์เป็นตัวแปรสภาพแวดล้อม แทนที่จะวางลงในซอร์สโค้ด:
export GEMINI_API_KEY="your_key_here"
SDK อย่างเป็นทางการจะอ่านตัวแปรนั้นเอง ซึ่งช่วยให้ความลับของคุณไม่รั่วไหลไปยัง repository ของคุณ
การเรียกใช้การสร้างวิดีโอครั้งแรกของคุณ
endpoint คือการส่งคำขอแบบ POST ไปยัง /v1beta/interactions นี่คือตัวอย่างใน curl:
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-omni-1.1-flash",
"input": "A marble rolling fast on a chain reaction style track, continuous smooth shot."
}'
สองฟิลด์: โมเดลและอินพุต นี่คือคำขอขั้นต่ำทั้งหมด การตอบกลับจะส่งวิดีโอที่สร้างขึ้นเป็น base64 ใน output_video.data
ใน Python ให้ติดตั้ง SDK ด้วย pip install google-genai จากนั้น:
import base64
from google import genai
client = genai.Client() # reads GEMINI_API_KEY from the environment
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input="A marble rolling fast on a chain reaction style track, continuous smooth shot.",
)
with open("marble.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
JavaScript ใช้รูปแบบเดียวกันกับ @google/genai:
import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});
const interaction = await ai.interactions.create({
model: 'gemini-omni-1.1-flash',
input: 'A marble rolling fast on a chain reaction style track, continuous smooth shot.',
});
if (interaction.output_video?.data) {
fs.writeFileSync('marble.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}
การสร้างใช้เวลา ความล่าช้าจะขึ้นอยู่กับระยะเวลา ความละเอียด และโหลด API ปัจจุบัน ดังนั้นควรกำหนด client timeout ให้มากพอ ก่อนที่คุณจะตัดสินว่ามีบางอย่างผิดปกติ
การควบคุมความละเอียดและอัตราส่วนภาพ
ทุกอย่างเกี่ยวกับรูปแบบเอาต์พุตอยู่ใน response_format:
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input="A drone shot of a mountain landscape at sunrise.",
response_format={
"type": "video",
"aspect_ratio": "16:9",
"resolution": "1080p",
},
)
ค่าที่ยอมรับ:
| ฟิลด์ | ค่า | ค่าเริ่มต้น |
|---|---|---|
type |
video |
video |
aspect_ratio |
16:9, 9:16 |
16:9 |
resolution |
360p, 720p, 1080p, 4k |
720p |
delivery |
base64 แบบอินไลน์, uri |
อินไลน์ |
ร่างวิดีโอที่ 360p มันสร้างได้เร็วกว่า 720p ถึง 60% และมีค่าใช้จ่ายเพียงหนึ่งในสาม ทำให้การลองสร้างพรอมต์ 15 ครั้งของคุณมีค่าใช้จ่ายเท่ากับการสร้าง 5 ครั้งในอดีต เรนเดอร์ฉบับที่คุณเก็บไว้ด้วยความละเอียดที่สูงขึ้น 1080p และ 4k เป็นการเพิ่มสเกลของเฟรมที่สร้างขึ้น ไม่ใช่การเรนเดอร์แบบเนทีฟ รายละเอียดราคา แสดงให้เห็นว่าแต่ละระดับมีค่าใช้จ่ายต่อวินาทีเท่าใด
พารามิเตอร์ที่ไม่มีอยู่
รายการนี้สำคัญกว่ารายการข้างต้น เพราะมิฉะนั้นคุณจะเสียเวลาไปทั้งบ่ายโดยเปล่าประโยชน์:
- ไม่มีคำสั่งระบบ (system instructions)
- ไม่มี
temperature - ไม่มี
top_p - ไม่มีลำดับหยุด (stop sequences)
- ไม่มีฟิลด์พรอมต์เชิงลบ (negative prompt)
หากคุณต้องการยกเว้นบางสิ่งออกจากภาพ ให้เขียนข้อยกเว้นนั้นลงในพรอมต์โดยตรง ตัวอย่างในเอกสารประกอบก็ทำเช่นนั้น: “ใช้ภาพวาดเป็นเพียงแนวทางสำหรับการเคลื่อนไหวเท่านั้น ห้ามแสดงภาพวาดในวิดีโอสุดท้าย”
อินพุตภาพ, คีย์เฟรม และการอ้างอิง
ส่งรายการ (list) แทนสตริง (string) เมื่อคุณต้องการรวมสื่อ ภาพเป็นวิดีโอ:
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
{"type": "text", "text": "turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video"},
],
)
รูปภาพสองภาพจะกลายเป็นเฟรมแรกและเฟรมสุดท้าย และโมเดลจะสร้างการเคลื่อนไหวระหว่างภาพเหล่านั้น:
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "image", "data": first_frame_b64, "mime_type": "image/jpeg"},
{"type": "image", "data": last_frame_b64, "mime_type": "image/jpeg"},
{"type": "text", "text": "A smooth cinematic transition from a lush green forest at sunrise to a snowy forest under a starry night sky."},
],
)
การอ้างอิงวิดีโอทำงานในลักษณะเดียวกันผ่าน Files API โดยจำกัดที่คลิปสามคลิป คลิปละสามวินาที เสียงในคลิปเหล่านั้นจะถูกละเว้น โมเดลจะอ่านเพื่อการเคลื่อนไหวและลักษณะที่ปรากฏ
การแก้ไขแบบหลายขั้นตอน
นี่คือสิ่งที่แยก Omni ออกจาก endpoint การแปลงข้อความเป็นวิดีโอธรรมดา สร้างครั้งเดียว จากนั้นแก้ไขแบบสนทนาโดยส่ง ID การโต้ตอบครั้งก่อนหน้า:
res1 = client.interactions.create(
model="gemini-omni-1.1-flash",
input="A woman playing violin outdoors.",
)
res2 = client.interactions.create(
model="gemini-omni-1.1-flash",
previous_interaction_id=res1.id,
input="Make the violin invisible.",
)
ไม่ต้องอัปโหลดใหม่ ไม่ต้องอธิบายฉากใหม่ กลไกเดียวกันนี้ขับเคลื่อนการขยายฉาก ซึ่งมีอธิบายไว้ใน คู่มือการขยายฉาก 40 วินาที
การจัดการวิดีโอขนาดเกิน 4MB
ไฟล์ใดๆ ที่มีขนาดใหญ่กว่า 4MB จะถูกส่งกลับเป็น URI แทนที่จะเป็น base64 แบบอินไลน์ และไฟล์จะต้องประมวลผลเสร็จสิ้นก่อนที่คุณจะสามารถดาวน์โหลดได้ นี่คือข้อผิดพลาดที่คนส่วนใหญ่พบเมื่อใช้ความละเอียด 1080p: ตัวจัดการของพวกเขาอ่าน output_video.data แล้วไม่พบอะไรเลย และรายงานความล้มเหลวแบบเงียบๆ
ขอให้ส่งแบบ URI อย่างชัดเจนและตรวจสอบสถานะ:
import time
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input="A beautiful sunset.",
response_format={"type": "video", "delivery": "uri"},
)
video_output = interaction.output_video
file_name = video_output.uri.split("/")[-1]
while True:
f_info = client.files.get(name=f"files/{file_name}")
if f_info.state.name == "ACTIVE":
break
if f_info.state.name == "FAILED":
raise RuntimeError("Generation failed.")
time.sleep(5)
video_bytes = client.files.download(file=video_output.uri)
with open("output.mp4", "wb") as f:
f.write(video_bytes)
เขียนตัวจัดการการตอบกลับของคุณให้ยอมรับทั้งสองรูปแบบตั้งแต่เริ่มต้น ความละเอียดจะเปลี่ยนรูปแบบที่คุณได้รับ
ทดสอบคำขอใน Apidog
เมื่อการเรียกใช้งานได้ ปัญหาจะเปลี่ยนไป ตอนนี้คุณมี endpoint ที่มีราคาแพง ช้า และไม่สามารถคาดการณ์ผลลัพธ์ได้ อยู่ในเส้นทางสำคัญของคุณ และคุณจำเป็นต้องรู้ว่าเมื่อใดที่มันเปลี่ยนพฤติกรรม คำสั่ง curl ชั่วคราวในประวัติ shell ไม่ได้บอกคุณสิ่งนั้น
ตั้งค่าครั้งเดียวใน Apidog:
- สร้างโปรเจกต์และสภาพแวดล้อม ใส่
GEMINI_API_KEYและMODEL_IDในตัวแปรสภาพแวดล้อม เพื่อให้คีย์ไม่ถูกบันทึกในคำขอ - เพิ่มคำขอ ส่ง POST ไปยัง
https://generativelanguage.googleapis.com/v1beta/interactionsพร้อมกับ JSON body ที่มีmodelและinputอ้างอิงตัวแปรด้วย{{MODEL_ID}} - เพิ่มระยะเวลาไทม์เอาต์ การสร้างวิดีโอใช้เวลานานกว่าการสร้างข้อความมาก และ client timeout เริ่มต้นจะตัดการเชื่อมต่อ
- เพิ่มเงื่อนไขการยืนยัน (assertions) ตรวจสอบรหัสสถานะ ตรวจสอบว่า
output_videoมีอยู่ และตรวจสอบรูปแบบการตอบกลับที่คุณคาดหวังที่ความละเอียดของคุณ นี่คือเงื่อนไขการยืนยันที่ตรวจจับการสลับระหว่างอินไลน์กับ URI - ทำซ้ำสำหรับแต่ละประเภทงาน บันทึกคำขอหนึ่งรายการสำหรับ text-to-video, image-to-video และ extension เมื่อ Google เปิดตัว Omni 1.2 คุณจะเรียกใช้คำขอสามรายการและทราบได้ในไม่กี่นาทีว่ามีอะไรเปลี่ยนแปลงไป
Apidog ไม่ได้สร้างวิดีโอและไม่ใช่เฟรมเวิร์ก AI เป็นที่ที่คุณสร้างคำขอ ส่งคำขอ และรักษาการตอบกลับให้เป็นไปตามมาตรฐานที่คุณกำหนด ดาวน์โหลด Apidog หากคุณต้องการมีเครื่องมือนี้ก่อนที่คุณจะขยายการใช้งาน
ข้อผิดพลาดและวิธีแก้ไขทั่วไป
- ข้อผิดพลาด 404 ที่ endpoint คุณกำลังเรียกใช้
/v1beta/models/gemini-omni-1.1-flash:generateContentOmni ใช้/v1beta/interactionsโดยมีโมเดลอยู่ใน body output_video.dataว่างเปล่า การตอบกลับมาในรูปแบบ URI เนื่องจากวิดีโอมีขนาดเกิน 4MB ให้อ่านoutput_video.uriและดาวน์โหลดผ่าน Files API- ไม่พบโมเดล ตรวจสอบ
gemini-omni-flash-previewในการตั้งค่าของคุณ endpoint นั้นจะเลิกใช้งานในวันที่ 30 กันยายน 2026 - การแก้ไขวิดีโอที่อัปโหลดล้มเหลว การแก้ไขวิดีโอที่อัปโหลดไม่สามารถใช้งานได้ใน EEA, สวิตเซอร์แลนด์ และสหราชอาณาจักร แต่วิดีโอที่สร้างโดยโมเดลยังคงใช้งานได้
- คำขอขยายถูกปฏิเสธ วิดีโออินพุตมีข้อจำกัดที่ 10 วินาที การขยายจะเพิ่มได้เฉพาะที่ส่วนท้ายเท่านั้น และคุณไม่สามารถเพิ่มบทสนทนาเมื่อขยายวิดีโอที่อัปโหลด
คำถามที่พบบ่อย (FAQ)
- Gemini Omni ใช้ endpoint ใด?
POST https://generativelanguage.googleapis.com/v1beta/interactionsโดยมีgemini-omni-1.1-flashอยู่ในส่วน body ของคำขอ - Gemini Omni API มีระดับฟรีหรือไม่? ไม่มี การสร้างทุกครั้งมีค่าใช้จ่าย โมเดลข้อความเท่านั้นที่มีช่องทางฟรีใน AI Studio
- ฉันสามารถตั้งค่า temperature หรือ negative prompt ได้หรือไม่? ไม่ได้ คำสั่งระบบ (system instructions), temperature,
top_p, ลำดับหยุด (stop sequences) และ negative prompts ทั้งหมดไม่รองรับ ให้ใส่ข้อจำกัดในข้อความพรอมต์ - ฉันจะสร้างวิดีโอแนวตั้งได้อย่างไร? ตั้งค่า
aspect_ratioเป็น9:16ในresponse_format - วิดีโอที่สร้างขึ้นมีลายน้ำหรือไม่? มี เอาต์พุตทั้งหมดมี SynthID ซึ่งมองไม่เห็นสำหรับผู้ชมและสามารถตรวจจับได้ด้วยโปรแกรม
- สิ่งนี้เปรียบเทียบกับ Veo API ได้อย่างไร? เป็น endpoint ที่แตกต่างกัน ราคาแตกต่างกัน และจุดแข็งที่แตกต่างกัน Omni 1.1 Flash vs Veo 3.1 ครอบคลุมถึงข้อดีข้อเสีย และ คู่มือ Veo 3.1 API มีรายละเอียดเฉพาะของการผสานรวมนั้น
การผสานรวมทั้งหมดประกอบด้วยสองฟิลด์ที่จำเป็นและตัวจัดการการตอบกลับที่สามารถจัดการได้ทั้งสองรูปแบบการส่งมอบ เริ่มด้วยการเรียกใช้ 360p ให้ใช้งานได้ก่อน บันทึกพร้อมการยืนยัน จากนั้นค่อยเพิ่มความละเอียดเมื่อคุณมั่นใจในระบบ อ่าน เอกสารทางการของ Omni สำหรับรายการพารามิเตอร์ที่พัฒนาอยู่
