import unittest import pytest from mcpuniverse.mcp.manager import MCPManager from mcpuniverse.llm.manager import ModelManager from mcpuniverse.agent.react import ReAct from mcpuniverse.tracer import Tracer from mcpuniverse.callbacks.base import Printer from mcpuniverse.callbacks.handlers.vprint import get_vprint_callbacks class TestReActAgent(unittest.IsolatedAsyncioTestCase): async def test_prompt(self): agent = ReAct( mcp_manager=MCPManager(), llm=ModelManager().build_model(name="openai"), config={"servers": [{"name": "weather"}]} ) await agent.initialize() agent._history.append("History 1") agent._history.append("History 2") prompt = agent._build_prompt(question="What's the weather in San Francisco now?") self.assertTrue("History 1" in prompt) self.assertTrue("History 2" in prompt) self.assertTrue("What's the weather in San Francisco now?" in prompt) await agent.cleanup() @pytest.mark.skip async def test_execute(self): question = "I live in San Francisco. Do I need to bring an umbrella if I need to go outside?" tracer = Tracer() agent = ReAct( mcp_manager=MCPManager(), llm=ModelManager().build_model(name="openai"), config={"servers": [{"name": "weather"}]} ) await agent.initialize() response = await agent.execute( message=question, tracer=tracer, callbacks=[Printer()] + get_vprint_callbacks() ) print(response) print(agent.get_history()) await agent.cleanup() if __name__ == "__main__": unittest.main()