|
|
@@ -6,13 +6,14 @@ import (
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
- "github.com/gin-gonic/gin"
|
|
|
"io"
|
|
|
"net/http"
|
|
|
"one-api/common"
|
|
|
"one-api/model"
|
|
|
"strings"
|
|
|
"time"
|
|
|
+
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
@@ -31,7 +32,14 @@ var httpClient *http.Client
|
|
|
var impatientHTTPClient *http.Client
|
|
|
|
|
|
func init() {
|
|
|
- httpClient = &http.Client{}
|
|
|
+ if common.RelayTimeout == 0 {
|
|
|
+ httpClient = &http.Client{}
|
|
|
+ } else {
|
|
|
+ httpClient = &http.Client{
|
|
|
+ Timeout: time.Duration(common.RelayTimeout) * time.Second,
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
impatientHTTPClient = &http.Client{
|
|
|
Timeout: 5 * time.Second,
|
|
|
}
|
|
|
@@ -118,12 +126,7 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
|
|
|
if c.GetString("base_url") != "" {
|
|
|
baseURL = c.GetString("base_url")
|
|
|
}
|
|
|
- fullRequestURL := fmt.Sprintf("%s%s", baseURL, requestURL)
|
|
|
- if channelType == common.ChannelTypeOpenAI {
|
|
|
- if strings.HasPrefix(baseURL, "https://gateway.ai.cloudflare.com") {
|
|
|
- fullRequestURL = fmt.Sprintf("%s%s", baseURL, strings.TrimPrefix(requestURL, "/v1"))
|
|
|
- }
|
|
|
- }
|
|
|
+ fullRequestURL := getFullRequestURL(baseURL, requestURL, channelType)
|
|
|
switch apiType {
|
|
|
case APITypeOpenAI:
|
|
|
if channelType == common.ChannelTypeAzure {
|
|
|
@@ -156,6 +159,8 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
|
|
|
fullRequestURL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions"
|
|
|
case "ERNIE-Bot-turbo":
|
|
|
fullRequestURL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant"
|
|
|
+ case "ERNIE-Bot-4":
|
|
|
+ fullRequestURL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro"
|
|
|
case "BLOOMZ-7B":
|
|
|
fullRequestURL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/bloomz_7b1"
|
|
|
case "Embedding-V1":
|
|
|
@@ -373,6 +378,9 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
|
|
|
}
|
|
|
req.Header.Set("Content-Type", c.Request.Header.Get("Content-Type"))
|
|
|
req.Header.Set("Accept", c.Request.Header.Get("Accept"))
|
|
|
+ if isStream && c.Request.Header.Get("Accept") == "" {
|
|
|
+ req.Header.Set("Accept", "text/event-stream")
|
|
|
+ }
|
|
|
//req.Header.Set("Connection", c.Request.Header.Get("Connection"))
|
|
|
resp, err = httpClient.Do(req)
|
|
|
if err != nil {
|