mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-12 20:27:43 +08:00
- 引入 parseTextKVToolCalls 解析器以处理混杂文本或带历史记录套壳(如 [TOOL_CALL_HISTORY])输出的函数调用提取。 - 将其作为 JSON 和 XML 的 fallback 解析手段集成到主流程。 - 添加单元测试用例且更新相关语义说明文档。
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package util
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestParseTextKVToolCalls_Basic(t *testing.T) {
|
|
text := `
|
|
[TOOL_CALL_HISTORY]
|
|
status: already_called
|
|
origin: assistant
|
|
not_user_input: true
|
|
tool_call_id: call_3fcd15235eb94f7eae3a8de5a9cfa36b
|
|
function.name: execute_command
|
|
function.arguments: {"command":"cd scripts && python check_syntax.py example.py","cwd":null,"timeout":30}
|
|
[/TOOL_CALL_HISTORY]
|
|
|
|
Some other text thinking...
|
|
`
|
|
calls := ParseToolCalls(text, []string{"execute_command"})
|
|
if len(calls) != 1 {
|
|
t.Fatalf("expected 1 call, got %d", len(calls))
|
|
}
|
|
if calls[0].Name != "execute_command" {
|
|
t.Fatalf("unexpected name: %s", calls[0].Name)
|
|
}
|
|
if calls[0].Input["command"] != "cd scripts && python check_syntax.py example.py" {
|
|
t.Fatalf("unexpected command arg: %v", calls[0].Input["command"])
|
|
}
|
|
}
|
|
|
|
func TestParseTextKVToolCalls_Multiple(t *testing.T) {
|
|
text := `
|
|
function.name: read_file
|
|
function.arguments: {
|
|
"path": "abc.txt"
|
|
}
|
|
|
|
function.name: bash
|
|
function.arguments: {"command": "ls"}
|
|
`
|
|
calls := ParseToolCalls(text, []string{"read_file", "bash"})
|
|
if len(calls) != 2 {
|
|
t.Fatalf("expected 2 calls, got %d", len(calls))
|
|
}
|
|
if calls[0].Name != "read_file" {
|
|
t.Fatalf("unexpected 1st name: %s", calls[0].Name)
|
|
}
|
|
if calls[1].Name != "bash" {
|
|
t.Fatalf("unexpected 2nd name: %s", calls[1].Name)
|
|
}
|
|
}
|