mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-11-16 21:23:44 +08:00
✨ feat: Add support for retrieving model list from providers (#188)
* ✨ feat: Add support for retrieving model list from providers * 🔖 chore: Custom channel automatically get the model
This commit is contained in:
@@ -57,6 +57,7 @@ func getOpenAIConfig(baseURL string) base.ProviderConfig {
|
||||
ImagesGenerations: "/v1/images/generations",
|
||||
ImagesEdit: "/v1/images/edits",
|
||||
ImagesVariations: "/v1/images/variations",
|
||||
ModelList: "/v1/models",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
29
providers/openai/model.go
Normal file
29
providers/openai/model.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package openai
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (p *OpenAIProvider) GetModelList() ([]string, error) {
|
||||
fullRequestURL := p.GetFullRequestURL(p.Config.ModelList, "")
|
||||
headers := p.GetRequestHeaders()
|
||||
|
||||
req, err := p.Requester.NewRequest(http.MethodGet, fullRequestURL, p.Requester.WithHeader(headers))
|
||||
if err != nil {
|
||||
return nil, errors.New("new_request_failed")
|
||||
}
|
||||
|
||||
response := &ModelListResponse{}
|
||||
_, errWithCode := p.Requester.SendRequest(req, response, false)
|
||||
if errWithCode != nil {
|
||||
return nil, errors.New(errWithCode.Message)
|
||||
}
|
||||
|
||||
var modelList []string
|
||||
for _, model := range response.Data {
|
||||
modelList = append(modelList, model.Id)
|
||||
}
|
||||
|
||||
return modelList, nil
|
||||
}
|
||||
@@ -73,3 +73,15 @@ type OpenAIUsageResponse struct {
|
||||
//DailyCosts []OpenAIUsageDailyCost `json:"daily_costs"`
|
||||
TotalUsage float64 `json:"total_usage"` // unit: 0.01 dollar
|
||||
}
|
||||
|
||||
type ModelListResponse struct {
|
||||
Object string `json:"object"`
|
||||
Data []ModelDetails `json:"data"`
|
||||
}
|
||||
|
||||
type ModelDetails struct {
|
||||
Id string `json:"id"`
|
||||
Object string `json:"object"`
|
||||
Created int64 `json:"created"`
|
||||
OwnedBy string `json:"owned_by"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user