diff --git a/app/agent/__init__.py b/app/agent/__init__.py index 9965ccf9..880f6aa1 100644 --- a/app/agent/__init__.py +++ b/app/agent/__init__.py @@ -113,7 +113,11 @@ class MoviePilotAgent: ) ) elif msg.get("role") == "tool_result": - chat_history.add_message(ToolMessage(content=msg.get("content", ""))) + metadata = msg.get("metadata", {}) + chat_history.add_message(ToolMessage( + content=msg.get("content", ""), + tool_call_id=metadata.get("call_id", "unknown") + )) elif msg.get("role") == "system": chat_history.add_message(SystemMessage(content=msg.get("content", ""))) return chat_history diff --git a/app/agent/tools/base.py b/app/agent/tools/base.py index 6246ef4f..66c01c1b 100644 --- a/app/agent/tools/base.py +++ b/app/agent/tools/base.py @@ -75,7 +75,7 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta): # 记忆工具调用结果 if isinstance(result, str): formated_result = result - elif isinstance(result, int, float): + elif isinstance(result, (int, float)): formated_result = str(result) else: formated_result = json.dumps(result, ensure_ascii=False, indent=2) @@ -83,7 +83,10 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta): session_id=self._session_id, user_id=self._user_id, role="tool_result", - content=formated_result + content=formated_result, + metadata={ + "call_id": self.__class__.__name__ + } ) return result