up
This commit is contained in:
+21
-8
@@ -273,16 +273,16 @@ func ChatProxy(c *gin.Context, chatReq *ChatCompletionRequest) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
c.Writer.WriteHeader(resp.StatusCode)
|
|
||||||
for key, value := range resp.Header {
|
|
||||||
for _, v := range value {
|
|
||||||
c.Writer.Header().Add(key, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
teeReader := io.TeeReader(resp.Body, c.Writer)
|
|
||||||
|
|
||||||
var result string
|
var result string
|
||||||
if chatReq.Stream {
|
if chatReq.Stream {
|
||||||
|
for key, value := range resp.Header {
|
||||||
|
for _, v := range value {
|
||||||
|
c.Writer.Header().Add(key, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
c.Writer.WriteHeader(resp.StatusCode)
|
||||||
|
teeReader := io.TeeReader(resp.Body, c.Writer)
|
||||||
// 流式响应
|
// 流式响应
|
||||||
scanner := bufio.NewScanner(teeReader)
|
scanner := bufio.NewScanner(teeReader)
|
||||||
|
|
||||||
@@ -318,15 +318,18 @@ func ChatProxy(c *gin.Context, chatReq *ChatCompletionRequest) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// 处理非流式响应
|
// 处理非流式响应
|
||||||
body, err := io.ReadAll(teeReader)
|
body, err := io.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error reading response body:", err)
|
fmt.Println("Error reading response body:", err)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var opiResp ChatCompletionResponse
|
var opiResp ChatCompletionResponse
|
||||||
if err := json.Unmarshal(body, &opiResp); err != nil {
|
if err := json.Unmarshal(body, &opiResp); err != nil {
|
||||||
log.Println("Error parsing JSON:", err)
|
log.Println("Error parsing JSON:", err)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if opiResp.Choices != nil && len(opiResp.Choices) > 0 {
|
if opiResp.Choices != nil && len(opiResp.Choices) > 0 {
|
||||||
@@ -343,6 +346,16 @@ func ChatProxy(c *gin.Context, chatReq *ChatCompletionRequest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
resp.Body = io.NopCloser(bytes.NewBuffer(body))
|
||||||
|
|
||||||
|
for k, v := range resp.Header {
|
||||||
|
c.Writer.Header().Set(k, v[0])
|
||||||
|
}
|
||||||
|
c.Writer.WriteHeader(resp.StatusCode)
|
||||||
|
_, err = io.Copy(c.Writer, resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
usagelog.CompletionCount = tokenizer.NumTokensFromStr(result, chatReq.Model)
|
usagelog.CompletionCount = tokenizer.NumTokensFromStr(result, chatReq.Model)
|
||||||
usagelog.Cost = fmt.Sprintf("%.6f", tokenizer.Cost(usagelog.Model, usagelog.PromptCount, usagelog.CompletionCount))
|
usagelog.Cost = fmt.Sprintf("%.6f", tokenizer.Cost(usagelog.Model, usagelog.PromptCount, usagelog.CompletionCount))
|
||||||
|
|||||||
Reference in New Issue
Block a user