Another attempt by V3.1 non-thinking

This commit is contained in:
Jesse CreateThis
2025-08-22 12:03:56 -04:00
parent 0d96944f4a
commit 3912fd3001
3 changed files with 38 additions and 2 deletions

View File

@@ -1314,8 +1314,15 @@ static common_chat_params common_chat_params_init_deepseek_r1(const common_chat_
} }
static common_chat_params common_chat_params_init_deepseek_v3_1(const common_chat_template & tmpl, const struct templates_params & inputs) { static common_chat_params common_chat_params_init_deepseek_v3_1(const common_chat_template & tmpl, const struct templates_params & inputs) {
// For now, use the same implementation as R1 common_chat_params data;
return common_chat_params_init_deepseek_r1(tmpl, inputs); auto prompt = apply(tmpl, inputs);
data.prompt = prompt;
data.format = COMMON_CHAT_FORMAT_DEEPSEEK_V3_1;
// For V3.1, we need to handle thinking mode differently
// The template should handle the thinking mode logic
return data;
} }
static void common_chat_parse_deepseek_r1(common_chat_msg_parser & builder) { static void common_chat_parse_deepseek_r1(common_chat_msg_parser & builder) {

View File

@@ -152,6 +152,32 @@ static void test_regex() {
} }
} }
static void test_deepseek_v3_1() {
// Test DeepSeek V3.1 parsing - reasoning content followed by "</think>" and then regular content
{
common_chat_syntax syntax = {
/* .format = */ COMMON_CHAT_FORMAT_DEEPSEEK_V3_1,
/* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
/* .reasoning_in_content = */ false,
/* .thinking_forced_open = */ false,
/* .parse_tool_calls = */ true,
};
common_chat_msg_parser builder("REASONING</think><function=finish>\n<parameter=message>ok
static void test_deepseek_v3_1() {
// Test DeepSeek V3.1 parsing - reasoning content followed by "</think>" and then regular content
{
common_chat_syntax syntax = {
/* .format = */ COMMON_CHAT_FORMAT_DEEPSEEK_V3_1,
/* .reasoning_format = */ COMMON_REASONING_FORMAT_DEEPSEEK,
/* .reasoning_in_content = */ false,
/* .thinking_forced_open = */ false,
/* .parse_tool_calls = */ true,
};
common_chat_msg_parser builder("REASONING</think><function=finish>\n<parameter=message>ok
static void test_deepseek_v3_1() {
// Test DeepSeek V3.1 parsing - reasoning content followed by "</think>" and then regular content
{
common_chat_msg_parser builder("REASONING</think><function=finish>\n<parameter=message>ok
const std::vector<std::string> barely_healable_jsons = { const std::vector<std::string> barely_healable_jsons = {
"{", "{",
"{\"", "{\"",

View File

@@ -774,6 +774,9 @@ struct server_task_result_cmpl_final : server_task_result {
if (!stream && !probs_output.empty()) { if (!stream && !probs_output.empty()) {
res["completion_probabilities"] = completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs); res["completion_probabilities"] = completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs);
} }
if (!oaicompat_msg.reasoning_content.empty()) {
res["reasoning_content"] = oaicompat_msg.reasoning_content;
}
return response_fields.empty() ? res : json_get_nested_values(response_fields, res); return response_fields.empty() ? res : json_get_nested_values(response_fields, res);
} }