@@ -140,7 +140,6 @@ int main(int argc, char ** argv) {
140
140
params.prompt .insert (0 , 1 , ' ' );
141
141
142
142
std::string path_session = params.path_prompt_cache ;
143
- const bool session_save_all = params.prompt_cache_save_all ;
144
143
std::vector<llama_token> session_tokens;
145
144
146
145
if (!path_session.empty ()) {
@@ -236,6 +235,11 @@ int main(int argc, char ** argv) {
236
235
}
237
236
238
237
if (params.interactive ) {
238
+ if (params.prompt_cache_all ) {
239
+ fprintf (stderr, " error: --prompt-cache-all not supported in interactive mode yet\n " );
240
+ return 1 ;
241
+ }
242
+
239
243
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
240
244
struct sigaction sigint_action;
241
245
sigint_action.sa_handler = sigint_handler;
@@ -295,8 +299,7 @@ int main(int argc, char ** argv) {
295
299
296
300
bool is_antiprompt = false ;
297
301
bool input_echo = true ;
298
- bool need_to_save_session = !path_session.empty ();
299
-
302
+ bool need_to_save_session = !path_session.empty () && n_matching_session_tokens < embd_inp.size ();
300
303
301
304
int n_past = 0 ;
302
305
int n_remain = params.n_predict ;
@@ -325,11 +328,7 @@ int main(int argc, char ** argv) {
325
328
embd.insert (embd.begin (), last_n_tokens.begin () + n_ctx - n_left/2 - embd.size (), last_n_tokens.end () - embd.size ());
326
329
327
330
// stop saving session if we run out of context
328
- if (!path_session.empty () && session_save_all) {
329
- llama_save_session_file (ctx, path_session.c_str (),
330
- session_tokens.data (), session_tokens.size ());
331
- }
332
- path_session = " " ;
331
+ path_session.clear ();
333
332
334
333
// printf("\n---\n");
335
334
// printf("resetting: '");
@@ -604,7 +603,7 @@ int main(int argc, char ** argv) {
604
603
}
605
604
}
606
605
607
- if (!path_session.empty () && session_save_all ) {
606
+ if (!path_session.empty () && params. prompt_cache_all ) {
608
607
fprintf (stderr, " \n %s: saving final output to session file '%s'\n " , __func__, path_session.c_str ());
609
608
llama_save_session_file (ctx, path_session.c_str (), session_tokens.data (), session_tokens.size ());
610
609
}
0 commit comments