|
|
@@ -1402,6 +1402,12 @@ static void test_template_output_parsers() {
|
|
|
"Hello, world!\nWhat's up?",
|
|
|
/* is_partial= */ false,
|
|
|
{COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(
|
|
|
+ message_assist,
|
|
|
+ common_chat_parse(
|
|
|
+ "Hello, world!\nWhat's up?",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
|
|
|
// Test parsing content with thinking
|
|
|
assert_msg_equals(message_assist_thoughts,
|
|
|
@@ -1412,6 +1418,59 @@ static void test_template_output_parsers() {
|
|
|
/* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
/* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
}));
|
|
|
+ assert_msg_equals(message_assist_thoughts_unparsed_deepseek,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking</think>Hello, world!\nWhat's up?",
|
|
|
+ /* is_partial= */ false,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(message_assist_thoughts,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking</think><response>Hello, world!\nWhat's up?",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {
|
|
|
+ /* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
+ /* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
+ }));
|
|
|
+ assert_msg_equals(message_assist_thoughts,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking</think><response>Hello, world!\nWhat's up?</response>",
|
|
|
+ /* is_partial= */ false,
|
|
|
+ {
|
|
|
+ /* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
+ /* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
+ }));
|
|
|
+ assert_msg_equals(simple_assist_msg("<think>I'm\nthinking</think><response>Hello, world!\nWhat's up?</response>"),
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking</think><response>Hello, world!\nWhat's up?</response>",
|
|
|
+ /* is_partial= */ false,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(message_assist_empty,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {
|
|
|
+ /* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
+ /* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
+ }));
|
|
|
+ assert_msg_equals(message_assist_empty,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(message_assist_thoughts_no_content,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {
|
|
|
+ /* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
+ /* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
+ }));
|
|
|
+ assert_msg_equals(
|
|
|
+ message_assist_empty,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking</think><response",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
|
|
|
// Test parsing tool calls
|
|
|
assert_msg_equals(message_assist_call,
|
|
|
@@ -1419,6 +1478,38 @@ static void test_template_output_parsers() {
|
|
|
"<|tool_call|>[{\"name\": \"special_function\", \"arguments\": {\"arg1\": 1}}]",
|
|
|
/* is_partial= */ false,
|
|
|
{COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(
|
|
|
+ message_assist_call_empty_args,
|
|
|
+ common_chat_parse(
|
|
|
+ "<|tool_call|>[{\"name\": \"special_function\"",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(
|
|
|
+ message_assist_call_cutoff_args,
|
|
|
+ common_chat_parse(
|
|
|
+ "<|tool_call|>[{\"name\": \"special_function\", \"arguments\": {\"arg",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {COMMON_CHAT_FORMAT_GRANITE}));
|
|
|
+ assert_msg_equals(
|
|
|
+ message_assist_call_cutoff_args,
|
|
|
+ common_chat_parse(
|
|
|
+ "<|tool_call|>[{\"name\": \"special_function\", \"arguments\": {\"arg",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {
|
|
|
+ /* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
+ /* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
+ }));
|
|
|
+
|
|
|
+ // Test parsing tool calls with thinking
|
|
|
+ assert_msg_equals(
|
|
|
+ message_assist_call_thoughts,
|
|
|
+ common_chat_parse(
|
|
|
+ "<think>I'm\nthinking</think><|tool_call|>[{\"name\": \"special_function\", \"arguments\": {\"arg1\": 1}, {",
|
|
|
+ /* is_partial= */ true,
|
|
|
+ {
|
|
|
+ /* .format = */ COMMON_CHAT_FORMAT_GRANITE,
|
|
|
+ /* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
|
|
|
+ }));
|
|
|
|
|
|
// Test template generation for regular content
|
|
|
test_templates(tmpls.get(), end_tokens, message_assist, tools,
|