import os
import asyncio
import agentscope
from agentscope.agent import ReActAgent, UserAgent
from agentscope.model import DashScopeChatModel
from agentscope.formatter import DashScopeChatFormatter
from agentscope.mcp import StdIOStatefulClient
from agentscope.tool import Toolkit
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
async def browser_use_demo():
"""
1. 连接 browser-use MCP
2. 注册浏览器自动化工具
3. 创建智能体
"""
# 初始化 AgentScope
agentscope.init()
# 创建工具包
toolkit = Toolkit()
# 创建 Browser-use MCP 客户端
# 环境变量配置
browser_env = {
"OPENAI_API_KEY": os.environ.get("OPENAI_API_KEY"),
"BROWSER_USE_HEADLESS": os.environ.get("BROWSER_USE_HEADLESS", "true"),
"BROWSER_USE_DISABLE_SECURITY": os.environ.get("BROWSER_USE_DISABLE_SECURITY", "false"),
}
# 以 StdIO 创建 Browser-use MCP 客户端
browser_use_client = StdIOStatefulClient(
name="browser_use_mcp",
command="browser-use",
args=["--mcp"],
env=browser_env
)
try:
# 连接到 browser-use MCP
await browser_use_client.connect()
# 注册 browser-use MCP 工具
await toolkit.register_mcp_client(browser_use_client)
# 创建支持浏览器操作的智能体
agent = ReActAgent(
name="BrowserBot",
sys_prompt="""你是一个网页自动化助手,能够执行各种浏览器操作。""",
model=DashScopeChatModel(
api_key=os.environ.get("DASHSCOPE_API_KEY"),
model_name="qwen-max",
enable_thinking=False,
stream=True,
),
formatter=DashScopeChatFormatter(),
toolkit=toolkit,
parallel_tool_calls=True,
)
# 创建用户智能体
user = UserAgent(name="User")
print("n🤖 Browser-use 智能体已准备就绪!")
print("💡 你可以要求我执行各种网页自动化任务,例如:")
print(" - 访问http://xxx")
print(" - 点击xxx按钮")
print(" - 填写表单,在xxx输入xxx")
print(" - 输入 'exit' 退出程序n")
# 交互循环
msg = None
while True:
msg = await user(msg)
if msg.get_text_content().lower() == "exit":
break
msg = await agent(msg)
except Exception as e:
print(e)
finally:
# 清理资源
try:
await browser_use_client.close()
except Exception as e:
print(e)
if __name__ == "__main__":
asyncio.run(browser_use_demo())