File tree Expand file tree Collapse file tree 3 files changed +33
-0
lines changed Expand file tree Collapse file tree 3 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -36,6 +36,9 @@ class CompletionRequest(BaseModel):
36
36
logit_bias : Optional [Dict [str , float ]] = None
37
37
user : Optional [str ] = None
38
38
39
+ # Extra parameters for SRT backend only and will be ignored by OpenAI models.
40
+ regex : Optional [str ] = None
41
+
39
42
40
43
class CompletionResponseChoice (BaseModel ):
41
44
index : int
@@ -119,6 +122,9 @@ class ChatCompletionRequest(BaseModel):
119
122
user : Optional [str ] = None
120
123
best_of : Optional [int ] = None
121
124
125
+ # Extra parameters for SRT backend only and will be ignored by OpenAI models.
126
+ regex : Optional [str ] = None
127
+
122
128
123
129
class ChatMessage (BaseModel ):
124
130
role : Optional [str ] = None
Original file line number Diff line number Diff line change @@ -151,6 +151,7 @@ async def v1_completions(raw_request: Request):
151
151
"top_p" : request .top_p ,
152
152
"presence_penalty" : request .presence_penalty ,
153
153
"frequency_penalty" : request .frequency_penalty ,
154
+ "regex" : request .regex ,
154
155
},
155
156
return_logprob = request .logprobs is not None ,
156
157
stream = request .stream ,
@@ -304,6 +305,7 @@ async def v1_chat_completions(raw_request: Request):
304
305
"top_p" : request .top_p ,
305
306
"presence_penalty" : request .presence_penalty ,
306
307
"frequency_penalty" : request .frequency_penalty ,
308
+ "regex" : request .regex ,
307
309
},
308
310
stream = request .stream ,
309
311
)
Original file line number Diff line number Diff line change 14
14
"""
15
15
16
16
import argparse
17
+ import json
17
18
18
19
import openai
19
20
@@ -151,6 +152,29 @@ def test_chat_completion_stream(args):
151
152
print ()
152
153
153
154
155
+ def test_regex (args ):
156
+ client = openai .Client (api_key = "EMPTY" , base_url = args .base_url )
157
+
158
+ regex = (r"""\{\n"""
159
+ + r""" "name": "[\w]+",\n"""
160
+ + r""" "population": "[\w\d\s]+"\n"""
161
+ + r"""\}"""
162
+ )
163
+
164
+ response = client .chat .completions .create (
165
+ model = "default" ,
166
+ messages = [
167
+ {"role" : "system" , "content" : "You are a helpful AI assistant" },
168
+ {"role" : "user" , "content" : "Introduce the capital of France." },
169
+ ],
170
+ temperature = 0 ,
171
+ max_tokens = 128 ,
172
+ extra_body = {"regex" : regex },
173
+ )
174
+ text = response .choices [0 ].message .content
175
+ print (json .loads (text ))
176
+
177
+
154
178
if __name__ == "__main__" :
155
179
parser = argparse .ArgumentParser ()
156
180
parser .add_argument ("--base-url" , type = str , default = "http://127.0.0.1:30000/v1" )
@@ -169,5 +193,6 @@ def test_chat_completion_stream(args):
169
193
test_completion_stream (args , echo = True , logprobs = True )
170
194
test_chat_completion (args )
171
195
test_chat_completion_stream (args )
196
+ test_regex (args )
172
197
if args .test_image :
173
198
test_chat_completion_image (args )
You can’t perform that action at this time.
0 commit comments