Files
evotraders/deep_research/agent_deep_research/main.py
2025-11-07 10:00:43 +08:00

83 lines
2.5 KiB
Python

# -*- coding: utf-8 -*-
"""The main entry point of the Deep Research agent example."""
import asyncio
import os
from deep_research_agent import DeepResearchAgent
from agentscope import logger
from agentscope.formatter import DashScopeChatFormatter
from agentscope.memory import InMemoryMemory
from agentscope.model import DashScopeChatModel
from agentscope.message import Msg
from agentscope.mcp import StdIOStatefulClient
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)