Playwright 是由此工具包用于与浏览器交互。虽然其他工具(如Microsoft开发的开源自动化工具,允许你以编程方式控制和自动化网络浏览器。它专为端到端测试、数据抓取以及跨各种网络浏览器(如Chromium、Firefox和WebKit)的自动化任务而设计。
Requests 工具)适用于静态网站,但 PlayWright Browser 工具包让你的智能体能够浏览网络并与动态渲染的网站进行交互。
PlayWright Browser 工具包中包含的一些工具包括:
NavigateTool(navigate_browser) - 导航到一个 URLNavigateBackTool(previous_page) - 等待一个元素出现ClickTool(click_element) - 点击一个元素(通过选择器指定)ExtractTextTool(extract_text) - 使用 beautiful soup 从当前网页提取文本ExtractHyperlinksTool(extract_hyperlinks) - 使用 beautiful soup 从当前网页提取超链接GetElementsTool(get_elements) - 通过 CSS 选择器选择元素CurrentPageTool(current_page) - 获取当前页面 URL
pip install -qU playwright > /dev/null
pip install -qU lxml
# 如果这是你第一次使用 playwright,你需要安装一个浏览器可执行文件。
# 默认运行 `playwright install` 会安装一个 chromium 浏览器可执行文件。
# playwright install
from langchain_community.agent_toolkits import PlayWrightBrowserToolkit
from langchain_community.tools.playwright.utils import (
create_async_playwright_browser, # 提供了一个同步浏览器,尽管它与 jupyter 不兼容。\n", },
)
# 此导入仅适用于 jupyter notebooks,因为它们有自己的事件循环
import nest_asyncio
nest_asyncio.apply()
实例化浏览器工具包
始终建议使用 from_browser 方法进行实例化,以便正确初始化和管理浏览器上下文,确保无缝交互和资源优化。async_browser = create_async_playwright_browser()
toolkit = PlayWrightBrowserToolkit.from_browser(async_browser=async_browser)
tools = toolkit.get_tools()
tools
[ClickTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>),
NavigateTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>),
NavigateBackTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>),
ExtractTextTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>),
ExtractHyperlinksTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>),
GetElementsTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>),
CurrentWebPageTool(async_browser=<Browser type=<BrowserType name=chromium executable_path=/Users/isaachershenson/Library/Caches/ms-playwright/chromium-1124/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=127.0.6533.17>)]
tools_by_name = {tool.name: tool for tool in tools}
navigate_tool = tools_by_name["navigate_browser"]
get_elements_tool = tools_by_name["get_elements"]
await navigate_tool.arun(
{"url": "https://web.archive.org/web/20230428133211/https://cnn.com/world"}
)
'导航到 https://web.archive.org/web/20230428133211/https://cnn.com/world 返回状态码 200'
# 浏览器在工具间共享,因此智能体可以以有状态的方式进行交互
await get_elements_tool.arun(
{"selector": ".container__headline", "attributes": ["innerText"]}
)
'[{"innerText": "这些乌克兰兽医冒着生命危险在战区照顾狗和猫"}, {"innerText": "海洋‘暮光带’中的生命可能因气候危机而消失"}, {"innerText": "苏丹暴力事件中,西达尔富尔的冲突再次爆发,食物和水短缺加剧"}, {"innerText": "泰国警察的妻子因涉嫌谋杀和另外十几起中毒案接受调查"}, {"innerText": "美国教师乘坐法国撤离飞机逃离苏丹,国内未提供任何帮助"}, {"innerText": "迪拜新兴的嘻哈场景正在找到自己的声音"}, {"innerText": "一部水下电影如何启发了肯尼亚海岸外的一个海洋保护区"}, {"innerText": "研究揭示,俄罗斯在乌克兰部署的伊朗无人机由窃取的西方技术提供动力"}, {"innerText": "印度称边境违规行为侵蚀了与中国关系的‘全部基础’"}, {"innerText": "澳大利亚警方在3000吨垃圾中搜寻失踪女子的遗骸"}, {"innerText": "随着美国和菲律宾防务关系加强,中国就台湾紧张局势发出警告"}, {"innerText": "唐·麦克莱恩向曾向拜登演唱《美国派》的韩国总统提供二重唱"}, {"innerText": "研究发现,亚洲近三分之二的大象栖息地已经丧失"}, {"innerText": "‘我们不睡觉……我会称之为昏厥’:在苏丹危机中担任医生"}, {"innerText": "肯尼亚逮捕第二位面临‘与其追随者大规模杀害有关’刑事指控的牧师"}, {"innerText": "俄罗斯对乌克兰发动致命打击浪潮"}, {"innerText": "女子被迫离开她的永久家园,否则‘走向死亡’,她说"}, {"innerText": "美国众议院议长凯文·麦卡锡就迪士尼-德桑蒂斯之争发表看法"}, {"innerText": "双方同意延长苏丹停火"}, {"innerText": "西班牙国防部长证实,豹2坦克正在运往乌克兰的途中"}, {"innerText": "火焰披萨被认为引发了马德里餐厅致命火灾"}, {"innerText": "俄罗斯意外袭击该市几天后,别尔哥罗德又发现一枚炸弹"}, {"innerText": "一名黑人少年的谋杀引发了英国警务中种族主义的危机。三十年过去了,情况几乎没有改变"}, {"innerText": "比利时销毁一批美国啤酒,因不满‘啤酒中的香槟’标语"}, {"innerText": "英国首相里希·苏纳克因顶级盟友拉布因欺凌指控辞职而受到震动"}, {"innerText": "伊朗海军扣押一艘悬挂马绍尔群岛国旗的船只"}, {"innerText": "分裂的以色列在其75岁生日之际站在危险的十字路口"}, {"innerText": "巴勒斯坦记者通过在以色列电视台用希伯来语报道打破障碍"}, {"innerText": "五分之一的水污染来自纺织染料。但一种受贝类启发的解决方案可能可以净化它"}, {"innerText": "‘人们为了仅仅10美元牺牲了生命’:也门人群拥挤事件造成至少78人死亡"}, {"innerText": "以色列警方称,两名男子在耶路撒冷犹太墓附近被枪击,疑似‘恐怖袭击’"}, {"innerText": "查尔斯三世国王的加冕典礼:谁将在仪式上表演"}, {"innerText": "一周图片精选(33张)"}, {"innerText": "香港濒危海龟"}, {"innerText": "图片:英国卡米拉王后"}, {"innerText": "分析发现,使数百万人陷入危机的灾难性干旱因气候变化而变得可能百倍"}, {"innerText": "多年来,一家英国矿业巨头在赞比亚因污染问题无人敢惹,直到一位前矿工的儿子与他们对抗"}, {"innerText": "因战争罪指控被通缉的苏丹前部长艾哈迈德·哈伦从喀土穆监狱获释"}, {"innerText": "世卫组织警告存在‘生物风险’,此前苏丹武装人员夺取实验室,暴力事件破坏了美国斡旋的停火"}, {"innerText": "哥伦比亚的佩特罗,一位前左翼游击队员,如何在华盛顿找到突破口"}, {"innerText": "博索纳罗的律师称,他意外创建了一个质疑巴西选举结果的 Facebook 帖子"}, {"innerText": "海地人群杀死十几名疑似帮派成员"}, {"innerText": "查获数千瓶含有液态甲基苯丙胺的龙舌兰酒"}, {"innerText": "为何派遣美国隐形潜艇前往韩国——并告知全世界?"}, {"innerText": "福岛的渔业在核灾难中幸存下来。12年后,它担心东京的下一步行动可能会将其终结"}, {"innerText": "新加坡处决一名走私两磅大麻的男子"}, {"innerText": "泰国保守党希望通过合法化性玩具的承诺来吸引选民"}, {"innerText": "美国人正在重新定居的意大利村庄内部"}, {"innerText": "罢工、飙升的机票价格和波动的酒店费用:加冕典礼旅行者指南"}, {"innerText": "在阿塞拜疆的一年:从春季大奖赛到冬季滑雪冒险"}, {"innerText": "在开普敦推动两轮革命的自行车市长"}, {"innerText": "东京拉面店禁止顾客在用餐时使用手机"}, {"innerText": "南非歌剧明星将在查尔斯三世国王的加冕典礼上表演"}, {"innerText": "奢侈品拍卖:法国拍卖从毒贩处查获的物品"}, {"innerText": "朱迪·布鲁姆的书对几代读者产生了深远影响。以下是它们经久不衰的原因"}, {"innerText": "工艺、回收和可持续性成为米兰设计周的中心主题"}, {"innerText": "为庆祝加冕典礼,揭幕真人大小的查尔斯三世国王巧克力雕塑"}, {"innerText": "严重风暴将再次袭击南部,德克萨斯州数百万人可能遭遇破坏性大风和冰雹"}, {"innerText": "南部再次成为恶劣天气的目标,大冰雹和龙卷风的多日威胁持续"}, {"innerText": "春季融雪使密西西比河沿岸城市为家庭和企业洪水做准备"}, {"innerText": "了解龙卷风观察、龙卷风警告和龙卷风紧急情况之间的区别"}, {"innerText": "记者发现熟悉的面孔在报道苏丹撤离。看看接下来发生了什么"}, {"innerText": "这个国家很快将成为世界上人口最多的国家"}, {"innerText": "2023年4月27日 - 俄罗斯-乌克兰新闻"}, {"innerText": "‘他们经常互相射击’:乌克兰无人机操作员详述俄罗斯军队的混乱"}, {"innerText": "听听困在苏丹的美国人家庭成员对美国回应的沮丧"}, {"innerText": "美国脱口秀主持人杰瑞·斯普林格去世,享年79岁"}, {"innerText": "官僚主义至少拖延了一个家庭从苏丹撤离"}, {"innerText": "女孩将获得针对罕见免疫疾病的救命治疗"}, {"innerText": "海地犯罪率一年内翻了一番多"}, {"innerText": "海洋普查旨在发现10万种以前未知的海洋物种"}, {"innerText": "《华尔街日报》编辑讨论记者在莫斯科被捕事件"}, {"innerText": "突尼斯的民主能被拯救吗?"}, {"innerText": "‘明星建筑师’转行社会工程师的雅斯明·拉里赢得建筑界最令人垂涎的奖项之一"}, {"innerText": "一座巨大的、新修复的弗兰克·劳埃德·赖特豪宅正在出售"}, {"innerText": "这些是世界上最可持续的建筑项目吗?"}, {"innerText": "走进一座价值7200万美元的伦敦联排别墅,它位于一个改建的军营内"}, {"innerText": "一家3D打印公司正准备在月球表面建造。但首先,在国内进行一次登月尝试"}, {"innerText": "西蒙娜·哈勒普表示‘压力巨大’,她正在努力在药检阳性后重返网坛"}, {"innerText": "巴塞罗那与切尔西战平,连续第三次进入女足欧冠决赛"}, {"innerText": "雷克瑟姆:一个融合好莱坞魅力与体育浪漫的迷人故事"}, {"innerText": "大谷翔平在天使队胜利中险些再次创造MLB历史"}, {"innerText": "这位CNN英雄正在招募休闲潜水员,帮助佛罗里达州一个珊瑚一个珊瑚地重建珊瑚礁"}, {"innerText": "这位CNN英雄为无家可归者的宠物提供无评判的兽医护理"}, {"innerText": "不要放弃里程碑:一位CNN英雄在自闭症意识月的信息"}, {"innerText": "年度CNN英雄内莉·切博伊带着帮助更多学生摆脱贫困的计划返回肯尼亚"}]'
# 如果智能体想记住当前网页,它可以使用 `current_webpage` 工具
await tools_by_name["current_webpage"].arun({})
'https://web.archive.org/web/20230428133211/https://cnn.com/world'
在智能体中使用
一些浏览器工具是StructuredTool,这意味着它们期望多个参数。这些工具与早于 STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION 的智能体不兼容(开箱即用)。
from langchain_anthropic import ChatAnthropic
from langchain.agents import create_agent
model = ChatAnthropic(
model_name="claude-haiku-4-5-20251001", temperature=0
) # 或任何其他 LLM,例如 ChatOpenAI(), OpenAI()
agent_chain = create_agent(model=model, tools=tools)
result = await agent_chain.ainvoke(
{"messages": [("user", "langchain.com 上的标题是什么?")]}
)
print(result)
> 进入新的 AgentExecutor 链...
思考:要找到 langchain.com 上的标题,我将导航到该网站并提取文本。
操作:
\`\`\`
{
"action": "navigate_browser",
"action_input": "https://langchain.com"
}
\`\`\`
观察:导航到 https://langchain.com 返回状态码 200
思考:好的,让我们找到 langchain.com 网站上的标题。
操作:
\`\`\`
{
"action": "extract_text",
"action_input": {}
}
\`\`\`
观察:LangChain 我们重视您的隐私 我们使用 Cookie 来分析我们的流量。通过点击“全部接受”,您同意我们使用 Cookie。隐私政策 自定义 拒绝全部 接受全部 自定义同意偏好 我们可能会使用 Cookie 来帮助您高效导航并执行某些功能。您可以在下面的每个同意类别下找到有关所有 Cookie 的详细信息。被归类为“必要”的 Cookie 存储在您的浏览器上,因为它们对于启用网站的基本功能至关重要.... 显示更多 必要 始终启用 必要 Cookie 是启用此网站基本功能所必需的,例如提供安全登录或调整您的同意偏好。这些 Cookie 不存储任何个人可识别数据。功能性 功能性 Cookie 有助于执行某些功能,例如在社交媒体平台上分享网站内容、收集反馈和其他第三方功能。分析 分析性 Cookie 用于了解访问者如何与网站互动。这些 Cookie 有助于提供有关访客数量、跳出率、流量来源等指标的信息。性能 性能 Cookie 用于了解和分析网站的关键性能指标,从而为访问者提供更好的用户体验。广告 广告 Cookie 用于根据您之前访问的页面为访问者提供定制广告,并分析广告活动的效果。未分类 其他未分类 Cookie 是那些正在被分析且尚未归入任何类别的 Cookie。拒绝全部 保存我的偏好 接受全部 产品 LangChain LangSmith LangGraph 方法 检索 智能体 评估 资源 博客 案例研究 用例灵感 专家 更新日志 文档 LangChain 文档 LangSmith 文档 公司 关于 职业 定价 获取演示 注册 LangChain 的产品套件支持开发者在 LLM 应用程序生命周期的每一步。能够推理的应用程序。由 LangChain 提供支持。获取演示 免费注册 从初创公司到全球企业,雄心勃勃的构建者选择 LangChain 产品。构建 LangChain 是一个通过链接可互操作组件来构建 LLM 的框架。LangGraph 是构建可控智能体工作流的框架。运行 使用 LangGraph Cloud 大规模部署您的 LLM 应用程序,这是我们专为智能体构建的基础设施。管理 在 LangSmith 中调试、协作、测试和监控您的 LLM 应用程序——无论它是使用 LangChain 框架构建的。使用 LangChain 构建您的应用程序 使用 LangChain 的灵活框架构建上下文感知、推理应用程序,利用您公司的数据和 API。通过将供应商选择性作为 LLM 基础设施设计的一部分,使您的应用程序面向未来。了解更多关于 LangChain 使用 LangGraph Cloud 大规模运行 使用 LangGraph Cloud 部署您的 LangGraph 应用程序,实现容错可扩展性——包括支持异步后台作业、内置持久性和分布式任务队列。了解更多关于 LangGraph 使用 LangSmith 管理 LLM 性能 使用 LangSmith 的调试、测试、部署和监控工作流更快地交付。不要依赖“感觉”——为您的 LLM 开发工作流增加工程严谨性,无论您是使用 LangChain 构建。了解更多关于 LangSmith 听听我们满意的客户怎么说 LangChain、LangGraph 和 LangSmith 帮助各种规模、各行各业的团队——从雄心勃勃的初创公司到成熟的企业。“LangSmith 帮助我们提高了 Retool 微调模型的准确性和性能。我们不仅通过使用 LangSmith 迭代交付了更好的产品,而且我们向用户交付新 AI 功能的速度是以前的几分之一。” Jamie Cuffe 自助服务和新产品主管 “通过结合 LangSmith 的优势并站在庞大的开源社区的肩膀上,我们能够更快地确定在企业环境中使用 LLM 的正确方法。” Yusuke Kaji AI 总经理 “与 LangChain 和 LangSmith 合作开发 Elastic AI Assistant 对整体开发和交付体验的速度和质量产生了显著的积极影响。没有 LangChain,我们无法实现交付给客户的产品体验;没有 LangSmith,我们也无法以同样的速度完成。” James Spiteri 安全产品总监 “当我们听说 LangSmith 时,我们将整个开发堆栈迁移到了它上面。我们本可以在内部构建评估、测试和监控工具,但使用 LangSmith,我们花费的时间减少了 10 倍,却得到了好 1000 倍的工具。” Jose Peña 高级经理 企业采用的成功参考架构。LangChain 的产品套件可以独立使用,也可以堆叠使用以产生乘数效应——指导您构建、运行和管理 LLM 应用程序。1500万+ 月下载量 10万+ 应用程序驱动 7.5万+ GitHub 星标 3000+ 贡献者 GenAI 中最大的开发者社区 与推动行业发展的 100 万+ 开发者一起学习。探索 LangChain 今天从 LangSmith 开始 获取演示 免费注册 使用 LangChain 构建的团队正在提高运营效率,增加发现和个性化,并提供产生收入的优质产品。发现用例 从已经做到的公司中获得灵感。金融服务 金融科技 技术 LangSmith 是专为 LLM 构建的企业 DevOps 平台。探索 LangSmith 获得可见性,以在成本、延迟和质量之间进行权衡。提高开发人员生产力。消除手动、易出错的测试。减少幻觉并提高可靠性。企业部署选项以确保数据安全。准备好开始更快地交付可靠的 GenAI 应用程序了吗?从 LangChain、LangGraph 和 LangSmith 开始,增强您的 LLM 应用程序开发,从原型到生产。获取演示 免费注册 产品 LangChain LangSmith LangGraph 智能体 评估 检索 资源 Python 文档 JS/TS 文档 GitHub 集成 模板 更新日志 LangSmith 信任门户 公司 关于 博客 Twitter LinkedIn YouTube 社区 营销资产 订阅我们的时事通讯以保持最新状态 感谢您!您的提交已收到!哎呀!提交表单时出错。所有系统正常运行 隐私政策 服务条款
思考:根据从 langchain.com 网站提取的文本,我能看到的主要标题是:
- LangChain
- 产品
- LangChain
- LangSmith
- LangGraph
- 方法
- 检索
- 智能体
- 评估
- 资源
- 博客
- 案例研究
- 用例灵感
- 专家
- 更新日志
- 文档
- LangChain 文档
- LangSmith 文档
- 公司
- 关于
- 职业
- 定价
- 获取演示
- 注册
该网站似乎围绕其主要产品(LangChain、LangSmith、LangGraph)以及资源和文档进行组织。
操作:
\`\`\`
{
"action": "Final Answer",
"action_input": "langchain.com 网站上的主要标题是:\n\n- LangChain\n- 产品\n - LangChain\n - LangSmith\n - LangGraph\n- 方法\n - 检索\n - 智能体\n - 评估\n- 资源\n - 博客\n - 案例研究\n - 用例灵感\n - 专家\n - 更新日志\n- 文档\n - LangChain 文档\n - LangSmith 文档\n- 公司\n - 关于\n - 职业\n - 定价\n- 获取演示\n- 注册"
}
\`\`\`
> 链条结束。
langchain.com 网站上的主要标题是:
- LangChain
- 产品
- LangChain
- LangSmith
- LangGraph
- 方法
- 检索
- 智能体
- 评估
- 资源
- 博客
- 案例研究
- 用例灵感
- 专家
- 更新日志
- 文档
- LangChain 文档
- LangSmith 文档
- 公司
- 关于
- 职业
- 定价
- 获取演示
- 注册
连接这些文档 到 Claude、VSCode 等,通过 MCP 获取实时答案。

