@@ -677,6 +677,8 @@ def _create_completion(
677
677
mirostat_tau : float = 5.0 ,
678
678
mirostat_eta : float = 0.1 ,
679
679
model : Optional [str ] = None ,
680
+ stopping_criteria : Optional [StoppingCriteriaList ] = None ,
681
+ logits_processor : Optional [LogitsProcessorList ] = None ,
680
682
) -> Union [Iterator [Completion ], Iterator [CompletionChunk ]]:
681
683
assert self .ctx is not None
682
684
@@ -739,6 +741,8 @@ def _create_completion(
739
741
frequency_penalty = frequency_penalty ,
740
742
presence_penalty = presence_penalty ,
741
743
repeat_penalty = repeat_penalty ,
744
+ stopping_criteria = stopping_criteria ,
745
+ logits_processor = logits_processor ,
742
746
):
743
747
if token == self ._token_eos :
744
748
text = self .detokenize (completion_tokens )
@@ -848,6 +852,11 @@ def _create_completion(
848
852
finish_reason = "length"
849
853
break
850
854
855
+ if stopping_criteria is not None and stopping_criteria (
856
+ list (self .eval_tokens ), self .eval_logits [- 1 ]
857
+ ):
858
+ finish_reason = "stop"
859
+
851
860
if self .verbose :
852
861
llama_cpp .llama_print_timings (self .ctx )
853
862
@@ -1049,6 +1058,8 @@ def create_completion(
1049
1058
mirostat_tau : float = 5.0 ,
1050
1059
mirostat_eta : float = 0.1 ,
1051
1060
model : Optional [str ] = None ,
1061
+ stopping_criteria : Optional [StoppingCriteriaList ] = None ,
1062
+ logits_processor : Optional [LogitsProcessorList ] = None ,
1052
1063
) -> Union [Completion , Iterator [CompletionChunk ]]:
1053
1064
"""Generate text from a prompt.
1054
1065
@@ -1091,6 +1102,8 @@ def create_completion(
1091
1102
mirostat_tau = mirostat_tau ,
1092
1103
mirostat_eta = mirostat_eta ,
1093
1104
model = model ,
1105
+ stopping_criteria = stopping_criteria ,
1106
+ logits_processor = logits_processor ,
1094
1107
)
1095
1108
if stream :
1096
1109
chunks : Iterator [CompletionChunk ] = completion_or_chunks
@@ -1118,6 +1131,8 @@ def __call__(
1118
1131
mirostat_tau : float = 5.0 ,
1119
1132
mirostat_eta : float = 0.1 ,
1120
1133
model : Optional [str ] = None ,
1134
+ stopping_criteria : Optional [StoppingCriteriaList ] = None ,
1135
+ logits_processor : Optional [LogitsProcessorList ] = None ,
1121
1136
) -> Union [Completion , Iterator [CompletionChunk ]]:
1122
1137
"""Generate text from a prompt.
1123
1138
@@ -1160,6 +1175,8 @@ def __call__(
1160
1175
mirostat_tau = mirostat_tau ,
1161
1176
mirostat_eta = mirostat_eta ,
1162
1177
model = model ,
1178
+ stopping_criteria = stopping_criteria ,
1179
+ logits_processor = logits_processor ,
1163
1180
)
1164
1181
1165
1182
def _convert_text_completion_to_chat (
0 commit comments