mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-22 16:36:47 +08:00
Go: add gitee and siliconflow as model provider (#14336)
### What problem does this PR solve? As title ### 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:
@@ -643,9 +643,12 @@ func (h *ProviderHandler) EnableOrDisableModel(c *gin.Context) {
|
||||
}
|
||||
|
||||
type ChatToModelRequest struct {
|
||||
Message string `json:"message" binding:"required"`
|
||||
Stream bool `json:"stream"`
|
||||
Thinking bool `json:"thinking"`
|
||||
ModelName string `json:"model_name" binding:"required"`
|
||||
Message string `json:"message" binding:"required"`
|
||||
Stream bool `json:"stream"`
|
||||
Thinking bool `json:"thinking"`
|
||||
Effort *string `json:"effort"`
|
||||
Verbosity *string `json:"verbosity"`
|
||||
}
|
||||
|
||||
func (h *ProviderHandler) ChatToModel(c *gin.Context) {
|
||||
@@ -667,15 +670,6 @@ func (h *ProviderHandler) ChatToModel(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
modelName := c.Param("model_name")
|
||||
if modelName == "" {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"code": 400,
|
||||
"message": "Model name is required",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
var req ChatToModelRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
println("JSON bind error: %v (type: %T)", err, err)
|
||||
@@ -688,6 +682,28 @@ func (h *ProviderHandler) ChatToModel(c *gin.Context) {
|
||||
|
||||
userID := c.GetString("user_id")
|
||||
|
||||
if !req.Thinking {
|
||||
req.Effort = nil
|
||||
req.Verbosity = nil
|
||||
}
|
||||
|
||||
apiConfig := models.APIConfig{
|
||||
ApiKey: nil,
|
||||
Region: nil,
|
||||
}
|
||||
|
||||
chatConfig := models.ChatConfig{
|
||||
Thinking: &req.Thinking,
|
||||
Stream: &req.Stream,
|
||||
Stop: &[]string{},
|
||||
DoSample: nil,
|
||||
MaxTokens: nil,
|
||||
Temperature: nil,
|
||||
TopP: nil,
|
||||
Effort: req.Effort,
|
||||
Verbosity: req.Verbosity,
|
||||
}
|
||||
|
||||
// Check if it's a stream request
|
||||
if req.Stream {
|
||||
// Set SSE headers
|
||||
@@ -720,23 +736,8 @@ func (h *ProviderHandler) ChatToModel(c *gin.Context) {
|
||||
return nil
|
||||
}
|
||||
|
||||
apiConfig := models.APIConfig{
|
||||
ApiKey: nil,
|
||||
Region: nil,
|
||||
}
|
||||
|
||||
chatConfig := models.ChatConfig{
|
||||
Thinking: &req.Thinking,
|
||||
Stream: &req.Stream,
|
||||
Stop: &[]string{},
|
||||
DoSample: nil,
|
||||
MaxTokens: nil,
|
||||
Temperature: nil,
|
||||
TopP: nil,
|
||||
}
|
||||
|
||||
// Stream response using sender function (best performance, no channel)
|
||||
errorCode := h.modelProviderService.ChatToModelStreamWithSender(providerName, instanceName, modelName, userID, req.Message, &apiConfig, &chatConfig, sender)
|
||||
errorCode := h.modelProviderService.ChatToModelStreamWithSender(providerName, instanceName, req.ModelName, userID, req.Message, &apiConfig, &chatConfig, sender)
|
||||
|
||||
if errorCode != common.CodeSuccess {
|
||||
c.SSEvent("error", "stream failed")
|
||||
@@ -744,23 +745,8 @@ func (h *ProviderHandler) ChatToModel(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
apiConfig := models.APIConfig{
|
||||
ApiKey: nil,
|
||||
Region: nil,
|
||||
}
|
||||
|
||||
chatConfig := models.ChatConfig{
|
||||
Thinking: &req.Thinking,
|
||||
Stream: &req.Stream,
|
||||
Stop: &[]string{},
|
||||
DoSample: nil,
|
||||
MaxTokens: nil,
|
||||
Temperature: nil,
|
||||
TopP: nil,
|
||||
}
|
||||
|
||||
// Non-stream response
|
||||
response, errorCode, err := h.modelProviderService.ChatToModel(providerName, instanceName, modelName, userID, req.Message, &apiConfig, &chatConfig)
|
||||
response, errorCode, err := h.modelProviderService.ChatToModel(providerName, instanceName, req.ModelName, userID, req.Message, &apiConfig, &chatConfig)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"code": errorCode,
|
||||
|
||||
Reference in New Issue
Block a user