เรียกใช้ Gemini Omni 1.1 Flash Video API ด้วย Interactions API
คุณเรียกใช้ Gemini Omni 1.1 Flash ด้วย model id gemini-omni-1.1-flash ผ่าน Google’s Interactions API ไม่ใช่ generateContent endpoint สำหรับโมเดลข้อความ หากคัดลอกตัวอย่างของ Gemini แล้วเปลี่ยนชื่อโมเดล คุณจะได้รับข้อผิดพลาด 404
คู่มือนี้จะพาคุณตั้งแต่การเตรียมสภาพแวดล้อม ไปจนถึงการส่งคำขอสร้างวิดีโอด้วย curl, Python และ JavaScript รวมถึงการจัดการการตอบกลับแบบ base64 และ URI และการสร้างชุดทดสอบที่ทำซ้ำได้
โมเดลนี้เปิดตัวสู่สาธารณะ (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
ส่งคำขอสร้างวิดีโอครั้งแรก
ส่งคำขอแบบ POST ไปยัง /v1beta/interactions:
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."
}'
คำขอขั้นต่ำมีเพียงสองฟิลด์คือ model และ input การตอบกลับจะมีวิดีโอในรูปแบบ 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 เป็นการเพิ่มสเกลของเฟรมที่สร้างขึ้น ไม่ใช่การเรนเดอร์แบบเนทีฟ ดู รายละเอียดราคา Gemini Omni 1.1 Flash เพื่อดูค่าใช้จ่ายต่อวินาทีของแต่ละระดับ
พารามิเตอร์ที่ไม่รองรับ
Gemini Omni 1.1 Flash ไม่มีพารามิเตอร์ต่อไปนี้:
- System instructions
temperaturetop_p- Stop sequences
- Negative prompt
หากต้องการยกเว้นบางสิ่ง ให้เขียนไว้ในพรอมต์โดยตรง เช่น:
ใช้ภาพวาดเป็นเพียงแนวทางสำหรับการเคลื่อนไหวเท่านั้น ห้ามแสดงภาพวาดในวิดีโอสุดท้าย
อินพุตภาพ คีย์เฟรม และวิดีโออ้างอิง
เมื่อรวมสื่อ ให้ส่ง input เป็นรายการแทนสตริง ตัวอย่าง image-to-video:
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 โดยรองรับสูงสุด 3 คลิป คลิปละ 3 วินาที เสียงในคลิปจะถูกละเว้น โมเดลจะใช้คลิปเพื่อทำความเข้าใจการเคลื่อนไหวและลักษณะที่ปรากฏ
แก้ไขวิดีโอแบบหลายขั้นตอน
Omni รองรับการแก้ไขแบบสนทนา โดยส่ง previous_interaction_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)
ตัวจัดการการตอบกลับควรรองรับทั้ง output_video.data และ output_video.uri ตั้งแต่แรก เพราะความละเอียดอาจทำให้รูปแบบการส่งมอบเปลี่ยนไป
ทดสอบคำขอด้วย Apidog
เมื่อคำขอทำงานแล้ว สิ่งสำคัญคือการตรวจจับการเปลี่ยนแปลงของ endpoint ที่มีราคาแพง ใช้เวลานาน และให้ผลลัพธ์ไม่แน่นอน คำสั่ง curl ชั่วคราวใน shell history ไม่เพียงพอสำหรับงานนี้
ตั้งค่าใน Apidog:
- สร้างโปรเจกต์และสภาพแวดล้อม เพิ่ม
GEMINI_API_KEYและMODEL_IDเป็นตัวแปรสภาพแวดล้อม เพื่อไม่ให้คีย์ถูกบันทึกไว้ในคำขอ - สร้างคำขอ
POSTไปยังhttps://generativelanguage.googleapis.com/v1beta/interactions - ใส่ JSON body ที่มี
modelและinputโดยอ้างอิงโมเดลด้วย{{MODEL_ID}} - เพิ่ม timeout ที่ยาวพอ เพราะการสร้างวิดีโอช้ากว่าการสร้างข้อความมาก
- เพิ่ม assertions เพื่อตรวจสอบ status code, การมีอยู่ของ
output_videoและรูปแบบการตอบกลับที่คาดหวัง - สร้างชุดทดสอบแยกสำหรับ text-to-video, image-to-video และ extension
Assertions ควรตรวจจับได้ว่าการตอบกลับเปลี่ยนจาก inline เป็น URI หรือไม่ เมื่อ Google เปิดตัว Omni 1.2 คุณจะสามารถเรียกใช้ทั้งสามคำขอและตรวจสอบความเปลี่ยนแปลงได้ภายในไม่กี่นาที
Apidog ไม่ได้สร้างวิดีโอและไม่ใช่เฟรมเวิร์ก AI แต่เป็นเครื่องมือสำหรับสร้าง ส่ง และตรวจสอบคำขอให้เป็นไปตามมาตรฐานที่กำหนด หากต้องการเตรียมเครื่องมือก่อนขยายการใช้งาน ให้ ดาวน์โหลด Apidog
ข้อผิดพลาดที่พบบ่อย
-
404 จาก endpoint — คุณกำลังเรียก
/v1beta/models/gemini-omni-1.1-flash:generateContentให้เปลี่ยนเป็น/v1beta/interactionsและใส่โมเดลไว้ใน body -
output_video.dataว่างเปล่า — การตอบกลับใช้ URI เพราะวิดีโอมีขนาดเกิน 4MB ให้อ่านoutput_video.uriแล้วดาวน์โหลดผ่าน Files API -
ไม่พบโมเดล — ตรวจสอบการตั้งค่า
gemini-omni-flash-previewซึ่ง endpoint นี้จะเลิกใช้งานในวันที่ 30 กันยายน 2026 - แก้ไขวิดีโอที่อัปโหลดไม่สำเร็จ — ฟีเจอร์นี้ไม่พร้อมใช้งานใน EEA, สวิตเซอร์แลนด์ และสหราชอาณาจักร แต่วิดีโอที่สร้างโดยโมเดลยังใช้งานได้
- คำขอขยายถูกปฏิเสธ — วิดีโออินพุตจำกัดที่ 10 วินาที การขยายทำได้เฉพาะส่วนท้าย และไม่สามารถเพิ่มบทสนทนาเมื่อขยายวิดีโอที่อัปโหลด
คำถามที่พบบ่อย
Gemini Omni ใช้ endpoint ใด?
ใช้ POST https://generativelanguage.googleapis.com/v1beta/interactions โดยใส่ gemini-omni-1.1-flash ใน body
Gemini Omni API มี free tier หรือไม่?
ไม่มี การสร้างทุกครั้งมีค่าใช้จ่าย เฉพาะโมเดลข้อความเท่านั้นที่มีช่องทางฟรีใน AI Studio
ตั้งค่า temperature หรือ negative prompt ได้หรือไม่?
ไม่ได้ System instructions, temperature, top_p, stop sequences และ negative prompts ไม่รองรับ ให้ใส่ข้อจำกัดไว้ในพรอมต์
สร้างวิดีโอแนวตั้งได้อย่างไร?
ตั้งค่า aspect_ratio เป็น 9:16 ใน response_format
วิดีโอมีลายน้ำหรือไม่?
มี เอาต์พุตทั้งหมดมี SynthID ซึ่งผู้ชมมองไม่เห็น แต่สามารถตรวจจับได้ด้วยโปรแกรม
Gemini Omni เปรียบเทียบกับ Veo API อย่างไร?
เป็นคนละ endpoint มีราคาและจุดแข็งแตกต่างกัน อ่าน Omni 1.1 Flash vs Veo 3.1 สำหรับข้อดีข้อเสีย และดูรายละเอียดการผสานรวมใน คู่มือ Veo 3.1 API
การผสานรวมพื้นฐานมีเพียงสองฟิลด์ที่จำเป็น พร้อมตัวจัดการการตอบกลับที่รองรับทั้ง inline และ URI เริ่มจาก 360p ให้ทำงานได้ก่อน บันทึกคำขอพร้อม assertions แล้วจึงเพิ่มความละเอียดเมื่อระบบเสถียร
อ่าน เอกสารทางการของ Omni สำหรับรายการพารามิเตอร์ล่าสุดที่อาจมีการเปลี่ยนแปลง
Top comments (0)