fix(api): use json_repair for conversation title parsing (#29649)
This commit is contained in:
@@ -72,15 +72,22 @@ class LLMGenerator:
|
|||||||
prompt_messages=list(prompts), model_parameters={"max_tokens": 500, "temperature": 1}, stream=False
|
prompt_messages=list(prompts), model_parameters={"max_tokens": 500, "temperature": 1}, stream=False
|
||||||
)
|
)
|
||||||
answer = cast(str, response.message.content)
|
answer = cast(str, response.message.content)
|
||||||
cleaned_answer = re.sub(r"^.*(\{.*\}).*$", r"\1", answer, flags=re.DOTALL)
|
if answer is None:
|
||||||
if cleaned_answer is None:
|
|
||||||
return ""
|
return ""
|
||||||
try:
|
try:
|
||||||
result_dict = json.loads(cleaned_answer)
|
result_dict = json.loads(answer)
|
||||||
answer = result_dict["Your Output"]
|
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
logger.exception("Failed to generate name after answer, use query instead")
|
result_dict = json_repair.loads(answer)
|
||||||
|
|
||||||
|
if not isinstance(result_dict, dict):
|
||||||
answer = query
|
answer = query
|
||||||
|
else:
|
||||||
|
output = result_dict.get("Your Output")
|
||||||
|
if isinstance(output, str) and output.strip():
|
||||||
|
answer = output.strip()
|
||||||
|
else:
|
||||||
|
answer = query
|
||||||
|
|
||||||
name = answer.strip()
|
name = answer.strip()
|
||||||
|
|
||||||
if len(name) > 75:
|
if len(name) > 75:
|
||||||
|
|||||||
Reference in New Issue
Block a user