def get_structured_output_key(params: StructuredOutputsParams) -> StructuredOutputKey:
if params.json is not None:
if not isinstance(params.json, str):
json_str = json.dumps(params.json)
else:
json_str = params.json
return StructuredOutputOptions.JSON, json_str
if params.json_object:
return StructuredOutputOptions.JSON_OBJECT, ""
if params.regex is not None:
return StructuredOutputOptions.REGEX, params.regex
if params.choice is not None:
if not isinstance(params.choice, str):
json_str = json.dumps(params.choice)
else:
json_str = params.choice
return StructuredOutputOptions.CHOICE, json_str
if params.grammar is not None:
return StructuredOutputOptions.GRAMMAR, params.grammar
if params.structural_tag is not None:
return StructuredOutputOptions.STRUCTURAL_TAG, params.structural_tag
raise ValueError("No valid structured output parameter found")