| package dto | |
| import ( | |
| "fmt" | |
| "strings" | |
| "github.com/QuantumNous/new-api/types" | |
| "github.com/gin-gonic/gin" | |
| ) | |
| type RerankRequest struct { | |
| Documents []any `json:"documents"` | |
| Query string `json:"query"` | |
| Model string `json:"model"` | |
| TopN int `json:"top_n,omitempty"` | |
| ReturnDocuments *bool `json:"return_documents,omitempty"` | |
| MaxChunkPerDoc int `json:"max_chunk_per_doc,omitempty"` | |
| OverLapTokens int `json:"overlap_tokens,omitempty"` | |
| } | |
| func (r *RerankRequest) IsStream(c *gin.Context) bool { | |
| return false | |
| } | |
| func (r *RerankRequest) GetTokenCountMeta() *types.TokenCountMeta { | |
| var texts = make([]string, 0) | |
| for _, document := range r.Documents { | |
| texts = append(texts, fmt.Sprintf("%v", document)) | |
| } | |
| if r.Query != "" { | |
| texts = append(texts, r.Query) | |
| } | |
| return &types.TokenCountMeta{ | |
| CombineText: strings.Join(texts, "\n"), | |
| } | |
| } | |
| func (r *RerankRequest) SetModelName(modelName string) { | |
| if modelName != "" { | |
| r.Model = modelName | |
| } | |
| } | |
| func (r *RerankRequest) GetReturnDocuments() bool { | |
| if r.ReturnDocuments == nil { | |
| return false | |
| } | |
| return *r.ReturnDocuments | |
| } | |
| type RerankResponseResult struct { | |
| Document any `json:"document,omitempty"` | |
| Index int `json:"index"` | |
| RelevanceScore float64 `json:"relevance_score"` | |
| } | |
| type RerankDocument struct { | |
| Text any `json:"text"` | |
| } | |
| type RerankResponse struct { | |
| Results []RerankResponseResult `json:"results"` | |
| Usage Usage `json:"usage"` | |
| } | |