From 7dd1cf1e24c05f17d1a8f1fdf1a34ab55e565fd2 Mon Sep 17 00:00:00 2001 From: moondie <528893699@qq.com> Date: Fri, 22 Dec 2023 04:06:45 +0800 Subject: [PATCH] =?UTF-8?q?Update=20relay-ali.go:=20=E6=94=B9=E8=BF=9Bstre?= =?UTF-8?q?am=E6=A8=A1=E5=BC=8F=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=81=94?= =?UTF-8?q?=E7=BD=91=E6=90=9C=E7=B4=A2=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通义千问支持stream的增量模式,不需要每次去掉上次的前缀;实测qwen-max联网模式效果不错,添加了联网模式。如果别的模型有问题可以改为单独给qwen-max开放 --- controller/relay-ali.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/controller/relay-ali.go b/controller/relay-ali.go index 65626f6a..e1b4708c 100644 --- a/controller/relay-ali.go +++ b/controller/relay-ali.go @@ -23,10 +23,13 @@ type AliInput struct { } type AliParameters struct { - TopP float64 `json:"top_p,omitempty"` - TopK int `json:"top_k,omitempty"` - Seed uint64 `json:"seed,omitempty"` - EnableSearch bool `json:"enable_search,omitempty"` + TopP float64 `json:"top_p,omitempty"` + TopK int `json:"top_k,omitempty"` + Seed uint64 `json:"seed,omitempty"` + EnableSearch bool `json:"enable_search,omitempty"` + IncrementalOutput bool `json:"incremental_output,omitempty"` + Stream bool `json:"stream,omitempty"` + } type AliChatRequest struct { @@ -95,12 +98,14 @@ func requestOpenAI2Ali(request GeneralOpenAIRequest) *AliChatRequest { Input: AliInput{ Messages: messages, }, - //Parameters: AliParameters{ // ChatGPT's parameters are not compatible with Ali's + Parameters: AliParameters{ // ChatGPT's parameters are not compatible with Ali's // TopP: request.TopP, // TopK: 50, // //Seed: 0, - // //EnableSearch: false, - //}, + EnableSearch: true, + IncrementalOutput=true, + Stream=request.Stream, + }, } } @@ -202,7 +207,7 @@ func streamResponseAli2OpenAI(aliResponse *AliChatResponse) *ChatCompletionsStre Id: aliResponse.RequestId, Object: "chat.completion.chunk", Created: common.GetTimestamp(), - Model: "ernie-bot", + Model: "qwen", Choices: []ChatCompletionsStreamResponseChoice{choice}, } return &response @@ -240,7 +245,7 @@ func aliStreamHandler(c *gin.Context, resp *http.Response) (*OpenAIErrorWithStat stopChan <- true }() setEventStreamHeaders(c) - lastResponseText := "" + //lastResponseText := "" c.Stream(func(w io.Writer) bool { select { case data := <-dataChan: @@ -256,8 +261,8 @@ func aliStreamHandler(c *gin.Context, resp *http.Response) (*OpenAIErrorWithStat usage.TotalTokens = aliResponse.Usage.InputTokens + aliResponse.Usage.OutputTokens } response := streamResponseAli2OpenAI(&aliResponse) - response.Choices[0].Delta.Content = strings.TrimPrefix(response.Choices[0].Delta.Content, lastResponseText) - lastResponseText = aliResponse.Output.Text + //response.Choices[0].Delta.Content = strings.TrimPrefix(response.Choices[0].Delta.Content, lastResponseText) + //lastResponseText = aliResponse.Output.Text jsonResponse, err := json.Marshal(response) if err != nil { common.SysError("error marshalling stream response: " + err.Error())