Add extra field to model instance (#14203)

### What problem does this PR solve?

Now each model support region with different URL

### Type of change

- [x] New Feature (non-breaking change which adds functionality)

---------

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
Jin Hai
2026-04-20 15:31:12 +08:00
committed by GitHub
parent 939933649a
commit af2ed416a7
22 changed files with 398 additions and 550 deletions

View File

@@ -192,7 +192,7 @@ func (h *ProviderHandler) ListModels(c *gin.Context) {
})
return
}
models, err := dao.GetModelProviderManager().ListModels(providerName)
providerModels, err := dao.GetModelProviderManager().ListModels(providerName)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": common.CodeNotFound,
@@ -203,7 +203,7 @@ func (h *ProviderHandler) ListModels(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"message": "success",
"data": models,
"data": providerModels,
})
}
@@ -274,7 +274,7 @@ func (h *ProviderHandler) CreateProviderInstance(c *gin.Context) {
userID := c.GetString("user_id")
_, err := h.modelProviderService.CreateProviderInstance(providerName, req.InstanceName, req.APIKey, userID)
_, err := h.modelProviderService.CreateProviderInstance(providerName, req.InstanceName, req.APIKey, userID, "default")
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": common.CodeServerError,
@@ -458,7 +458,7 @@ func (h *ProviderHandler) ListInstanceModels(c *gin.Context) {
})
return
}
models, err := h.modelProviderService.ListInstanceModels(providerName, instanceName, c.GetString("user_id"))
modelInstances, err := h.modelProviderService.ListInstanceModels(providerName, instanceName, c.GetString("user_id"))
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": common.CodeNotFound,
@@ -469,7 +469,7 @@ func (h *ProviderHandler) ListInstanceModels(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"message": "success",
"data": models,
"data": modelInstances,
})
}
@@ -618,6 +618,7 @@ func (h *ProviderHandler) ChatToModel(c *gin.Context) {
MaxTokens: nil,
Temperature: nil,
TopP: nil,
Region: nil,
}
// Stream response using sender function (best performance, no channel)
@@ -629,8 +630,19 @@ func (h *ProviderHandler) ChatToModel(c *gin.Context) {
return
}
chatConfig := models.ChatConfig{
Reasoning: &req.Reasoning,
Stream: &req.Stream,
Stop: &[]string{},
DoSample: nil,
MaxTokens: nil,
Temperature: nil,
TopP: nil,
Region: nil,
}
// Non-stream response
response, errorCode, err := h.modelProviderService.ChatToModel(providerName, instanceName, modelName, userID, req.Message)
response, errorCode, err := h.modelProviderService.ChatToModel(providerName, instanceName, modelName, userID, req.Message, &chatConfig)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"code": errorCode,

View File

@@ -76,9 +76,9 @@ func (h *TenantHandler) GetModels(c *gin.Context) {
}
type SetModelRequest struct {
ModelProvider string `json:"model_provider" binding:"required"`
ModelInstance string `json:"model_instance" binding:"required"`
ModelName string `json:"model_name" binding:"required"`
ModelProvider string `json:"model_provider"`
ModelInstance string `json:"model_instance"`
ModelName string `json:"model_name"`
ModelType string `json:"model_type" binding:"required"`
}