Bladeren bron

fix instruct mode (#445)

changes to EOS behavior in interactive and reverse prompt handling broke instruct mode by erroneously injecting instruct mode's reverse prompt and an extra newline.
rabidcopy 2 jaren geleden
bovenliggende
commit
863f65e2e3
1 gewijzigde bestanden met toevoegingen van 7 en 3 verwijderingen
  1. 7 3
      main.cpp

+ 7 - 3
main.cpp

@@ -387,7 +387,7 @@ int main(int argc, char ** argv) {
             }
             }
 
 
             // replace end of text token with newline token when in interactive mode
             // replace end of text token with newline token when in interactive mode
-            if (id == llama_token_eos() && params.interactive) {
+            if (id == llama_token_eos() && params.interactive && !params.instruct) {
                 id = llama_token_newline.front();
                 id = llama_token_newline.front();
                 if (params.antiprompt.size() != 0) {
                 if (params.antiprompt.size() != 0) {
                     // tokenize and inject first reverse prompt
                     // tokenize and inject first reverse prompt
@@ -488,8 +488,12 @@ int main(int argc, char ** argv) {
 
 
         // end of text token
         // end of text token
         if (embd.back() == llama_token_eos()) {
         if (embd.back() == llama_token_eos()) {
-            fprintf(stderr, " [end of text]\n");
-            break;
+            if (params.instruct) {
+                is_interacting = true;
+            } else {
+                fprintf(stderr, " [end of text]\n");
+                break;
+            }
         }
         }
 
 
         // In interactive mode, respect the maximum number of tokens and drop back to user input when reached.
         // In interactive mode, respect the maximum number of tokens and drop back to user input when reached.