Support OpenAI API json_schema response format (#1363)

This commit is contained in:
zifeitong
2024-09-09 19:08:25 -07:00
committed by GitHub
parent 69b3bb9ae1
commit 9144ed1067
4 changed files with 41 additions and 21 deletions

View File

@@ -28,6 +28,13 @@ from fastapi import HTTPException, Request, UploadFile
from fastapi.responses import JSONResponse, StreamingResponse
from pydantic import ValidationError
try:
from outlines.fsm.json_schema import convert_json_schema_to_str
except ImportError:
# Before outlines 0.0.47, convert_json_schema_to_str is under
# outlines.integrations.utils
from outlines.integrations.utils import convert_json_schema_to_str
from sglang.srt.conversation import (
Conversation,
SeparatorStyle,
@@ -888,22 +895,26 @@ def v1_chat_generate_request(
return_logprobs.append(request.logprobs)
logprob_start_lens.append(-1)
top_logprobs_nums.append(request.top_logprobs)
sampling_params_list.append(
{
"temperature": request.temperature,
"max_new_tokens": request.max_tokens,
"min_new_tokens": request.min_tokens,
"stop": stop,
"stop_token_ids": request.stop_token_ids,
"top_p": request.top_p,
"presence_penalty": request.presence_penalty,
"frequency_penalty": request.frequency_penalty,
"repetition_penalty": request.repetition_penalty,
"regex": request.regex,
"json_schema": request.json_schema,
"n": request.n,
}
)
sampling_params = {
"temperature": request.temperature,
"max_new_tokens": request.max_tokens,
"min_new_tokens": request.min_tokens,
"stop": stop,
"stop_token_ids": request.stop_token_ids,
"top_p": request.top_p,
"presence_penalty": request.presence_penalty,
"frequency_penalty": request.frequency_penalty,
"repetition_penalty": request.repetition_penalty,
"regex": request.regex,
"n": request.n,
}
if request.response_format and request.response_format.type == "json_schema":
sampling_params["json_schema"] = convert_json_schema_to_str(
request.response_format.json_schema.schema_
)
sampling_params_list.append(sampling_params)
image_data_list.append(image_data)
modalities_list.extend(modalities)
if len(all_requests) == 1: