本文作者:阿里云无影技术专家 尹越
在人工智能和自动化技术飞速发展的今天,越来越多的开发者开始关注如何利用大语言模型(LLM)来构建智能应用。今天我要给大家介绍一个非常实用的工具包——langchain-agentbay-integration,它能够帮助你快速将 LangChain 框架与 阿里云无影 AgentBay 平台集成,轻松实现浏览器自动化等高级功能。
一. 背景介绍
1.1 什么是无影 AgentBay?
无影 AgentBay 是阿里云推出的一个智能代理平台,它提供了强大的云端环境来运行各种自动化任务。通过无影 AgentBay,你可以获得一个隔离的云端环境,用来执行代码、操作浏览器、处理文件等操作,而无需在本地配置复杂的环境。无影 AgentBay 提供了多种镜像环境,包括支持浏览器自动化的环境和代码执行环境,非常适合构建各种自动化测试和智能代理应用。
- 无影 AgentBay 官网:https://www.aliyun.com/product/agentbay
- 无影 AgentBay SDK 仓库:https://github.com/aliyun/wuying-agentbay-sdk
1.2 LangChain 框架简介
LangChain 是目前最流行的基于大语言模型(LLM)的应用开发框架之一。它提供了一套完整的工具链,帮助开发者快速构建基于 LLM 的应用,如聊天机器人、智能问答系统、自动化代理等。LangChain 的核心优势在于它的模块化设计,允许开发者灵活组合各种组件,如模型接口、提示词模板、数据检索、工具集成等,从而构建出功能强大的智能应用。
- LangChain 官网:https://www.langchain.com/
1.3 langchain-agentbay-integration 的价值
在 LangChain 中,Agent 通常只能调用本地工具(如本地 Python 函数)。若要让 LLM 控制浏览器(如点击、输入、截图),需自行搭建 Selenium 环境、处理无头浏览器、管理会话状态等,开发和维护成本高。而无影 AgentBay 提供了托管的、安全的远程执行环境,langchain-agentbay-integration 正是为解决这一痛点而生。
对于已经熟悉 LangChain 但尚未接触过 无影 AgentBay 的开发者来说,langchain-agentbay-integration 提供了一个桥梁。通过这个集成包,你可以直接在 LangChain 应用中使用 AgentBay 提供的强大功能。
目前该集成包支持两大环境类型:CodeSpace(代码空间)和 Browser Use(浏览器使用)。不同环境支持的工具集有所不同:
CodeSpace 环境支持的工具包括:
- 代码执行(支持 Python 和 JavaScript)
- 文件系统操作(读写文件)
- 命令执行(在云端环境中执行 shell 命令)
Browser Use 环境支持的工具包括:
- 浏览器自动化操作(导航、点击、填写表单等)
- 页面内容提取
- 截图功能
这大大降低了使用无影AgentBay 平台的门槛,让你可以专注于业务逻辑的实现,而无需关心底层环境的配置和管理。
- langchain-agentbay-integration 工具包 PyPI 页面: https://pypi.org/project/langchain-agentbay-integration/
二. 安装和使用过程
接下来,我将通过一个实际的例子来演示如何使用 langchain-agentbay-integration 包。我们将验证无影 AgentBay 官网在百度搜索中的排名情况,这需要使用浏览器自动化功能。
2.1 环境准备
首先,建议创建并启动一个虚拟环境来避免依赖冲突:
python3 -m venv agentbay_langchain_env source ./agentbay_langchain_env/bin/activate # Linux/Mac # 或者在 Windows 上使用: agentbay_langchain_env\Scripts\activate
在虚拟环境中执行如下依赖配置和API密钥配置等操作,确保你使用的是最新版本的 pip:
pip install --upgrade pip
安装必要的包:
pip install -U langchain-agentbay-integration==0.1.1 wuying-agentbay-sdk==0.9.0 pip install langchain==0.3.27 langchain-openai
2.2 配置密钥
在运行示例之前,需要配置两个 API 密钥:
- AgentBay API Key:
- 访问 AgentBay 控制台
- 登录你的阿里云账号
- 在服务管理部分创建或选择一个 API KEY
- 复制 API Key 并设置为
AGENTBAY_API_KEY环境变量
- 🔔 注意:AgentBay账号需要有Pro以上的权益
- 百炼 API Key:
- 访问百炼平台
- 登录你的账号
- 在 API Key 管理部分复制 API Key
- 设置为
MODELSTUDIO_API_KEY环境变量
在终端中设置环境变量:
export AGENTBAY_API_KEY=your-agentbay-api-key export MODELSTUDIO_API_KEY=your-modelstudio-api-key
2.3 运行示例代码
创建一个 Python 脚本,例如 baidu_seo_check.py,内容如下:
import os from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langchain_agentbay_integration.toolkits import AgentbayIntegrationToolkit from langchain_agentbay_integration.tools import SessionType from agentbay import AgentBay from agentbay.session_params import CreateSessionParams # 创建 AgentBay 会话 agent_bay = AgentBay() params = CreateSessionParams(image_id="browser_latest") result = agent_bay.create(params) session = result.session # 初始化工具包 toolkit = AgentbayIntegrationToolkit( session=session, session_type=SessionType.BROWSERUSE, image_id="browser_latest" ) # 获取工具 tools = toolkit.get_tools() # 初始化 LLM llm = ChatOpenAI( api_key=os.getenv("MODELSTUDIO_API_KEY"), base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", model=os.getenv("DASHSCOPE_MODEL", "qwen3-max") ) # 创建提示词模板 prompt = ChatPromptTemplate.from_messages([ ("system", """你是一个能够使用 AgentBay 浏览器工具的助手,可以自动化执行网页浏览任务。 可用工具: 1. browser_navigate - 在 AgentBay 会话中导航到指定 URL 2. browser_act - 在浏览器页面上执行操作,如点击按钮、填写表单等 3. screenshot - 对当前浏览器页面进行截图 使用这些工具帮助用户完成网页浏览任务。"""), ("human", "{input}"), ("placeholder", "{agent_scratchpad}") ]) # 创建代理 agent = create_tool_calling_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) # 执行 SEO 验证任务 example_query = """ 任务目标: 验证无影AgentBay官网在百度搜索中的排名情况,只有当搜索结果第一条链接是 https://www.aliyun.com/product/agentbay.html 时才认为验证通过。 任务过程: 1. 导航到 https://www.baidu.com/ 2. 对页面进行截图并保存 3. 在搜索框中输入"无影AgentBay官网"并点击"百度一下"按钮 4. 对搜索结果页面进行截图并保存 5. 点击第一条搜索结果 6. 对最终页面进行截图并保存 任务返回: 以 JSON 格式返回结果: { "success": true|false, "message": "验证通过以及其他消息|验证失败原因" } """ # 执行代理 result = agent_executor.invoke({"input": example_query}) print(f"最终结果: {result['output']}") # 清理资源 agent_bay.delete(session)
运行脚本:
python3 baidu_seo_check.py
三. 结果验证
3.1 LangChain返回结果
如果一切顺利,你应该能看到类似以下的输出:
最终结果: { "success": true, "message": "验证通过,搜索结果第一条确实指向了 AgentBay 官网" }
3.2 过程截图
在整个执行过程中,会生成三张截图:
- 百度首页截图 - 展示了初始访问百度网站的页面
- 百度搜索结果页截图 - 展示了搜索"无影AgentBay官网"后的结果页面
- 第一条结果页面截图 - 展示了点击搜索结果第一条后跳转到的页面
这些截图可以帮助你直观地验证整个自动化过程是否按预期执行。
3.3 过程日志
在执行过程中,也会打印类似如下的日志信息:
Number of browser tools in the toolkit: 3 - Tool name: browser_navigate Tool description: Navigate to a URL in the AgentBay session - Tool name: browser_act Tool description: Perform an action on browser page in the AgentBay session - Tool name: screenshot Tool description: Take a screenshot of the current browser page in the AgentBay session Initializing LLM... Query: 任务目标: 这是一个无影AgentBay的SEO效果自动化验证的流程,只有当最后搜索后的第一条结果页面地址是https://www.aliyun.com/product/agentbay.html 的时候认为验证通过,否则验证失败 任务过程: 下面所有截屏都保存在./snapshots/下面 导航到https://www.baidu.com/。 随后,对页面进行截屏。 随后,在输入框中输入'无影AgentBay官网'并点击'百度一下'搜索按钮。 随后,对页面进行截屏。 随后,点击搜索结果第一项并且抽取点击后页面的内容。 最后,对页面进行截屏。 任务返回: 以类似如下json格式返回: { "success": true|false, "message": "验证通过以及其他消息|验证失败原因" } Agent execution: -------------------- > Entering new AgentExecutor chain... Invoking: `browser_navigate` with `{'url': 'https://www.baidu.com/'}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received {"success": true, "message": "Successfully navigated to https://www.baidu.com/", "url": "https://www.baidu.com/"} Invoking: `screenshot` with `{'file_path': './snapshots/baidu_homepage.png'}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received {"success": true, "message": "Screenshot captured successfully", "file_path": "./snapshots/baidu_homepage.png"} Invoking: `browser_act` with `{'action': "Enter '无影AgentBay官网' in the search box"}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:376 | Enter '无影AgentBay官网' in the search box YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:423 | Task [TASK_ID]:Enter '无影AgentBay官网' in the search box in progress. No actions have been executed. YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:414 | Task [TASK_ID]:Enter '无影AgentBay官网' in the search box is done. Success: True. [{"step": 1, "action": "Input '无影AgentBay官网' into element 16.", "success": true}] {"success": true, "message": "[{\"step\": 1, \"action\": \"Input '无影AgentBay官网' into element 16.\", \"success\": true}]", "action": "Enter '无影AgentBay官网' in the search box"} Invoking: `browser_act` with `{'action': "Click the '百度一下' search button"}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:376 | Click the '百度一下' search button YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:423 | Task [TASK_ID]:Click the '百度一下' search button in progress. No actions have been executed. YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:414 | Task [TASK_ID]:Click the '百度一下' search button is done. Success: True. [{"step": 1, "action": "Clicked element with index 35", "success": true}] {"success": true, "message": "[{\"step\": 1, \"action\": \"Clicked element with index 35\", \"success\": true}]", "action": "Click the '百度一下' search button"} Invoking: `screenshot` with `{'file_path': './snapshots/baidu_search_results.png'}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received {"success": true, "message": "Screenshot captured successfully", "file_path": "./snapshots/baidu_search_results.png"} Invoking: `browser_act` with `{'action': 'Click the first search result', 'extract_content': True}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:376 | Click the first search result YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:423 | Task [TASK_ID]:Click the first search result in progress. No actions have been executed. YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.browser.browser_agent:_execute_act_async:414 | Task [TASK_ID]:Click the first search result is done. Success: True. [{"step": 1, "action": "Clicked element with index 96", "success": true}] YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received {"success": true, "message": "[{\"step\": 1, \"action\": \"Clicked element with index 96\", \"success\": true}]", "action": "Click the first search result", "extract_results": {"title": "无影 Agent 开发套件 AgentBay", "description": "无影AgentBay是一款专为AI Agent提供的任务执行工具和平台,提供浏览器、桌面、代码、移动端全覆盖的安全沙箱环境,支持SDK和MCP接入,依托阿里云强大算力实现智能体的高效调度与规模化运行,助力各类Agent应用具备全面可靠的可执行能力。", "urls": ["https://www.aliyun.com/product/agentbay.html"], "content": "无影AgentBay是一款专为AI Agent提供的任务执行工具和平台,提供浏览器、桌面、代码、移动端全覆盖的安全沙箱环境,支持SDK和MCP接入,依托阿里云强大算力实现智能体的高效调度与规模化运行,助力各类Agent应用具备全面可靠的可执行能力。\n\n产品简介\n\n无影AgentBay(AgentBay)是阿里云推出的AI时代Agent云基础设施,面向企业、开发者、AI厂商提供可一键配置的AI Agent任务执行工具和执行环境。AgentBay集成云上沙箱环境、算力调度、持久化数据存储和企业级安全等核心能力,覆盖浏览器、云电脑、代码空间、云手机四大运行环境。支持SDK和MCP接入,仅需三行代码即可接入,实现秒级弹性伸缩与千级并发运维能力,广泛应用于深度研究、金融分析、跨境电商、医疗诊断、教育培训等场景。\n\n产品优势\n\n- 场景丰富,覆盖全面:解决智能体运行环境局限问题,为智能体开发提供浏览器、代码、电脑、移动端四大核心环境,从网页自动化到代码编译,从桌面操作到移动应用控制,实现智能体全场景运行的环境支持。\n- 接入多样,集成灵活:解决开发门槛和集成复杂问题,为智能体开发提供SDK和MCP两种接入方式,面向开发者友好且灵活,技术专家可深度定制,普通开发者也能快速上手,真正实现零门槛到专业化的全覆盖。\n- 安全可靠,隔离防护:解决数据安全和环境污染问题,采用企业级安全容器方案,通过权限严格隔离,实现\"本地环境零侵入\"的安全防护。提供沙箱进程黑白名单及执行检测等全方位安全保障,支持跨平台数据持久化和状态连续性,确保智能体任务执行的安全性和可靠性。\n- 基建强大,调度智能:解决算力资源和运维负担问题,依托阿里云强大算力,实现秒级弹性伸缩与千级并发的运维能力,让开发者无需担心智能体运行所需的基础建设和运维难题,专注智能体创新开发的工作中。\n\n产品功能\n\n- 浏览器:使智能体可以自动操作网页,执行内容采集、自动化测试和流程处理等任务。提供跨浏览器兼容性,支持自然语言指令和远程实时控制,实现网页操作的智能自动化。\n- 云电脑:在云端提供定制化的桌面环境,支持企业应用智能化改造。通过标准化接口实现传统桌面软件的自动化操作,配备智能资源调度系统实现算力按需分配,提供一站式运维管理平台,全方位满足企业数字化转型需求。\n- 代码空间:为智能体提供专业的云端开发环境,支持多语言的代码生成、编译和调试。适用于代码解释、程序分析和自动化编程,打造全面、安全、智能的编程体验。\n- 云手机:在云端提供移动端操作环境,支持移动应用的智能化操作。通过应用界面的精准识别和控制,配合智能调度系统实现多任务并行处理,为移动应用测试和自动化场景提供稳定可靠的解决方案。\n\n入门与试用\n\n无影AgentBay 60秒接入指南\n\n无影 AgentBay 基于开源标准化协议MCP(Model Context Protocol)为AI模型与运行环境之间提供了统一的交互接口。\n\n产品定价\n\n为了满足不同用户需求,无影AgentBay提供了后付费(按量付费)和预付费(积分包)这两种计费方式,您可以根据自身需求灵活选择。\n\n- 后付费(按量付费):一种先使用、后付费的计费方式。按云环境的实际使用时长生成账单,并从阿里云账号扣除费用。\n- 预付费(积分包):一种先付费、后使用的计费方式。您可以提前购买积分包,使用云环境就会抵扣积分包中的积分,每个整点结算一次。\n\n安全合规\n\n无影AgentBay提供了多维度、分层的安全保护策略,涵盖镜像安全、智能体安全、数据安全、基础设施安全和管控安全等核心领域。云端、网络和智能体全链路保障终端数据不落地,通过技术安全和业务数据安全双支柱架构,构建了从云端、网络、智能体的全链路安全保障体系。\n\n常见问题\n\n- Q:开通无影AgentBay服务是否收费?\n A:开通 AgentBay 服务本身不收取费用,将按云环境使用时长扣取积分。在免费积分和积分包用尽后,将从您的阿里云账号中扣费。\n\n- Q:积分包使用说明?\n A:积分是衡量无影AgentBay一段时间内消耗资源量的标准单位,当智能体通过无影AgentBay使用不同的环境时,将以不同的比例对积分进行扣除。"}} Invoking: `screenshot` with `{'file_path': './snapshots/first_result_page.png'}` YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.api.base_service:_call_mcp_tool:195 | ✅ API Response received {"success": true, "message": "Screenshot captured successfully", "file_path": "./snapshots/first_result_page.png"} { "success": true, "message": "验证通过:搜索结果第一条页面地址是https://www.aliyun.com/product/agentbay.html" } > Finished chain. Final result: { "success": true, "message": "验证通过:搜索结果第一条页面地址是https://www.aliyun.com/product/agentbay.html" } Cleaning up resources... YYYY-MM-DD HH:MM:SS.SSS | AgentBay | INFO | [PROCESS_ID]:[THREAD_ID] | agentbay.session:delete:212 | ✅ API Response received AgentBay session deleted successfully!
四. 总结
通过 langchain-agentbay-integration,我们可以轻松地将 LangChain 的强大 AI 能力与 无影AgentBay 的云端环境结合起来,实现各种复杂的自动化任务。除了我们演示的 SEO 验证场景,通过改变 Prompt 就可以调整 Agent 的执行过程,从而适应各种不同的自动化场景。这种方式大大减少了传统自动化脚本所需的代码开发量,让非技术人员也能通过自然语言描述来实现复杂的自动化任务。这个集成包还能用于:
- 自动化测试:构建完整的 Web 应用自动化测试套件,包括用户注册、登录、表单填写、功能测试等。
- 数据抓取:自动化抓取网站数据,特别是那些需要交互操作才能获取的数据。
- 竞品分析:定期检查竞品网站的价格、功能更新等信息。
- 社交媒体管理:自动化执行社交媒体账号的内容发布、互动等操作。
- 客服机器人:构建能够实际操作网站的智能客服,帮助用户完成在线操作。
- 教育和培训:创建交互式教程,自动演示Web软件操作步骤。
langchain-agentbay-integration 的优势在于它将复杂的环境管理和操作封装成简单的工具,让开发者可以专注于业务逻辑的实现。无论你是想构建一个简单的网页自动化脚本,还是一个复杂的智能代理系统,这个集成包都能为你提供强有力的支持。
需要注意的是,langchain-agentbay-integration 目前仍在不断迭代和发展中。当前版本支持 LangChain 0.3.X 版本,后续将推出支持 LangChain刚刚发布的 1.0.0 版本的更新。同时,据说项目团队也在积极扩展对更多 AgentBay 镜像和 API 的支持,为用户提供更丰富的功能和更好的使用体验。
希望这篇介绍能帮助你快速上手 langchain-agentbay-integration,开始构建属于你自己的智能自动化应用!