Skip to main content

Sinh video với Veo 3 (Quy trình bất đồng bộ)

Việc tạo video là một tác vụ tốn nhiều tài nguyên và thời gian. Do đó, tương tác với mô hình veo 3 không diễn ra ngay lập tức mà theo một quy trình bất đồng bộ (asynchronous) gồm 3 bước.

Model được hỗ trợ: veo 3 (Google Vertex AI)

Tổng quan quy trình

  1. Bắt đầu tác vụ: Bạn gửi một yêu cầu chứa mô tả (prompt) để bắt đầu quá trình tạo video. API sẽ trả về một operation_name để bạn theo dõi.
  2. Kiểm tra trạng thái: Bạn sử dụng operation_name để hỏi API xem video đã được tạo xong chưa. Bạn cần lặp lại bước này cho đến khi nhận được trạng thái hoàn tất.
  3. Tải video: Khi video đã sẵn sàng, kết quả kiểm tra trạng thái sẽ chứa một URI (đường dẫn) đến file video. Bạn sử dụng URI này để tải video về.

Hướng dẫn chi tiết

Bước 1: Bắt đầu tạo video

Gửi một yêu cầu POST đến endpoint đặc biệt dành cho Veo.

Quan trọng

Do máy chủ proxy đang sử dụng cơ chế pass-through tới Google AI Studio, bạn sẽ sử dụng header x-goog-api-key thay cho header Authorization tiêu chuẩn.

curl -X POST https://api.thucchien.ai/gemini/v1beta/models/veo-3.0-generate-preview:predictLongRunning \
-H "Content-Type: application/json" \
-H "x-goog-api-key: <your_api_key>" \
-d '{
"instances": [{
"prompt": "A cinematic shot of a hummingbird flying in slow motion"
}]
}'

Nếu thành công, API sẽ trả về một JSON chứa name của tác vụ. Hãy lưu lại giá trị này.

{
"name": "models/veo-3.0-generate-preview/operations/idrk08ltkg0a"
}

Trong đó:

  • operation_name: là toàn bộ chuỗi models/veo-3.0-generate-preview/operations/idrk08ltkg0a.
  • operation_id: là phần định danh duy nhất của tác vụ, trong ví dụ này là idrk08ltkg0a. Bạn sẽ sử dụng ID này ở bước tiếp theo.

Bước 2: Kiểm tra trạng thái

Sử dụng operation_id (ví dụ: idrk08ltkg0a) bạn nhận được ở Bước 1 để xây dựng URL và gửi yêu cầu GET để kiểm tra trạng thái.

# URL kiểm tra trạng thái: https://api.thucchien.ai/gemini/v1beta/models/veo-3.0-generate-preview/operations/idrk08ltkg0a
curl https://api.thucchien.ai/gemini/v1beta/models/veo-3.0-generate-preview/operations/<operation_id> \
-H "x-goog-api-key: <your_api_key>"

Lặp lại yêu cầu này cho đến khi response chứa "done": true.

{
"name": "models/veo-3.0-generate-preview/operations/idrk08ltkg0a",
"done": true,
"response": {
"@type": "type.googleapis.com/google.ai.generativelanguage.v1beta.PredictLongRunningResponse",
"generateVideoResponse": {
"generatedSamples": [
{
"video": {
"uri": "https://generativelanguage.googleapis.com/v1beta/files/3j6svp4106e7:download?alt=media"
}
}
]
}
}
}

Khi tác vụ hoàn tất ("done": true), response sẽ chứa một trường uri. Từ URI này, chúng ta có thể trích xuất ra video_id, trong trường hợp này là 3j6svp4106e7. ID này được dùng để tải video ở bước cuối cùng.

Bước 3: Tải video

Sử dụng video_id (ví dụ: 3j6svp4106e7) đã trích xuất ở Bước 2 để tạo URL tải xuống cuối cùng thông qua proxy.

# URI gốc từ Google: https://generativelanguage.googleapis.com/v1beta/files/3j6svp4106e7:download?alt=media
# Đường dẫn tương đối cần dùng: v1beta/files/3j6svp4106e7:download?alt=media
# URL tải xuống qua proxy: https://api.thucchien.ai/gemini/download/v1beta/files/3j6svp4106e7:download?alt=media

curl https://api.thucchien.ai/gemini/download/v1beta/files/<video_id>:download?alt=media \
-H "x-goog-api-key: <your_api_key>" \
--output my_generated_video.mp4

Kết quả bạn sẽ có file video như sau:

Các tham số tùy chọn

Ngoài prompt, bạn có thể chỉ định thêm các tham số khác trong body của yêu cầu ở Bước 1 để kiểm soát video được tạo ra, ví dụ như thời lượng, chất lượng, v.v.

Để biết danh sách đầy đủ các tham số và cách sử dụng, vui lòng tham khảo tài liệu chính thức tại đây: Google AI for Developers - Video Generation.