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