Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
change
sglang
Commits
50afed4e
"tests/L0/vscode:/vscode.git/clone" did not exist on "2c6c0f288f94ad4af439c74bc24f8db79dfe2886"
Unverified
Commit
50afed4e
authored
Feb 10, 2024
by
Cody Yu
Committed by
GitHub
Feb 10, 2024
Browse files
Support extra field regex in OpenAI API (#172)
parent
4d303c4f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
0 deletions
+33
-0
python/sglang/srt/managers/openai_protocol.py
python/sglang/srt/managers/openai_protocol.py
+6
-0
python/sglang/srt/server.py
python/sglang/srt/server.py
+2
-0
test/srt/test_openai_server.py
test/srt/test_openai_server.py
+25
-0
No files found.
python/sglang/srt/managers/openai_protocol.py
View file @
50afed4e
...
...
@@ -36,6 +36,9 @@ class CompletionRequest(BaseModel):
logit_bias
:
Optional
[
Dict
[
str
,
float
]]
=
None
user
:
Optional
[
str
]
=
None
# Extra parameters for SRT backend only and will be ignored by OpenAI models.
regex
:
Optional
[
str
]
=
None
class
CompletionResponseChoice
(
BaseModel
):
index
:
int
...
...
@@ -119,6 +122,9 @@ class ChatCompletionRequest(BaseModel):
user
:
Optional
[
str
]
=
None
best_of
:
Optional
[
int
]
=
None
# Extra parameters for SRT backend only and will be ignored by OpenAI models.
regex
:
Optional
[
str
]
=
None
class
ChatMessage
(
BaseModel
):
role
:
Optional
[
str
]
=
None
...
...
python/sglang/srt/server.py
View file @
50afed4e
...
...
@@ -151,6 +151,7 @@ async def v1_completions(raw_request: Request):
"top_p"
:
request
.
top_p
,
"presence_penalty"
:
request
.
presence_penalty
,
"frequency_penalty"
:
request
.
frequency_penalty
,
"regex"
:
request
.
regex
,
},
return_logprob
=
request
.
logprobs
is
not
None
,
stream
=
request
.
stream
,
...
...
@@ -304,6 +305,7 @@ async def v1_chat_completions(raw_request: Request):
"top_p"
:
request
.
top_p
,
"presence_penalty"
:
request
.
presence_penalty
,
"frequency_penalty"
:
request
.
frequency_penalty
,
"regex"
:
request
.
regex
,
},
stream
=
request
.
stream
,
)
...
...
test/srt/test_openai_server.py
View file @
50afed4e
...
...
@@ -14,6 +14,7 @@ The capital of Japan is Tokyo
"""
import
argparse
import
json
import
openai
...
...
@@ -151,6 +152,29 @@ def test_chat_completion_stream(args):
print
()
def
test_regex
(
args
):
client
=
openai
.
Client
(
api_key
=
"EMPTY"
,
base_url
=
args
.
base_url
)
regex
=
(
r
"""\{\n"""
+
r
""" "name": "[\w]+",\n"""
+
r
""" "population": "[\w\d\s]+"\n"""
+
r
"""\}"""
)
response
=
client
.
chat
.
completions
.
create
(
model
=
"default"
,
messages
=
[
{
"role"
:
"system"
,
"content"
:
"You are a helpful AI assistant"
},
{
"role"
:
"user"
,
"content"
:
"Introduce the capital of France."
},
],
temperature
=
0
,
max_tokens
=
128
,
extra_body
=
{
"regex"
:
regex
},
)
text
=
response
.
choices
[
0
].
message
.
content
print
(
json
.
loads
(
text
))
if
__name__
==
"__main__"
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
"--base-url"
,
type
=
str
,
default
=
"http://127.0.0.1:30000/v1"
)
...
...
@@ -169,5 +193,6 @@ if __name__ == "__main__":
test_completion_stream
(
args
,
echo
=
True
,
logprobs
=
True
)
test_chat_completion
(
args
)
test_chat_completion_stream
(
args
)
test_regex
(
args
)
if
args
.
test_image
:
test_chat_completion_image
(
args
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment