mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	ci: detach common from the library (#12827)
* fix: detach common from the library * fix: building chat test template
This commit is contained in:
		| @@ -3,7 +3,7 @@ | |||||||
| #include "common.h" | #include "common.h" | ||||||
| #include "log.h" | #include "log.h" | ||||||
| #include "llama.h" | #include "llama.h" | ||||||
| #include "common/base64.hpp" | #include "base64.hpp" | ||||||
|  |  | ||||||
| // increase max payload length to allow use of larger context size | // increase max payload length to allow use of larger context size | ||||||
| #define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576 | #define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576 | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ add_library(llama | |||||||
|             unicode.h |             unicode.h | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
| target_include_directories(llama PUBLIC . ../include ../common) | target_include_directories(llama PUBLIC . ../include) | ||||||
| target_compile_features   (llama PUBLIC cxx_std_17) # don't bump | target_compile_features   (llama PUBLIC cxx_std_17) # don't bump | ||||||
|  |  | ||||||
| target_link_libraries(llama PUBLIC ggml) | target_link_libraries(llama PUBLIC ggml) | ||||||
|   | |||||||
| @@ -19,6 +19,8 @@ static std::string normalize_newlines(const std::string & s) { | |||||||
| #endif | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #define U8C(x) (const char*)(u8##x) | ||||||
|  |  | ||||||
| static common_chat_msg simple_msg(const std::string & role, const std::string & content) { | static common_chat_msg simple_msg(const std::string & role, const std::string & content) { | ||||||
|     common_chat_msg msg; |     common_chat_msg msg; | ||||||
|     msg.role = role; |     msg.role = role; | ||||||
| @@ -35,6 +37,8 @@ int main(void) { | |||||||
|         {"assistant", "   I am an assistant   "}, |         {"assistant", "   I am an assistant   "}, | ||||||
|         {"user", "Another question"}, |         {"user", "Another question"}, | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |     // std::string wrong = /* .template_str= */ u8"[gMASK]<sop>{% for item in messages %}{% if item['tools'] is defined %}<|system|>\n你是一个名为 ChatGLM 的人工智能助手。你是基于智谱AI训练的语言模型 GLM-4 模型开发的,你的任务是针对用户的问题和要求提供适当的答复和支持。\n\n# 可用工具{% set tools = item['tools'] %}{% for tool in tools %}{% if tool['type'] == 'function' %}\n\n## {{ tool['function']['name'] }}\n\n{{ tool['function'] | tojson(indent=4) }}\n......{% endif %}{% endfor %}{% endif %}{% if item['content'] %}<|{{ item['role'] }}|>{{ item['metadata'] }}\n{{ item['content'] }}{% endif %}{% endfor %}{% if add_generation_prompt %}<|assistant|>{% endif %}"; | ||||||
|     struct TestCase { |     struct TestCase { | ||||||
|         std::string name; |         std::string name; | ||||||
|         std::string template_str; |         std::string template_str; | ||||||
| @@ -177,7 +181,7 @@ int main(void) { | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             /* .name= */ "ChatGLM4", |             /* .name= */ "ChatGLM4", | ||||||
|             /* .template_str= */ u8"[gMASK]<sop>{% for item in messages %}{% if item['tools'] is defined %}<|system|>\n你是一个名为 ChatGLM 的人工智能助手。你是基于智谱AI训练的语言模型 GLM-4 模型开发的,你的任务是针对用户的问题和要求提供适当的答复和支持。\n\n# 可用工具{% set tools = item['tools'] %}{% for tool in tools %}{% if tool['type'] == 'function' %}\n\n## {{ tool['function']['name'] }}\n\n{{ tool['function'] | tojson(indent=4) }}\n......{% endif %}{% endfor %}{% endif %}{% if item['content'] %}<|{{ item['role'] }}|>{{ item['metadata'] }}\n{{ item['content'] }}{% endif %}{% endfor %}{% if add_generation_prompt %}<|assistant|>{% endif %}", |             /* .template_str= */ U8C("[gMASK]<sop>{% for item in messages %}{% if item['tools'] is defined %}<|system|>\n你是一个名为 ChatGLM 的人工智能助手。你是基于智谱AI训练的语言模型 GLM-4 模型开发的,你的任务是针对用户的问题和要求提供适当的答复和支持。\n\n# 可用工具{% set tools = item['tools'] %}{% for tool in tools %}{% if tool['type'] == 'function' %}\n\n## {{ tool['function']['name'] }}\n\n{{ tool['function'] | tojson(indent=4) }}\n......{% endif %}{% endfor %}{% endif %}{% if item['content'] %}<|{{ item['role'] }}|>{{ item['metadata'] }}\n{{ item['content'] }}{% endif %}{% endfor %}{% if add_generation_prompt %}<|assistant|>{% endif %}"), | ||||||
|             /* .expected_output= */ "[gMASK]<sop><|system|>\nYou are a helpful assistant<|user|>\nHello<|assistant|>\nHi there<|user|>\nWho are you<|assistant|>\n   I am an assistant   <|user|>\nAnother question<|assistant|>", |             /* .expected_output= */ "[gMASK]<sop><|system|>\nYou are a helpful assistant<|user|>\nHello<|assistant|>\nHi there<|user|>\nWho are you<|assistant|>\n   I am an assistant   <|user|>\nAnother question<|assistant|>", | ||||||
|             /* .expected_output_jinja= */ "", |             /* .expected_output_jinja= */ "", | ||||||
|             /* .bos_token= */ "", |             /* .bos_token= */ "", | ||||||
| @@ -193,8 +197,8 @@ int main(void) { | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             /* .name= */ "MiniCPM-3B-OpenHermes-2.5-v2-GGUF", |             /* .name= */ "MiniCPM-3B-OpenHermes-2.5-v2-GGUF", | ||||||
|             /* .template_str= */ u8"{% for message in messages %}{% if message['role'] == 'user' %}{{'<用户>' + message['content'].strip() + '<AI>'}}{% else %}{{message['content'].strip()}}{% endif %}{% endfor %}", |             /* .template_str= */ U8C("{% for message in messages %}{% if message['role'] == 'user' %}{{'<用户>' + message['content'].strip() + '<AI>'}}{% else %}{{message['content'].strip()}}{% endif %}{% endfor %}"), | ||||||
|             /* .expected_output= */ u8"You are a helpful assistant<用户>Hello<AI>Hi there<用户>Who are you<AI>I am an assistant<用户>Another question<AI>", |             /* .expected_output= */ U8C("You are a helpful assistant<用户>Hello<AI>Hi there<用户>Who are you<AI>I am an assistant<用户>Another question<AI>"), | ||||||
|             /* .expected_output_jinja= */ "", |             /* .expected_output_jinja= */ "", | ||||||
|             /* .bos_token= */ "", |             /* .bos_token= */ "", | ||||||
|             /* .eos_token= */ "", |             /* .eos_token= */ "", | ||||||
| @@ -202,7 +206,7 @@ int main(void) { | |||||||
|         { |         { | ||||||
|             /* .name= */ "DeepSeek-V2", |             /* .name= */ "DeepSeek-V2", | ||||||
|             /* .template_str= */ "{% if not add_generation_prompt is defined %}{% set add_generation_prompt = false %}{% endif %}{{ bos_token }}{% for message in messages %}{% if message['role'] == 'user' %}{{ 'User: ' + message['content'] + '\n\n' }}{% elif message['role'] == 'assistant' %}{{ 'Assistant: ' + message['content'] + eos_token }}{% elif message['role'] == 'system' %}{{ message['content'] + '\n\n' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ 'Assistant:' }}{% endif %}", |             /* .template_str= */ "{% if not add_generation_prompt is defined %}{% set add_generation_prompt = false %}{% endif %}{{ bos_token }}{% for message in messages %}{% if message['role'] == 'user' %}{{ 'User: ' + message['content'] + '\n\n' }}{% elif message['role'] == 'assistant' %}{{ 'Assistant: ' + message['content'] + eos_token }}{% elif message['role'] == 'system' %}{{ message['content'] + '\n\n' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ 'Assistant:' }}{% endif %}", | ||||||
|             /* .expected_output= */ u8"You are a helpful assistant\n\nUser: Hello\n\nAssistant: Hi there<|end▁of▁sentence|>User: Who are you\n\nAssistant:    I am an assistant   <|end▁of▁sentence|>User: Another question\n\nAssistant:", |             /* .expected_output= */ U8C("You are a helpful assistant\n\nUser: Hello\n\nAssistant: Hi there<|end▁of▁sentence|>User: Who are you\n\nAssistant:    I am an assistant   <|end▁of▁sentence|>User: Another question\n\nAssistant:"), | ||||||
|             /* .expected_output_jinja= */ "", |             /* .expected_output_jinja= */ "", | ||||||
|             /* .bos_token= */ "", |             /* .bos_token= */ "", | ||||||
|             /* .eos_token= */ "<|end▁of▁sentence|>", |             /* .eos_token= */ "<|end▁of▁sentence|>", | ||||||
| @@ -256,7 +260,7 @@ int main(void) { | |||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             /* .name= */ "Infinigence/Megrez-3B-Instruct", |             /* .name= */ "Infinigence/Megrez-3B-Instruct", | ||||||
|             /* .template_str= */ u8"{% for message in messages %}{% if loop.first and messages[0]['role'] != 'system' %}{{ '<|role_start|>system<|role_end|>你是Megrez-3B-Instruct,将针对用户的问题给出详细的、积极的回答。<|turn_end|>' }}{% endif %}{{ '<|role_start|>' + message['role'] + '<|role_end|>' + message['content'] + '<|turn_end|>' }}{% endfor %}{% if add_generation_prompt %}{{ '<|role_start|>assistant<|role_end|>' }}{% endif %}", |             /* .template_str= */ U8C("{% for message in messages %}{% if loop.first and messages[0]['role'] != 'system' %}{{ '<|role_start|>system<|role_end|>你是Megrez-3B-Instruct,将针对用户的问题给出详细的、积极的回答。<|turn_end|>' }}{% endif %}{{ '<|role_start|>' + message['role'] + '<|role_end|>' + message['content'] + '<|turn_end|>' }}{% endfor %}{% if add_generation_prompt %}{{ '<|role_start|>assistant<|role_end|>' }}{% endif %}"), | ||||||
|             /* .expected_output= */ "<|role_start|>system<|role_end|>You are a helpful assistant<|turn_end|><|role_start|>user<|role_end|>Hello<|turn_end|><|role_start|>assistant<|role_end|>Hi there<|turn_end|><|role_start|>user<|role_end|>Who are you<|turn_end|><|role_start|>assistant<|role_end|>   I am an assistant   <|turn_end|><|role_start|>user<|role_end|>Another question<|turn_end|><|role_start|>assistant<|role_end|>", |             /* .expected_output= */ "<|role_start|>system<|role_end|>You are a helpful assistant<|turn_end|><|role_start|>user<|role_end|>Hello<|turn_end|><|role_start|>assistant<|role_end|>Hi there<|turn_end|><|role_start|>user<|role_end|>Who are you<|turn_end|><|role_start|>assistant<|role_end|>   I am an assistant   <|turn_end|><|role_start|>user<|role_end|>Another question<|turn_end|><|role_start|>assistant<|role_end|>", | ||||||
|             /* .expected_output_jinja= */ "", |             /* .expected_output_jinja= */ "", | ||||||
|             /* .bos_token= */ "", |             /* .bos_token= */ "", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Plamen Minev
					Plamen Minev