@@ -122,7 +122,10 @@ build_chat_context() {
122
122
else
123
123
chat_context=" $chat_context \nQ: $escaped_request_prompt "
124
124
fi
125
- request_prompt=" ${chat_context// $' \n ' / \\ n} "
125
+ }
126
+
127
+ escape (){
128
+ echo " $1 " | jq -Rrs ' tojson[1:-1]'
126
129
}
127
130
128
131
# maintain chat context function for /completions (all models except
@@ -326,7 +329,7 @@ while $running; do
326
329
echo -e " ${CHATGPT_CYAN_LABEL} Complete details for model: ${prompt#* model: } \n ${model_data} "
327
330
elif [[ " $prompt " =~ ^command: ]]; then
328
331
# escape quotation marks, new lines, backslashes...
329
- escaped_prompt=$( echo " $prompt " | sed ' s/"/\\"/g ' )
332
+ escaped_prompt=$( escape " $prompt " )
330
333
escaped_prompt=${escaped_prompt# command: }
331
334
request_prompt=$COMMAND_GENERATION_PROMPT$escaped_prompt
332
335
build_user_chat_message " $request_prompt "
@@ -351,16 +354,14 @@ while $running; do
351
354
eval $response_data
352
355
fi
353
356
fi
354
- add_assistant_response_to_chat_message " $( echo " $response_data " | tr ' \n ' ' ' ) "
357
+ add_assistant_response_to_chat_message " $( escape " $response_data " ) "
355
358
356
359
timestamp=$( date +" %d/%m/%Y %H:%M" )
357
360
echo -e " $timestamp $prompt \n$response_data \n" >> ~/.chatgpt_history
358
361
359
362
elif [[ " $MODEL " =~ ^gpt- ]]; then
360
- # escape quotation marks
361
- escaped_prompt=$( echo " $prompt " | sed ' s/"/\\"/g' )
362
- # escape new lines
363
- request_prompt=${escaped_prompt// $' \n ' / ' ' }
363
+ # escape quotation marks, new lines, backslashes...
364
+ request_prompt=$( escape " $prompt " )
364
365
365
366
build_user_chat_message " $request_prompt "
366
367
response=$( request_to_chat " $chat_message " )
@@ -376,16 +377,13 @@ while $running; do
376
377
else
377
378
echo -e " ${CHATGPT_CYAN_LABEL}${response_data} " | fold -s -w $COLUMNS
378
379
fi
379
- escaped_response_data=$( echo " $response_data " | sed ' s/"/\\"/g' )
380
- add_assistant_response_to_chat_message " $chat_message " " $escaped_response_data "
380
+ add_assistant_response_to_chat_message " $( escape " $response_data " ) "
381
381
382
382
timestamp=$( date +" %d/%m/%Y %H:%M" )
383
383
echo -e " $timestamp $prompt \n$response_data \n" >> ~/.chatgpt_history
384
384
else
385
- # escape quotation marks
386
- escaped_prompt=$( echo " $prompt " | sed ' s/"/\\"/g' )
387
- # escape new lines
388
- request_prompt=${escaped_prompt// $' \n ' / ' ' }
385
+ # escape quotation marks, new lines, backslashes...
386
+ request_prompt=$( escape " $prompt " )
389
387
390
388
if [ " $CONTEXT " = true ]; then
391
389
build_chat_context " $request_prompt "
@@ -407,7 +405,7 @@ while $running; do
407
405
fi
408
406
409
407
if [ " $CONTEXT " = true ]; then
410
- maintain_chat_context " $escaped_response_data "
408
+ maintain_chat_context " $( escape " $response_data " ) "
411
409
fi
412
410
413
411
timestamp=$( date +" %d/%m/%Y %H:%M" )
0 commit comments