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()