| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package dto
- import (
- "encoding/json"
- "one-api/types"
- "strings"
- "github.com/gin-gonic/gin"
- )
- type ImageRequest struct {
- Model string `json:"model"`
- Prompt string `json:"prompt" binding:"required"`
- N uint `json:"n,omitempty"`
- Size string `json:"size,omitempty"`
- Quality string `json:"quality,omitempty"`
- ResponseFormat string `json:"response_format,omitempty"`
- Style json.RawMessage `json:"style,omitempty"`
- User json.RawMessage `json:"user,omitempty"`
- ExtraFields json.RawMessage `json:"extra_fields,omitempty"`
- Background json.RawMessage `json:"background,omitempty"`
- Moderation json.RawMessage `json:"moderation,omitempty"`
- OutputFormat json.RawMessage `json:"output_format,omitempty"`
- OutputCompression json.RawMessage `json:"output_compression,omitempty"`
- PartialImages json.RawMessage `json:"partial_images,omitempty"`
- // Stream bool `json:"stream,omitempty"`
- Watermark *bool `json:"watermark,omitempty"`
- }
- func (i *ImageRequest) GetTokenCountMeta() *types.TokenCountMeta {
- var sizeRatio = 1.0
- var qualityRatio = 1.0
- if strings.HasPrefix(i.Model, "dall-e") {
- // Size
- if i.Size == "256x256" {
- sizeRatio = 0.4
- } else if i.Size == "512x512" {
- sizeRatio = 0.45
- } else if i.Size == "1024x1024" {
- sizeRatio = 1
- } else if i.Size == "1024x1792" || i.Size == "1792x1024" {
- sizeRatio = 2
- }
- if i.Model == "dall-e-3" && i.Quality == "hd" {
- qualityRatio = 2.0
- if i.Size == "1024x1792" || i.Size == "1792x1024" {
- qualityRatio = 1.5
- }
- }
- }
- // not support token count for dalle
- return &types.TokenCountMeta{
- CombineText: i.Prompt,
- MaxTokens: 1584,
- ImagePriceRatio: sizeRatio * qualityRatio * float64(i.N),
- }
- }
- func (i *ImageRequest) IsStream(c *gin.Context) bool {
- return false
- }
- type ImageResponse struct {
- Data []ImageData `json:"data"`
- Created int64 `json:"created"`
- }
- type ImageData struct {
- Url string `json:"url"`
- B64Json string `json:"b64_json"`
- RevisedPrompt string `json:"revised_prompt"`
- }
|