AgentScope 支持使用 agentscope.service.WebBrowser
模块进行 Web 浏览器控制。
它允许代理与网页进行交互,并执行点击、输入和滚动等网页操作。
注意当前的 Web 浏览器模块仍处于测试阶段,在未来的一段时间内将会频繁更新和优化。
预备
WebBrowser
模块基于 Playwright 实现,需要安装最新版本的 AgentScope 和 playwright 环境:
# 从源码安装最新版本的 AgentScope
git clone https://github.com/modelscope/agentscope.git
cd agentscope
pip install -e .
# 安装 playwright
pip install playwright
playwright install
Guidance
通过以下方式初始化一个 WebBrowser
模块实例:
from agentscope.service import WebBrowser
browser = WebBrowser()
The WebBrowser
module facilitates browser control and state retrieval.
The name of the control functions are all prefixed by “action_”, e.g. action_visit_url
,
and action_click
. To see the full list of functions, calling the get_action_functions
method.
WebBrowser
模块提供了浏览器控制和状态检索的功能。
其中控制函数的名称都以 “action_” 为前缀,例如 action_visit_url
和 action_click
。可以通过调用 get_action_functions
方法查看完整的函数列表。
# 查看所有支持的操作
print(browser.get_action_functions())
# 访问新的网页
browser.action_visit_url("https://www.bing.com")
为了获取当前浏览器的状态,可以调用以 "page_"
为前缀的函数,例如 page_url
、page_title
和 page_html
。
# 当前网页的url
print(browser.page_url)
# 当前网页的标题
print(browser.page_title)
# 以 MarkDown 的格式获取当前的页面信息(通过markdownify进行解析)
print(browser.page_markdown)
# 当前网页的 html 源码(可能会太长)
print(browser.page_html)
此外,为了帮助视觉模型更好地理解网页,我们提供了 set_interactive_marks
函数,该函数会把当前网页上所有的可交互元素标记出来,并用序号标签进行标注(从0开始)。
调用 set_interactive_marks
函数标记网页后,我们就可以在网页上执行更多的操作,例如点击指定序号的按钮、在指定序号的文本框中进行输入等。
# 为网页上的交互元素添加序号标签
browser.set_interactive_marks()
# 删除交互标记
# browser.remove_interactive_marks()
与智能体结合
上述的所有函数为交互式的 Web 浏览器控制提供了基本操作接口。开发者可以使用这些接口来构建自己的 Web 浏览代理。
在 AgentScope 中,Web 浏览器也是一种工具函数,因此可以使用 agentscope.service.ServiceToolkit
来处理 WebBrowser
模块提供的函数,并构建自己的智能体。
我们在示例中提供了一个Web 浏览器智能体的样例。
可以参考该样例了解更多细节。