Restrict call_v2 to explicit code snippets and omit session_hash from call payloads
This commit is contained in:
@@ -2594,6 +2594,7 @@ type SpaceDiscovery struct {
|
||||
PrimaryModel string `json:"primary_model"`
|
||||
TotalInputs int `json:"total_inputs"`
|
||||
RawTotalInputs int `json:"raw_total_inputs,omitempty"`
|
||||
RawDefaultInputs []interface{} `json:"raw_default_inputs,omitempty"`
|
||||
ParamMappings []SpaceParamMapping `json:"param_mappings"`
|
||||
DefaultInputs []interface{} `json:"default_inputs"`
|
||||
MessageIsMultimodal bool `json:"message_is_multimodal"`
|
||||
@@ -3215,18 +3216,13 @@ func InspectSpace(client *http.Client, rawURL, userAgent string) (*SpaceDiscover
|
||||
|
||||
// Select protocol
|
||||
isCallV2 := false
|
||||
hasSnippet := false
|
||||
if bestEndpointInfo != nil && bestEndpointInfo.CodeSnippets != nil {
|
||||
if bashSnippet, ok := bestEndpointInfo.CodeSnippets["bash"].(string); ok && bashSnippet != "" {
|
||||
hasSnippet = true
|
||||
if strings.Contains(bashSnippet, "/call/v2/") {
|
||||
isCallV2 = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if !hasSnippet && strings.HasPrefix(discovery.GradioVersion, "6.") {
|
||||
isCallV2 = true
|
||||
}
|
||||
|
||||
|
||||
if strings.HasPrefix(discovery.GradioVersion, "3.") {
|
||||
@@ -3358,6 +3354,8 @@ func InspectSpace(client *http.Client, rawURL, userAgent string) (*SpaceDiscover
|
||||
}
|
||||
}
|
||||
}
|
||||
discovery.RawDefaultInputs = make([]interface{}, len(discovery.DefaultInputs))
|
||||
copy(discovery.RawDefaultInputs, discovery.DefaultInputs)
|
||||
|
||||
// If the endpoint has canonical parameters exposed via /gradio_api/info,
|
||||
// and trailing inputs in bestMatchingDep.Inputs are unexposed server-side state components,
|
||||
@@ -4467,7 +4465,9 @@ func (g *GradioGateway) executePredictCompletion(w http.ResponseWriter, r *http.
|
||||
if disc.RawTotalInputs > len(predictData) {
|
||||
for i := len(predictData); i < disc.RawTotalInputs; i++ {
|
||||
var defVal interface{}
|
||||
if i < len(disc.DefaultInputs) {
|
||||
if i < len(disc.RawDefaultInputs) {
|
||||
defVal = disc.RawDefaultInputs[i]
|
||||
} else if i < len(disc.DefaultInputs) {
|
||||
defVal = disc.DefaultInputs[i]
|
||||
}
|
||||
predictData = append(predictData, defVal)
|
||||
@@ -4579,7 +4579,9 @@ func (g *GradioGateway) executeQueueCompletion(w http.ResponseWriter, r *http.Re
|
||||
if disc.RawTotalInputs > len(queueData) {
|
||||
for i := len(queueData); i < disc.RawTotalInputs; i++ {
|
||||
var defVal interface{}
|
||||
if i < len(disc.DefaultInputs) {
|
||||
if i < len(disc.RawDefaultInputs) {
|
||||
defVal = disc.RawDefaultInputs[i]
|
||||
} else if i < len(disc.DefaultInputs) {
|
||||
defVal = disc.DefaultInputs[i]
|
||||
}
|
||||
queueData = append(queueData, defVal)
|
||||
@@ -5036,9 +5038,6 @@ func (g *GradioGateway) ExecuteChatCompletion(w http.ResponseWriter, r *http.Req
|
||||
payloadMap := map[string]interface{}{
|
||||
"data": gradioData,
|
||||
}
|
||||
if !disc.IsHunyuan3 {
|
||||
payloadMap["session_hash"] = GenerateUUID()
|
||||
}
|
||||
return json.Marshal(payloadMap)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user