| 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"` |
| } |
|
|