refactor tool sieve functionCall helpers into separate file

This commit is contained in:
CJACK.
2026-04-02 13:40:21 +08:00
parent 50ce88ca3f
commit 15bf77e044
2 changed files with 32 additions and 29 deletions

View File

@@ -282,32 +282,3 @@ func consumeToolCapture(state *toolStreamSieveState, toolNames []string) (prefix
prefixPart, suffixPart = trimWrappingJSONFence(prefixPart, suffixPart)
return prefixPart, parsed.Calls, suffixPart, true
}
func findQuotedFunctionCallKeyStart(s string) int {
lower := strings.ToLower(s)
const key = "\"functioncall\""
for from := 0; from < len(lower); {
rel := strings.Index(lower[from:], key)
if rel < 0 {
return -1
}
idx := from + rel
if !hasJSONObjectContextPrefix(lower[:idx]) {
from = idx + 1
continue
}
j := idx + len(key)
for j < len(lower) && (lower[j] == ' ' || lower[j] == '\t' || lower[j] == '\r' || lower[j] == '\n') {
j++
}
if j < len(lower) && lower[j] == ':' {
return idx
}
from = idx + 1
}
return -1
}
func hasJSONObjectContextPrefix(prefix string) bool {
return strings.LastIndex(prefix, "{") >= 0
}

View File

@@ -0,0 +1,32 @@
package openai
import "strings"
func findQuotedFunctionCallKeyStart(s string) int {
lower := strings.ToLower(s)
const key = "\"functioncall\""
for from := 0; from < len(lower); {
rel := strings.Index(lower[from:], key)
if rel < 0 {
return -1
}
idx := from + rel
if !hasJSONObjectContextPrefix(lower[:idx]) {
from = idx + 1
continue
}
j := idx + len(key)
for j < len(lower) && (lower[j] == ' ' || lower[j] == '\t' || lower[j] == '\r' || lower[j] == '\n') {
j++
}
if j < len(lower) && lower[j] == ':' {
return idx
}
from = idx + 1
}
return -1
}
func hasJSONObjectContextPrefix(prefix string) bool {
return strings.LastIndex(prefix, "{") >= 0
}