| from typing import Optional, Union |
| from enum import Enum |
|
|
| from pydantic import BaseModel, Field |
|
|
|
|
| class Image2(BaseModel): |
| bytesBase64Encoded: str |
| gcsUri: Optional[str] = None |
| mimeType: Optional[str] = None |
|
|
|
|
| class Image3(BaseModel): |
| bytesBase64Encoded: Optional[str] = None |
| gcsUri: str |
| mimeType: Optional[str] = None |
|
|
|
|
| class Instance1(BaseModel): |
| image: Optional[Union[Image2, Image3]] = Field( |
| None, description='Optional image to guide video generation' |
| ) |
| prompt: str = Field(..., description='Text description of the video') |
|
|
|
|
| class PersonGeneration1(str, Enum): |
| ALLOW = 'ALLOW' |
| BLOCK = 'BLOCK' |
|
|
|
|
| class Parameters1(BaseModel): |
| aspectRatio: Optional[str] = Field(None, examples=['16:9']) |
| durationSeconds: Optional[int] = None |
| enhancePrompt: Optional[bool] = None |
| generateAudio: Optional[bool] = Field( |
| None, |
| description='Generate audio for the video. Only supported by veo 3 models.', |
| ) |
| negativePrompt: Optional[str] = None |
| personGeneration: Optional[PersonGeneration1] = None |
| sampleCount: Optional[int] = None |
| seed: Optional[int] = None |
| storageUri: Optional[str] = Field( |
| None, description='Optional Cloud Storage URI to upload the video' |
| ) |
|
|
|
|
| class VeoGenVidRequest(BaseModel): |
| instances: Optional[list[Instance1]] = None |
| parameters: Optional[Parameters1] = None |
|
|
|
|
| class VeoGenVidResponse(BaseModel): |
| name: str = Field( |
| ..., |
| description='Operation resource name', |
| examples=[ |
| 'projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8' |
| ], |
| ) |
|
|
|
|
| class VeoGenVidPollRequest(BaseModel): |
| operationName: str = Field( |
| ..., |
| description='Full operation name (from predict response)', |
| examples=[ |
| 'projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID' |
| ], |
| ) |
|
|
|
|
| class Video(BaseModel): |
| bytesBase64Encoded: Optional[str] = Field( |
| None, description='Base64-encoded video content' |
| ) |
| gcsUri: Optional[str] = Field(None, description='Cloud Storage URI of the video') |
| mimeType: Optional[str] = Field(None, description='Video MIME type') |
|
|
|
|
| class Error1(BaseModel): |
| code: Optional[int] = Field(None, description='Error code') |
| message: Optional[str] = Field(None, description='Error message') |
|
|
|
|
| class Response1(BaseModel): |
| field_type: Optional[str] = Field( |
| None, |
| alias='@type', |
| examples=[ |
| 'type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse' |
| ], |
| ) |
| raiMediaFilteredCount: Optional[int] = Field( |
| None, description='Count of media filtered by responsible AI policies' |
| ) |
| raiMediaFilteredReasons: Optional[list[str]] = Field( |
| None, description='Reasons why media was filtered by responsible AI policies' |
| ) |
| videos: Optional[list[Video]] = None |
|
|
|
|
| class VeoGenVidPollResponse(BaseModel): |
| done: Optional[bool] = None |
| error: Optional[Error1] = Field( |
| None, description='Error details if operation failed' |
| ) |
| name: Optional[str] = None |
| response: Optional[Response1] = Field( |
| None, description='The actual prediction response if done is true' |
| ) |
|
|