diff --git a/tests/test_agents.py b/tests/test_agents.py index d146a84e2..78e282d9a 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -1803,10 +1803,6 @@ def test_toolcalling_agent_api_misformatted_output(self, mock_inference_client): assert "Error while parsing" in capture.get() assert len(agent.memory.steps) == 4 - @pytest.mark.skip( - reason="Test is not properly implemented (GH-1255) because fake_tools should have the same name. " - "Additionally, it uses CodeAgent instead of ToolCallingAgent (GH-1409)" - ) def test_change_tools_after_init(self): from smolagents import tool @@ -1815,21 +1811,45 @@ def fake_tool_1() -> str: """Fake tool""" return "1" + class FakeToolCallModel(Model): + def generate(self, messages, stop_sequences=None, tools_to_call_from=None): + if len(messages) < 3: + return ChatMessage( + role=MessageRole.ASSISTANT, + content="I will call the fake tool.", + tool_calls=[ + ChatMessageToolCall( + id="call_0", + type="function", + function=ChatMessageToolCallFunction(name="fake_tool_1", arguments={}), + ) + ], + ) + else: + return ChatMessage( + role=MessageRole.ASSISTANT, + content="I will return the final answer.", + tool_calls=[ + ChatMessageToolCall( + id="call_1", + type="function", + function=ChatMessageToolCallFunction(name="final_answer", arguments={"answer": "2"}), + ) + ], + ) + + agent = ToolCallingAgent(tools=[fake_tool_1], model=FakeToolCallModel()) + @tool - def fake_tool_2() -> str: + def fake_tool_1() -> str: """Fake tool""" return "2" - class FakeCodeModel(Model): - def generate(self, messages, stop_sequences=None): - return ChatMessage(role=MessageRole.ASSISTANT, content="\nfinal_answer(fake_tool_1())\n") - - agent = CodeAgent(tools=[fake_tool_1], model=FakeCodeModel()) - agent.tools["final_answer"] = CustomFinalAnswerTool() - agent.tools["fake_tool_1"] = fake_tool_2 + agent.tools["fake_tool_1"] = fake_tool_1 answer = agent.run("Fake task.") + assert "2" in agent.memory.steps[1].observations assert answer == "2CUSTOM" def test_custom_final_answer_with_custom_inputs(self, test_tool): @@ -2094,9 +2114,6 @@ def test_end_code_appending(self): assert messages assert all(m.content.endswith("") for m in messages) - @pytest.mark.skip( - reason="Test is not properly implemented (GH-1255) because fake_tools should have the same name. " - ) def test_change_tools_after_init(self): from smolagents import tool @@ -2105,19 +2122,19 @@ def fake_tool_1() -> str: """Fake tool""" return "1" - @tool - def fake_tool_2() -> str: - """Fake tool""" - return "2" - class FakeCodeModel(Model): def generate(self, messages, stop_sequences=None): return ChatMessage(role=MessageRole.ASSISTANT, content="\nfinal_answer(fake_tool_1())\n") agent = CodeAgent(tools=[fake_tool_1], model=FakeCodeModel()) - agent.tools["final_answer"] = CustomFinalAnswerTool() - agent.tools["fake_tool_1"] = fake_tool_2 + + @tool + def fake_tool_1() -> str: + """Fake tool""" + return "2" + + agent.tools["fake_tool_1"] = fake_tool_1 answer = agent.run("Fake task.") assert answer == "2CUSTOM"