Files
ds2api/internal/toolcall/toolcalls_format.go
2026-04-28 13:27:41 +08:00

44 lines
1.1 KiB
Go

package toolcall
import (
"encoding/json"
"strings"
"github.com/google/uuid"
)
func FormatOpenAIToolCalls(calls []ParsedToolCall, toolsRaw any) []map[string]any {
normalized := NormalizeParsedToolCallsForSchemas(calls, toolsRaw)
out := make([]map[string]any, 0, len(calls))
for _, c := range normalized {
args, _ := json.Marshal(c.Input)
out = append(out, map[string]any{
"id": "call_" + strings.ReplaceAll(uuid.NewString(), "-", ""),
"type": "function",
"function": map[string]any{
"name": c.Name,
"arguments": string(args),
},
})
}
return out
}
func FormatOpenAIStreamToolCalls(calls []ParsedToolCall, toolsRaw any) []map[string]any {
normalized := NormalizeParsedToolCallsForSchemas(calls, toolsRaw)
out := make([]map[string]any, 0, len(calls))
for i, c := range normalized {
args, _ := json.Marshal(c.Input)
out = append(out, map[string]any{
"index": i,
"id": "call_" + strings.ReplaceAll(uuid.NewString(), "-", ""),
"type": "function",
"function": map[string]any{
"name": c.Name,
"arguments": string(args),
},
})
}
return out
}