diff --git a/dto/openai_request.go b/dto/openai_request.go index a6567542..aa4f1962 100644 --- a/dto/openai_request.go +++ b/dto/openai_request.go @@ -55,6 +55,7 @@ type GeneralOpenAIRequest struct { EnableThinking any `json:"enable_thinking,omitempty"` // ali THINKING json.RawMessage `json:"thinking,omitempty"` // doubao ExtraBody json.RawMessage `json:"extra_body,omitempty"` + SearchParameters any `json:"search_parameters,omitempty"` //xai WebSearchOptions *WebSearchOptions `json:"web_search_options,omitempty"` // OpenRouter Params Usage json.RawMessage `json:"usage,omitempty"` diff --git a/main.go b/main.go index 996b65b3..ca3da601 100644 --- a/main.go +++ b/main.go @@ -168,11 +168,11 @@ func InitResources() error { common.SysLog("No .env file found, using default environment variables. If needed, please create a .env file and set the relevant variables.") } - common.SetupLogger() - // 加载环境变量 common.InitEnv() + common.SetupLogger() + // Initialize model settings ratio_setting.InitRatioSettings() diff --git a/relay/channel/xai/adaptor.go b/relay/channel/xai/adaptor.go index b5896415..17747dd5 100644 --- a/relay/channel/xai/adaptor.go +++ b/relay/channel/xai/adaptor.go @@ -56,6 +56,15 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn if request == 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["search_parameters"] = map[string]any{ + "mode": "on", + } + return toMap, nil + } if strings.HasPrefix(request.Model, "grok-3-mini") { if request.MaxCompletionTokens == 0 && request.MaxTokens != 0 { request.MaxCompletionTokens = request.MaxTokens diff --git a/relay/channel/xai/constants.go b/relay/channel/xai/constants.go index 685fe3bb..311b4bb6 100644 --- a/relay/channel/xai/constants.go +++ b/relay/channel/xai/constants.go @@ -1,6 +1,8 @@ package xai var ModelList = []string{ + // grok-4 + "grok-4", "grok-4-0709", "grok-4-0709-search", // grok-3 "grok-3-beta", "grok-3-mini-beta", // grok-3 mini