From de610cbf3928acecdaeb563ca96ac90793589464 Mon Sep 17 00:00:00 2001 From: Stream Date: Fri, 16 Jan 2026 17:41:00 +0800 Subject: [PATCH] fix: call `get_text_content()` instead of casting to `str` (#31121) Signed-off-by: Stream Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- api/core/llm_generator/llm_generator.py | 27 ++++++++++--------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/api/core/llm_generator/llm_generator.py b/api/core/llm_generator/llm_generator.py index b4c3ec1caf..be1e306d47 100644 --- a/api/core/llm_generator/llm_generator.py +++ b/api/core/llm_generator/llm_generator.py @@ -71,8 +71,8 @@ class LLMGenerator: response: LLMResult = model_instance.invoke_llm( prompt_messages=list(prompts), model_parameters={"max_tokens": 500, "temperature": 1}, stream=False ) - answer = cast(str, response.message.content) - if answer is None: + answer = response.message.get_text_content() + if answer == "": return "" try: result_dict = json.loads(answer) @@ -184,7 +184,7 @@ class LLMGenerator: prompt_messages=list(prompt_messages), model_parameters=model_parameters, stream=False ) - rule_config["prompt"] = cast(str, response.message.content) + rule_config["prompt"] = response.message.get_text_content() except InvokeError as e: error = str(e) @@ -237,13 +237,11 @@ class LLMGenerator: return rule_config - rule_config["prompt"] = cast(str, prompt_content.message.content) + rule_config["prompt"] = prompt_content.message.get_text_content() - if not isinstance(prompt_content.message.content, str): - raise NotImplementedError("prompt content is not a string") parameter_generate_prompt = parameter_template.format( inputs={ - "INPUT_TEXT": prompt_content.message.content, + "INPUT_TEXT": prompt_content.message.get_text_content(), }, remove_template_variables=False, ) @@ -253,7 +251,7 @@ class LLMGenerator: statement_generate_prompt = statement_template.format( inputs={ "TASK_DESCRIPTION": instruction, - "INPUT_TEXT": prompt_content.message.content, + "INPUT_TEXT": prompt_content.message.get_text_content(), }, remove_template_variables=False, ) @@ -263,7 +261,7 @@ class LLMGenerator: parameter_content: LLMResult = model_instance.invoke_llm( prompt_messages=list(parameter_messages), model_parameters=model_parameters, stream=False ) - rule_config["variables"] = re.findall(r'"\s*([^"]+)\s*"', cast(str, parameter_content.message.content)) + rule_config["variables"] = re.findall(r'"\s*([^"]+)\s*"', parameter_content.message.get_text_content()) except InvokeError as e: error = str(e) error_step = "generate variables" @@ -272,7 +270,7 @@ class LLMGenerator: statement_content: LLMResult = model_instance.invoke_llm( prompt_messages=list(statement_messages), model_parameters=model_parameters, stream=False ) - rule_config["opening_statement"] = cast(str, statement_content.message.content) + rule_config["opening_statement"] = statement_content.message.get_text_content() except InvokeError as e: error = str(e) error_step = "generate conversation opener" @@ -315,7 +313,7 @@ class LLMGenerator: prompt_messages=list(prompt_messages), model_parameters=model_parameters, stream=False ) - generated_code = cast(str, response.message.content) + generated_code = response.message.get_text_content() return {"code": generated_code, "language": code_language, "error": ""} except InvokeError as e: @@ -351,7 +349,7 @@ class LLMGenerator: raise TypeError("Expected LLMResult when stream=False") response = result - answer = cast(str, response.message.content) + answer = response.message.get_text_content() return answer.strip() @classmethod @@ -375,10 +373,7 @@ class LLMGenerator: prompt_messages=list(prompt_messages), model_parameters=model_parameters, stream=False ) - raw_content = response.message.content - - if not isinstance(raw_content, str): - raise ValueError(f"LLM response content must be a string, got: {type(raw_content)}") + raw_content = response.message.get_text_content() try: parsed_content = json.loads(raw_content)