]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commit
Add Jinja template support (#11016)
authorOlivier Chafik <redacted>
Tue, 21 Jan 2025 13:18:51 +0000 (13:18 +0000)
committerGitHub <redacted>
Tue, 21 Jan 2025 13:18:51 +0000 (13:18 +0000)
commit6171c9d25820ccf676b243c172868819d882848f
tree999b843f3f0e591097b806f4f2a04d3a6e847c51
parente28245f35f2faaf249dd352998b3693a8cc28c51
Add Jinja template support (#11016)

* Copy minja from https://github.com/google/minja/commit/58f0ca6dd74bcbfbd4e71229736640322b31c7f9

* Add --jinja and --chat-template-file flags

* Add missing <optional> include

* Avoid print in get_hf_chat_template.py

* No designated initializers yet

* Try and work around msvc++ non-macro max resolution quirk

* Update test_chat_completion.py

* Wire LLM_KV_TOKENIZER_CHAT_TEMPLATE_N in llama_model_chat_template

* Refactor test-chat-template

* Test templates w/ minja

* Fix deprecation

* Add --jinja to llama-run

* Update common_chat_format_example to use minja template wrapper

* Test chat_template in e2e test

* Update utils.py

* Update test_chat_completion.py

* Update run.cpp

* Update arg.cpp

* Refactor common_chat_* functions to accept minja template + use_jinja option

* Attempt to fix linkage of LLAMA_CHATML_TEMPLATE

* Revert LLAMA_CHATML_TEMPLATE refactor

* Normalize newlines in test-chat-templates for windows tests

* Forward decl minja::chat_template to avoid eager json dep

* Flush stdout in chat template before potential crash

* Fix copy elision warning

* Rm unused optional include

* Add missing optional include to server.cpp

* Disable jinja test that has a cryptic windows failure

* minja: fix vigogne (https://github.com/google/minja/pull/22)

* Apply suggestions from code review

Co-authored-by: Xuan Son Nguyen <redacted>
Co-authored-by: Georgi Gerganov <redacted>
* Finish suggested renamings

* Move chat_templates inside server_context + remove mutex

* Update --chat-template-file w/ recent change to --chat-template

* Refactor chat template validation

* Guard against missing eos/bos tokens (null token otherwise throws in llama_vocab::impl::token_get_attr)

* Warn against missing eos / bos tokens when jinja template references them

* rename: common_chat_template[s]

* reinstate assert on chat_templates.template_default

* Update minja to https://github.com/google/minja/commit/b8437df626ac6cd0ce3b333b3c74ed1129c19f25

* Update minja to https://github.com/google/minja/pull/25

* Update minja from https://github.com/google/minja/pull/27

* rm unused optional header

---------

Co-authored-by: Xuan Son Nguyen <redacted>
Co-authored-by: Georgi Gerganov <redacted>
22 files changed:
Makefile
common/CMakeLists.txt
common/arg.cpp
common/chat-template.hpp [new file with mode: 0644]
common/common.cpp
common/common.h
common/minja.hpp [new file with mode: 0644]
examples/main/main.cpp
examples/run/run.cpp
examples/server/README.md
examples/server/server.cpp
examples/server/tests/unit/test_chat_completion.py
examples/server/tests/utils.py
examples/server/utils.hpp
examples/simple-chat/simple-chat.cpp
include/llama.h
scripts/get_hf_chat_template.py [new file with mode: 0755]
src/CMakeLists.txt
src/llama-arch.cpp
src/llama-arch.h
src/llama-model.cpp
tests/test-chat-template.cpp