feat: 添加 openrouter-enterprise 支持
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
|||||||
"one-api/constant"
|
"one-api/constant"
|
||||||
"one-api/dto"
|
"one-api/dto"
|
||||||
"one-api/logger"
|
"one-api/logger"
|
||||||
|
"one-api/relay/channel/openrouter"
|
||||||
relaycommon "one-api/relay/common"
|
relaycommon "one-api/relay/common"
|
||||||
"one-api/relay/helper"
|
"one-api/relay/helper"
|
||||||
"one-api/service"
|
"one-api/service"
|
||||||
@@ -185,7 +186,19 @@ func OpenaiHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Respo
|
|||||||
if common.DebugEnabled {
|
if common.DebugEnabled {
|
||||||
println("upstream response body:", string(responseBody))
|
println("upstream response body:", string(responseBody))
|
||||||
}
|
}
|
||||||
err = common.Unmarshal(responseBody, &simpleResponse)
|
// Unmarshal to simpleResponse
|
||||||
|
if info.ChannelType == constant.ChannelTypeOpenRouter {
|
||||||
|
// 尝试解析为 openrouter enterprise
|
||||||
|
var enterpriseResponse openrouter.OpenRouterEnterpriseResponse
|
||||||
|
if err2 := common.Unmarshal(responseBody, &enterpriseResponse); err2 == nil && enterpriseResponse.Data != nil {
|
||||||
|
err = common.Unmarshal(enterpriseResponse.Data, &simpleResponse)
|
||||||
|
} else {
|
||||||
|
// treat as normal openrouter
|
||||||
|
err = common.Unmarshal(responseBody, &simpleResponse)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = common.Unmarshal(responseBody, &simpleResponse)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, types.NewOpenAIError(err, types.ErrorCodeBadResponseBody, http.StatusInternalServerError)
|
return nil, types.NewOpenAIError(err, types.ErrorCodeBadResponseBody, http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package openrouter
|
package openrouter
|
||||||
|
|
||||||
|
import "encoding/json"
|
||||||
|
|
||||||
type RequestReasoning struct {
|
type RequestReasoning struct {
|
||||||
// One of the following (not both):
|
// One of the following (not both):
|
||||||
Effort string `json:"effort,omitempty"` // Can be "high", "medium", or "low" (OpenAI-style)
|
Effort string `json:"effort,omitempty"` // Can be "high", "medium", or "low" (OpenAI-style)
|
||||||
@@ -7,3 +9,8 @@ type RequestReasoning struct {
|
|||||||
// Optional: Default is false. All models support this.
|
// Optional: Default is false. All models support this.
|
||||||
Exclude bool `json:"exclude,omitempty"` // Set to true to exclude reasoning tokens from response
|
Exclude bool `json:"exclude,omitempty"` // Set to true to exclude reasoning tokens from response
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type OpenRouterEnterpriseResponse struct {
|
||||||
|
Data json.RawMessage `json:"data"`
|
||||||
|
Success bool `json:"success"`
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user