dto.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package gemini
  2. // GeminiVideoGenerationConfig represents the Gemini API GenerateVideosConfig.
  3. // Reference: https://ai.google.dev/gemini-api/docs/video
  4. type GeminiVideoGenerationConfig struct {
  5. AspectRatio string `json:"aspectRatio,omitempty"`
  6. DurationSeconds int `json:"durationSeconds,omitempty"`
  7. NegativePrompt string `json:"negativePrompt,omitempty"`
  8. PersonGeneration string `json:"personGeneration,omitempty"`
  9. Resolution string `json:"resolution,omitempty"`
  10. NumberOfVideos int `json:"numberOfVideos,omitempty"`
  11. }
  12. // VeoImageInput represents an image input for Veo image-to-video.
  13. // Used by both Gemini and Vertex adaptors.
  14. type VeoImageInput struct {
  15. BytesBase64Encoded string `json:"bytesBase64Encoded"`
  16. MimeType string `json:"mimeType"`
  17. }
  18. // GeminiVideoPayload is the top-level request body for the Gemini API
  19. // models/{model}:generateVideos endpoint.
  20. type GeminiVideoPayload struct {
  21. Model string `json:"model,omitempty"`
  22. Prompt string `json:"prompt"`
  23. Image *VeoImageInput `json:"image,omitempty"`
  24. Config *GeminiVideoGenerationConfig `json:"config,omitempty"`
  25. // TODO: support referenceImages (style/asset references, up to 3 images)
  26. // TODO: support lastFrame (first+last frame interpolation, Veo 3.1)
  27. }
  28. type submitResponse struct {
  29. Name string `json:"name"`
  30. }
  31. type operationVideo struct {
  32. MimeType string `json:"mimeType"`
  33. BytesBase64Encoded string `json:"bytesBase64Encoded"`
  34. Encoding string `json:"encoding"`
  35. }
  36. type operationResponse struct {
  37. Name string `json:"name"`
  38. Done bool `json:"done"`
  39. Response struct {
  40. Type string `json:"@type"`
  41. RaiMediaFilteredCount int `json:"raiMediaFilteredCount"`
  42. Videos []operationVideo `json:"videos"`
  43. BytesBase64Encoded string `json:"bytesBase64Encoded"`
  44. Encoding string `json:"encoding"`
  45. Video string `json:"video"`
  46. GenerateVideoResponse struct {
  47. GeneratedVideos []struct {
  48. Video struct {
  49. URI string `json:"uri"`
  50. } `json:"video"`
  51. } `json:"generatedVideos"`
  52. } `json:"generateVideoResponse"`
  53. } `json:"response"`
  54. Error struct {
  55. Message string `json:"message"`
  56. } `json:"error"`
  57. }