diff --git a/swift/llm/template/base.py b/swift/llm/template/base.py index 205254bf64..ee2b5d140f 100644 --- a/swift/llm/template/base.py +++ b/swift/llm/template/base.py @@ -1041,6 +1041,7 @@ def _swift_prepare_inputs(self, inputs: StdTemplateInputs): i += 1 pre_message['content'], tool_content = self.agent_template._format_tool_responses( pre_content, messages[i_start:i + 1]) + # where tool_content is a List. messages[i_start:i + 1] = [{'role': 'tool', 'content': tool_content}] i = i_start + 1 elif pre_role == 'assistant' and role == 'assistant' or pre_role == 'user' and role == 'user': diff --git a/swift/llm/template/template/utils.py b/swift/llm/template/template/utils.py index aa2eb2f8ed..fab39510ff 100644 --- a/swift/llm/template/template/utils.py +++ b/swift/llm/template/template/utils.py @@ -57,8 +57,10 @@ def _swift_prepare_inputs(self, inputs): # Delete the content before '' in all assistant turns except the last round. if message['role'] == 'assistant' and isinstance(message['content'], str) and i != len(messages) - 1: if self.with_answer: - message['content'] = message['content'].split('')[-1].rstrip().rstrip( - '').strip() + message['content'] = message['content'].split('')[-1].rstrip() + if message['content'].endswith(''): + message['content'] = message['content'][:-len('')] + message['content'] = message['content'].strip() else: message['content'] = self.history_think_prefix + message['content'].split( '')[-1].strip()