@ -7,6 +7,7 @@
# include <cstdio>
# include <cstdio>
# include <cstring>
# include <cstring>
# include <fstream>
# include <fstream>
# include <iostream>
# include <map>
# include <map>
# include <string>
# include <string>
# include <vector>
# include <vector>
@ -997,11 +998,6 @@ int main(int argc, char ** argv) {
break ;
break ;
}
}
}
}
// reset color to default if we there is no pending user input
if ( ! input_noecho & & params . use_color & & ( int ) embd_inp . size ( ) = = input_consumed ) {
printf ( ANSI_COLOR_RESET ) ;
}
}
}
// display text
// display text
@ -1011,6 +1007,10 @@ int main(int argc, char ** argv) {
}
}
fflush ( stdout ) ;
fflush ( stdout ) ;
}
}
// reset color to default if we there is no pending user input
if ( ! input_noecho & & params . use_color & & ( int ) embd_inp . size ( ) = = input_consumed ) {
printf ( ANSI_COLOR_RESET ) ;
}
// in interactive mode, and not currently processing queued inputs;
// in interactive mode, and not currently processing queued inputs;
// check if we should prompt the user for more
// check if we should prompt the user for more
@ -1032,43 +1032,33 @@ int main(int argc, char ** argv) {
}
}
// currently being interactive
// currently being interactive
if ( params . use_color ) printf ( ANSI_BOLD ANSI_COLOR_GREEN ) ;
std : : string buffer ;
std : : string line ;
bool another_line = true ;
bool another_line = true ;
while ( another_line ) {
do {
fflush ( stdout ) ;
std : : getline ( std : : cin , line ) ;
char buf [ 256 ] = { 0 } ;
if ( line . empty ( ) | | line . back ( ) ! = ' \\ ' ) {
int n_read ;
if ( params . use_color ) printf ( ANSI_BOLD ANSI_COLOR_GREEN ) ;
if ( scanf ( " %255[^ \n ]%n%*c " , buf , & n_read ) < = 0 ) {
// presumable empty line, consume the newline
std : : ignore = scanf ( " %*c " ) ;
n_read = 0 ;
}
if ( params . use_color ) printf ( ANSI_COLOR_RESET ) ;
if ( n_read > 0 & & buf [ n_read - 1 ] = = ' \\ ' ) {
another_line = true ;
buf [ n_read - 1 ] = ' \n ' ;
buf [ n_read ] = 0 ;
} else {
another_line = false ;
another_line = false ;
buf [ n_read ] = ' \n ' ;
} else {
buf [ n_read + 1 ] = 0 ;
line . pop_back ( ) ; // Remove the continue character
}
std : : vector < gpt_vocab : : id > line_inp = : : llama_tokenize ( vocab , buf , false ) ;
embd_inp . insert ( embd_inp . end ( ) , line_inp . begin ( ) , line_inp . end ( ) ) ;
if ( params . instruct ) {
embd_inp . insert ( embd_inp . end ( ) , inp_sfx . begin ( ) , inp_sfx . end ( ) ) ;
}
}
buffer + = line + ' \n ' ; // Append the line to the result
} while ( another_line ) ;
if ( params . use_color ) printf ( ANSI_COLOR_RESET ) ;
remaining_tokens - = line_inp . size ( ) ;
std : : vector < gpt_vocab : : id > line_inp = : : llama_tokenize ( vocab , buffer , false ) ;
embd_inp . insert ( embd_inp . end ( ) , line_inp . begin ( ) , line_inp . end ( ) ) ;
input_noecho = true ; // do not echo this again
if ( params . instruct ) {
embd_inp . insert ( embd_inp . end ( ) , inp_sfx . begin ( ) , inp_sfx . end ( ) ) ;
}
}
is_interacting = false ;
remaining_tokens - = line_inp . size ( ) ;
input_noecho = true ; // do not echo this again
}
}
is_interacting = false ;
}
}
// end of text token
// end of text token