|
|
@@ -4,13 +4,15 @@ import (
|
|
|
"fmt"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"net/http"
|
|
|
+ "one-api/common"
|
|
|
"one-api/constant"
|
|
|
"one-api/dto"
|
|
|
"one-api/model"
|
|
|
"one-api/relay"
|
|
|
"one-api/relay/channel/ai360"
|
|
|
- "one-api/relay/channel/moonshot"
|
|
|
"one-api/relay/channel/lingyiwanwu"
|
|
|
+ "one-api/relay/channel/moonshot"
|
|
|
+ relaycommon "one-api/relay/common"
|
|
|
relayconstant "one-api/relay/constant"
|
|
|
)
|
|
|
|
|
|
@@ -43,8 +45,9 @@ type OpenAIModels struct {
|
|
|
|
|
|
var openAIModels []OpenAIModels
|
|
|
var openAIModelsMap map[string]OpenAIModels
|
|
|
+var channelId2Models map[int][]string
|
|
|
|
|
|
-func init() {
|
|
|
+func getPermission() []OpenAIModelPermission {
|
|
|
var permission []OpenAIModelPermission
|
|
|
permission = append(permission, OpenAIModelPermission{
|
|
|
Id: "modelperm-LwHkVFn8AcMItP432fKKDIKJ",
|
|
|
@@ -60,7 +63,12 @@ func init() {
|
|
|
Group: nil,
|
|
|
IsBlocking: false,
|
|
|
})
|
|
|
+ return permission
|
|
|
+}
|
|
|
+
|
|
|
+func init() {
|
|
|
// https://platform.openai.com/docs/models/model-endpoint-compatibility
|
|
|
+ permission := getPermission()
|
|
|
for i := 0; i < relayconstant.APITypeDummy; i++ {
|
|
|
if i == relayconstant.APITypeAIProxyLibrary {
|
|
|
continue
|
|
|
@@ -85,7 +93,7 @@ func init() {
|
|
|
Id: modelName,
|
|
|
Object: "model",
|
|
|
Created: 1626777600,
|
|
|
- OwnedBy: "360",
|
|
|
+ OwnedBy: ai360.ChannelName,
|
|
|
Permission: permission,
|
|
|
Root: modelName,
|
|
|
Parent: nil,
|
|
|
@@ -128,6 +136,17 @@ func init() {
|
|
|
for _, model := range openAIModels {
|
|
|
openAIModelsMap[model.Id] = model
|
|
|
}
|
|
|
+ channelId2Models = make(map[int][]string)
|
|
|
+ for i := 1; i <= common.ChannelTypeDummy; i++ {
|
|
|
+ apiType := relayconstant.ChannelType2APIType(i)
|
|
|
+ if apiType == -1 || apiType == relayconstant.APITypeAIProxyLibrary {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ meta := &relaycommon.RelayInfo{ChannelType: i}
|
|
|
+ adaptor := relay.GetAdaptor(apiType)
|
|
|
+ adaptor.Init(meta, dto.GeneralOpenAIRequest{})
|
|
|
+ channelId2Models[i] = adaptor.GetModelList()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func ListModels(c *gin.Context) {
|
|
|
@@ -142,21 +161,39 @@ func ListModels(c *gin.Context) {
|
|
|
}
|
|
|
models := model.GetGroupModels(user.Group)
|
|
|
userOpenAiModels := make([]OpenAIModels, 0)
|
|
|
+ permission := getPermission()
|
|
|
for _, s := range models {
|
|
|
if _, ok := openAIModelsMap[s]; ok {
|
|
|
userOpenAiModels = append(userOpenAiModels, openAIModelsMap[s])
|
|
|
+ } else {
|
|
|
+ userOpenAiModels = append(userOpenAiModels, OpenAIModels{
|
|
|
+ Id: s,
|
|
|
+ Object: "model",
|
|
|
+ Created: 1626777600,
|
|
|
+ OwnedBy: "openai",
|
|
|
+ Permission: permission,
|
|
|
+ Root: s,
|
|
|
+ Parent: nil,
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
c.JSON(200, gin.H{
|
|
|
- "object": "list",
|
|
|
- "data": userOpenAiModels,
|
|
|
+ "success": true,
|
|
|
+ "data": userOpenAiModels,
|
|
|
})
|
|
|
}
|
|
|
|
|
|
func ChannelListModels(c *gin.Context) {
|
|
|
c.JSON(200, gin.H{
|
|
|
- "object": "list",
|
|
|
- "data": openAIModels,
|
|
|
+ "success": true,
|
|
|
+ "data": openAIModels,
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+func DashboardListModels(c *gin.Context) {
|
|
|
+ c.JSON(200, gin.H{
|
|
|
+ "success": true,
|
|
|
+ "data": channelId2Models,
|
|
|
})
|
|
|
}
|
|
|
|