mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-19 16:17:56 +00:00
Merge pull request #6839 from mason0510/fix/grok-external-web-access
fix(grok): 移除 Chat Completions 中不支持的 external_web_access 参数
This commit is contained in:
@@ -157,6 +157,10 @@ func (s *OpenAIGatewayService) forwardAsRawChatCompletions(
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("normalize Grok chat reasoning effort: %w", err)
|
||||
}
|
||||
upstreamBody, err = sanitizeGrokUnsupportedFields(upstreamBody)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("sanitize Grok unsupported fields: %w", err)
|
||||
}
|
||||
}
|
||||
upstreamBody = applyOllamaCloudRawChatCompletionsRequest(account, upstreamBody)
|
||||
upstreamBody = clampOllamaCloudUpstreamMaxTokens(account, upstreamBody)
|
||||
|
||||
@@ -763,11 +763,14 @@ func grokSupportsReasoningEffort(model string) bool {
|
||||
}
|
||||
}
|
||||
|
||||
var grokResponsesUnsupportedRecursiveFields = map[string]struct{}{
|
||||
// grokUnsupportedRecursiveFields 定义 Grok 平台(Responses 和 Chat Completions)不支持的字段
|
||||
var grokUnsupportedRecursiveFields = map[string]struct{}{
|
||||
"external_web_access": {},
|
||||
}
|
||||
|
||||
func sanitizeGrokResponsesUnsupportedFields(body []byte) ([]byte, error) {
|
||||
// sanitizeGrokUnsupportedFields 递归移除 Grok 平台不支持的字段
|
||||
// 适用于 Responses API 和 Chat Completions API
|
||||
func sanitizeGrokUnsupportedFields(body []byte) ([]byte, error) {
|
||||
if !bytes.Contains(body, []byte(`"external_web_access"`)) {
|
||||
return body, nil
|
||||
}
|
||||
@@ -776,12 +779,15 @@ func sanitizeGrokResponsesUnsupportedFields(body []byte) ([]byte, error) {
|
||||
if err := decodeOpenAIJSONUseNumber(body, &payload); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !deleteJSONFields(payload, grokResponsesUnsupportedRecursiveFields) {
|
||||
if !deleteJSONFields(payload, grokUnsupportedRecursiveFields) {
|
||||
return body, nil
|
||||
}
|
||||
return marshalOpenAIUpstreamJSON(payload)
|
||||
}
|
||||
|
||||
// sanitizeGrokResponsesUnsupportedFields 保留旧函数名作为别名,向后兼容
|
||||
var sanitizeGrokResponsesUnsupportedFields = sanitizeGrokUnsupportedFields
|
||||
|
||||
func deleteJSONFields(value any, fields map[string]struct{}) bool {
|
||||
switch typed := value.(type) {
|
||||
case map[string]any:
|
||||
|
||||
Reference in New Issue
Block a user