|
|
@@ -5,6 +5,7 @@ import (
|
|
|
"fmt"
|
|
|
"io"
|
|
|
"net/http"
|
|
|
+ "net/url"
|
|
|
|
|
|
"github.com/QuantumNous/new-api/dto"
|
|
|
"github.com/QuantumNous/new-api/relay/channel"
|
|
|
@@ -41,11 +42,32 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo) {
|
|
|
}
|
|
|
|
|
|
func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) {
|
|
|
- baseURL := fmt.Sprintf("%s/v1/messages", info.ChannelBaseUrl)
|
|
|
+ requestURL := fmt.Sprintf("%s/v1/messages", info.ChannelBaseUrl)
|
|
|
+ if !shouldAppendClaudeBetaQuery(info) {
|
|
|
+ return requestURL, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ parsedURL, err := url.Parse(requestURL)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ query := parsedURL.Query()
|
|
|
+ query.Set("beta", "true")
|
|
|
+ parsedURL.RawQuery = query.Encode()
|
|
|
+ return parsedURL.String(), nil
|
|
|
+}
|
|
|
+
|
|
|
+func shouldAppendClaudeBetaQuery(info *relaycommon.RelayInfo) bool {
|
|
|
+ if info == nil {
|
|
|
+ return false
|
|
|
+ }
|
|
|
if info.IsClaudeBetaQuery {
|
|
|
- baseURL = baseURL + "?beta=true"
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ if info.ChannelOtherSettings.ClaudeBetaQuery {
|
|
|
+ return true
|
|
|
}
|
|
|
- return baseURL, nil
|
|
|
+ return false
|
|
|
}
|
|
|
|
|
|
func CommonClaudeHeadersOperation(c *gin.Context, req *http.Header, info *relaycommon.RelayInfo) {
|