83 lines
2.5 KiB
Python
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)
|