# -*- coding: utf-8 -*- """The main entry point of the Deep Research agent example.""" import asyncio import os from agentscope import logger from agentscope.formatter import DashScopeChatFormatter from agentscope.mcp import StdIOStatefulClient from agentscope.memory import InMemoryMemory from agentscope.message import Msg from agentscope.model import DashScopeChatModel from deep_research_agent import DeepResearchAgent async def main(user_query: str) -> None: """The main entry point for the Deep Research agent example.""" logger.setLevel("DEBUG") tavily_search_client = StdIOStatefulClient( name="tavily_mcp", command="npx", args=["-y", "tavily-mcp@latest"], env={"TAVILY_API_KEY": os.getenv("TAVILY_API_KEY", "")}, ) default_working_dir = os.path.join( os.path.dirname(__file__), "deepresearch_agent_demo_env", ) agent_working_dir = os.getenv( "AGENT_OPERATION_DIR", default_working_dir, ) os.makedirs(agent_working_dir, exist_ok=True) try: await tavily_search_client.connect() agent = DeepResearchAgent( name="Friday", sys_prompt="You are a helpful assistant named Friday.", model=DashScopeChatModel( api_key=os.environ.get("DASHSCOPE_API_KEY"), model_name="qwen-max", enable_thinking=False, stream=True, ), formatter=DashScopeChatFormatter(), memory=InMemoryMemory(), search_mcp_client=tavily_search_client, tmp_file_storage_dir=agent_working_dir, ) user_name = "Bob" msg = Msg( user_name, content=user_query, role="user", ) result = await agent(msg) logger.info(result) except Exception as err: logger.exception(err) finally: await tavily_search_client.close() if __name__ == "__main__": query = ( "If Eliud Kipchoge could maintain his record-making " "marathon pace indefinitely, how many thousand hours " "would it take him to run the distance between the " "Earth and the Moon its closest approach? Please use " "the minimum perigee value on the Wikipedia page for " "the Moon when carrying out your calculation. Round " "your result to the nearest 1000 hours and do not use " "any comma separators if necessary." ) try: asyncio.run(main(query)) except Exception as e: logger.exception(e)