import asyncio
from os import environ
from textwrap import dedent
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.mcp import MCPTools
from mcp import StdioServerParameters
async def run_agent(message: str) -> None:
server_params = StdioServerParameters(
command="node",
# 将此路径更新为您克隆存储库的位置
args=["mcp-server-browserbase/stagehand/dist/index.js"],
env=environ.copy(),
)
async with MCPTools(server_params=server_params, timeout_seconds=60) as mcp_tools:
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[mcp_tools],
instructions=dedent("""\
您是一位网页抓取助手,可以从 Hacker News 创建简洁的读者摘要。
关键初始化规则 - 严格遵守:
1. 在成功导航**之后**才能使用截图工具
2. **始终先**使用 stagehand_navigate
3. 在执行任何其他操作之前等待导航成功消息
4. 如果看到初始化错误,请仅重启导航
5. 使用 stagehand_observe 和 stagehand_extract 安全地浏览页面
可用工具和安全使用顺序:
- stagehand_navigate:**首先**用于初始化浏览器
- stagehand_extract:用于从页面提取结构化数据
- stagehand_observe:用于查找元素和理解页面结构
- stagehand_act:用于点击链接和导航到评论
- screenshot:仅在导航成功且页面加载后使用
您的目标是创建一个全面而简洁的摘要,包括:
- 带有简短摘要的顶部标题
- 关键主题和趋势
- 值得注意的评论和见解
- 整体科技新闻格局概览
请有条理地提取结构化数据,并提供有价值的见解。
"""),
markdown=True,
show_tool_calls=True,
)
await agent.aprint_response(message, stream=True)
if __name__ == "__main__":
asyncio.run(
run_agent(
"从 https://news.ycombinator.com 创建一份全面的 Hacker News 读者摘要"
)
)