feat: add ToMap method and enhance OpenAI request handling

This commit is contained in:
CaIon
2025-06-01 01:10:10 +08:00
parent b05bb899f1
commit 611d77e1a9
2 changed files with 23 additions and 2 deletions

View File

@@ -2,6 +2,7 @@ package dto
import ( import (
"encoding/json" "encoding/json"
"one-api/common"
"strings" "strings"
) )
@@ -57,6 +58,13 @@ type GeneralOpenAIRequest struct {
WebSearchOptions *WebSearchOptions `json:"web_search_options,omitempty"` WebSearchOptions *WebSearchOptions `json:"web_search_options,omitempty"`
} }
func (r *GeneralOpenAIRequest) ToMap() map[string]any {
result := make(map[string]any)
data, _ := common.EncodeJson(r)
_ = common.DecodeJson(data, &result)
return result
}
type ToolCallRequest struct { type ToolCallRequest struct {
ID string `json:"id,omitempty"` ID string `json:"id,omitempty"`
Type string `json:"type"` Type string `json:"type"`
@@ -74,11 +82,11 @@ type StreamOptions struct {
IncludeUsage bool `json:"include_usage,omitempty"` IncludeUsage bool `json:"include_usage,omitempty"`
} }
func (r GeneralOpenAIRequest) GetMaxTokens() int { func (r *GeneralOpenAIRequest) GetMaxTokens() int {
return int(r.MaxTokens) return int(r.MaxTokens)
} }
func (r GeneralOpenAIRequest) ParseInput() []string { func (r *GeneralOpenAIRequest) ParseInput() []string {
if r.Input == nil { if r.Input == nil {
return nil return nil
} }

View File

@@ -9,6 +9,7 @@ import (
"one-api/relay/channel" "one-api/relay/channel"
"one-api/relay/channel/openai" "one-api/relay/channel/openai"
relaycommon "one-api/relay/common" relaycommon "one-api/relay/common"
"strings"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
@@ -49,6 +50,18 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn
if request == nil { if request == nil {
return nil, errors.New("request is nil") return nil, errors.New("request is nil")
} }
if strings.HasSuffix(info.UpstreamModelName, "-search") {
info.UpstreamModelName = strings.TrimSuffix(info.UpstreamModelName, "-search")
request.Model = info.UpstreamModelName
toMap := request.ToMap()
toMap["web_search"] = map[string]any{
"enable": true,
"enable_citation": true,
"enable_trace": true,
"enable_status": false,
}
return toMap, nil
}
return request, nil return request, nil
} }