| package dto | |
| import ( | |
| "strings" | |
| "github.com/QuantumNous/new-api/types" | |
| "github.com/gin-gonic/gin" | |
| ) | |
| type EmbeddingOptions struct { | |
| Seed int `json:"seed,omitempty"` | |
| Temperature *float64 `json:"temperature,omitempty"` | |
| TopK int `json:"top_k,omitempty"` | |
| TopP *float64 `json:"top_p,omitempty"` | |
| FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` | |
| PresencePenalty *float64 `json:"presence_penalty,omitempty"` | |
| NumPredict int `json:"num_predict,omitempty"` | |
| NumCtx int `json:"num_ctx,omitempty"` | |
| } | |
| type EmbeddingRequest struct { | |
| Model string `json:"model"` | |
| Input any `json:"input"` | |
| EncodingFormat string `json:"encoding_format,omitempty"` | |
| Dimensions int `json:"dimensions,omitempty"` | |
| User string `json:"user,omitempty"` | |
| Seed float64 `json:"seed,omitempty"` | |
| Temperature *float64 `json:"temperature,omitempty"` | |
| TopP float64 `json:"top_p,omitempty"` | |
| FrequencyPenalty float64 `json:"frequency_penalty,omitempty"` | |
| PresencePenalty float64 `json:"presence_penalty,omitempty"` | |
| } | |
| func (r *EmbeddingRequest) GetTokenCountMeta() *types.TokenCountMeta { | |
| var texts = make([]string, 0) | |
| inputs := r.ParseInput() | |
| for _, input := range inputs { | |
| texts = append(texts, input) | |
| } | |
| return &types.TokenCountMeta{ | |
| CombineText: strings.Join(texts, "\n"), | |
| } | |
| } | |
| func (r *EmbeddingRequest) IsStream(c *gin.Context) bool { | |
| return false | |
| } | |
| func (r *EmbeddingRequest) SetModelName(modelName string) { | |
| if modelName != "" { | |
| r.Model = modelName | |
| } | |
| } | |
| func (r *EmbeddingRequest) ParseInput() []string { | |
| if r.Input == nil { | |
| return make([]string, 0) | |
| } | |
| var input []string | |
| switch r.Input.(type) { | |
| case string: | |
| input = []string{r.Input.(string)} | |
| case []any: | |
| input = make([]string, 0, len(r.Input.([]any))) | |
| for _, item := range r.Input.([]any) { | |
| if str, ok := item.(string); ok { | |
| input = append(input, str) | |
| } | |
| } | |
| } | |
| return input | |
| } | |
| type EmbeddingResponseItem struct { | |
| Object string `json:"object"` | |
| Index int `json:"index"` | |
| Embedding []float64 `json:"embedding"` | |
| } | |
| type EmbeddingResponse struct { | |
| Object string `json:"object"` | |
| Data []EmbeddingResponseItem `json:"data"` | |
| Model string `json:"model"` | |
| Usage `json:"usage"` | |
| } | |