@@ -729,10 +729,12 @@ static int apply_chat_template(LlamaData & llama_data, const bool append) {
729729
730730//  Function to tokenize the prompt
731731static  int  tokenize_prompt (const  llama_vocab * vocab, const  std::string & prompt,
732-                            std::vector<llama_token> & prompt_tokens) {
733-     const  int  n_prompt_tokens = -llama_tokenize (vocab, prompt.c_str (), prompt.size (), NULL , 0 , true , true );
732+                            std::vector<llama_token> & prompt_tokens, const  LlamaData & llama_data) {
733+     const  bool  is_first = llama_get_kv_cache_used_cells (llama_data.context .get ()) == 0 ;
734+ 
735+     const  int  n_prompt_tokens = -llama_tokenize (vocab, prompt.c_str (), prompt.size (), NULL , 0 , is_first, true );
734736    prompt_tokens.resize (n_prompt_tokens);
735-     if  (llama_tokenize (vocab, prompt.c_str (), prompt.size (), prompt_tokens.data (), prompt_tokens.size (), true ,
737+     if  (llama_tokenize (vocab, prompt.c_str (), prompt.size (), prompt_tokens.data (), prompt_tokens.size (), is_first ,
736738                       true ) < 0 ) {
737739        printe (" failed to tokenize the prompt\n "  );
738740        return  -1 ;
@@ -778,7 +780,7 @@ static int generate(LlamaData & llama_data, const std::string & prompt, std::str
778780    const  llama_vocab * vocab = llama_model_get_vocab (llama_data.model .get ());
779781
780782    std::vector<llama_token> tokens;
781-     if  (tokenize_prompt (vocab, prompt, tokens) < 0 ) {
783+     if  (tokenize_prompt (vocab, prompt, tokens, llama_data ) < 0 ) {
782784        return  1 ;
783785    }
784786
0 commit comments