From 5c63e8d943565a286efef2f0baaec237d42ab772 Mon Sep 17 00:00:00 2001 From: LydiaMuaCai Date: Tue, 5 Aug 2025 14:14:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A8=A1=E5=9E=8B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=83=A8=E5=88=86=20bailian=20model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/model/usecase/model.go | 58 ++++++++++++++++++++----- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/backend/internal/model/usecase/model.go b/backend/internal/model/usecase/model.go index 968706b..c266b26 100644 --- a/backend/internal/model/usecase/model.go +++ b/backend/internal/model/usecase/model.go @@ -5,6 +5,7 @@ import ( "context" "encoding/json" "fmt" + "io" "log/slog" "maps" "net/http" @@ -107,6 +108,13 @@ func (m *ModelUsecase) Check(ctx context.Context, req *domain.CheckModelReq) (*d config.APIVersion = "2024-10-21" } } + // 阿里云百炼模型支持流式和思考功能 + if req.Provider == consts.ModelProviderBaiLian { + config.ExtraFields = map[string]any{ + "stream": true, + "enable_thinking": true, + } + } if req.APIHeader != "" { client := getHttpClientWithAPIHeaderMap(req.APIHeader) if client != nil { @@ -117,16 +125,46 @@ func (m *ModelUsecase) Check(ctx context.Context, req *domain.CheckModelReq) (*d if err != nil { return nil, err } - resp, err := chatModel.Generate(ctx, []*schema.Message{ - schema.SystemMessage("You are a helpful assistant."), - schema.UserMessage("hi"), - }) - if err != nil { - return nil, err - } - content := resp.Content - if content == "" { - return nil, fmt.Errorf("generate failed") + // 阿里云百炼模型(不支持 翻译/OCR 模型的添加) + if req.Provider == consts.ModelProviderBaiLian { + msgs := []*schema.Message{ + schema.SystemMessage("You are a helpful assistant."), + schema.UserMessage("hi"), + } + stream, err := chatModel.Stream(ctx, msgs) + if err != nil { + return nil, err + } + var content string + for { + msg, err := stream.Recv() + if err != nil { + if err == io.EOF { + break + } + return nil, err + } + if msg.Content != "" { + content += msg.Content + } + } + + if content == "" { + return nil, fmt.Errorf("generate failed") + } + } else { + resp, err := chatModel.Generate(ctx, []*schema.Message{ + schema.SystemMessage("You are a helpful assistant."), + schema.UserMessage("hi"), + }) + if err != nil { + return nil, err + } + + content := resp.Content + if content == "" { + return nil, fmt.Errorf("generate failed") + } } return &domain.Model{ ModelType: req.Type,