
人工智能AI Agent浏览器控制GUI 自动化MCP 服务【免费下载链接】browser-useAgents that use the browser.项目地址https://gitcode.com/GitHub_Trending/br/browser-use点击查看免费下载本指南基于examples/models/langchain/目录中的 legacy 文档与配套源码讲解如何将任意 LangChain 兼容的大模型包装成 browser-use 的BaseChatModel协议并驱动Agent完成浏览器自动化任务。读完本文你将掌握ChatLangchain包装器的用法、消息序列化与结构化输出原理以及如何在项目已完成 LangChain → OpenAI 消息格式迁移的背景下继续复用 LangChain 生态模型。背景为什么还需要 LangChain 模型browser-use 的 LLM 层已经完成了从 LangChain 到 OpenAI 消息格式的整体迁移。browser_use/llm/base.py 的模块 docstring 明确写道We have switched all of our code from langchain to openai.types.chat.chat_completion_message_param.也就是说当前主流的接入方式是通过browser_use.llm下各提供商的官方适配器ChatOpenAI、ChatAnthropic、ChatGoogle、ChatDeepSeek、ChatGroq、ChatOllama等见 browser_use/llm/init.py 中的_LAZY_IMPORTS映射。但如果你已经拥有一套基于 LangChain 搭建的模型基础设施——例如内部网关、自定义BaseChatModel子类、或依赖 LangChain 的 RAG/记忆组件——browser-use 仍然保留了名为ChatLangchain的兼容层让你无需改造模型层即可驱动浏览器 Agent。这套兼容层集中在 examples/models/langchain/ 目录包含三个文件README.mdlegacy 集成说明与最小示例chat.pyChatLangchain包装器实现 browser-use 的BaseChatModel协议serializer.pyLangChainMessageSerializer负责两类消息模型的互转。此外pyproject.toml的 eval 依赖中仍声明了langchain-openai1.1.14确保示例可直接运行。快速开始用 ChatLangchain 驱动 Agent原文档给出的核心用法只有四步创建 LangChain 模型 → 用ChatLangchain包装 → 传给Agent→ 运行。完整可运行版本见 examples/models/langchain/example.pyimport asyncio from langchain_openai import ChatOpenAI # pyright: ignore from browser_use import Agent from examples.models.langchain.chat import ChatLangchain async def main(): Basic example using ChatLangchain with OpenAI through LangChain. # 1. 创建 LangChain 模型OpenAI langchain_model ChatOpenAI( modelgpt-4.1-mini, temperature0.1, ) # 2. 用 ChatLangchain 包装使其兼容 browser-use llm ChatLangchain(chatlangchain_model) # 3. 创建简单任务 task Go to google.com and search for browser automation with Python # 4. 创建并运行 Agent agent Agent( tasktask, llmllm, ) print(f Starting task: {task}) print(f Using model: {llm.name} (provider: {llm.provider})) history await agent.run() print(f✅ Task completed! Steps taken: {len(history.history)}) if history.final_result(): print(f Final result: {history.final_result()}) return history if __name__ __main__: print( Browser-use LangChain Integration Example) print( * 45) asyncio.run(main())执行方式python examples/models/langchain/example.py几点关键说明ChatLangchain(chat...)接受任意 LangChainBaseChatModel实例因此不仅限于ChatOpenAI还包括ChatAnthropic、ChatGoogle、ChatOllama等一切 LangChain 兼容实现Agent的llm参数类型在 browser_use/agent/service.py 中声明为BaseChatModel | NoneChatLangchain恰好实现了该协议可被直接注入history.final_result()可获取任务最终结论history.history是完整执行轨迹每一步的截图、DOM、LLM 输出与动作。ChatLangchain 包装器源码剖析ChatLangchain定义在 examples/models/langchain/chat.py 中是一个dataclass通过继承并实现browser_use.llm.base.BaseChatModel协议来冒充原生 chat model。协议定义BaseChatModel在 browser_use/llm/base.py 中BaseChatModel是一个runtime_checkable的Protocol要求实现方提供model属性字符串provider属性字符串name属性字符串ainvoke(messages, output_formatNone, **kwargs)异步方法。协议同时通过__get_pydantic_core_schema__返回any_schema()使任何对象都能通过 Pydantic 类型校验——这是Agent的 settings 能安全接受任意BaseChatModel的原因。此外协议还为model_name提供了 legacy 兼容的默认实现直接返回model。元信息推断provider 与 nameChatLangchain只有唯一字段chat。它的provider属性通过模型类名小写匹配来推断chat.pyproperty def provider(self) - str: Return the provider name based on the LangChain model class. model_class_name self.chat.__class__.__name__.lower() if openai in model_class_name: return openai elif anthropic in model_class_name or claude in model_class_name: return anthropic elif google in model_class_name or gemini in model_class_name: return google elif groq in model_class_name: return groq elif ollama in model_class_name: return ollama elif deepseek in model_class_name: return deepseek else: return langchainname属性则依次尝试model_name、model两个属性最终回退到类名chat.py。这意味着打印llm.name和llm.provider就能得到gpt-4.1-mini / openai这样的可读信息——示例中正是用它们做启动日志。核心方法ainvokeainvoke是协议的核心。ChatLangchain用overload声明了两种调用形态chat.pyoutput_formatNone返回字符串响应ChatInvokeCompletion[str]output_formattype[T]返回结构化对象ChatInvokeCompletion[T]。调用流程如下用LangChainMessageSerializer.serialize_messages(messages)将 browser-use 消息列表转为 LangChain 消息列表若output_format is None直接await self.chat.ainvoke(langchain_messages)获取AIMessage校验类型后提取response.content并通过_get_usage(response)解析 token 用量封装为ChatInvokeCompletion若传入了 Pydantic 模型作为output_format优先使用 LangChain 的with_structured_output(output_format)能力若该 API 不可用AttributeError则回退到手动解析调用ainvoke拿到文本后json.loads再实例化 Pydantic 模型。注意ChatInvokeCompletion与ChatInvokeUsage定义在 browser_use/llm/views.py 中usage字段还支持prompt_cached_tokens、prompt_cache_creation_tokensAnthropic 缓存等可选字段ChatLangchain会从 LangChain 的usage_metadata中尽量补齐chat.py。错误归一化整个ainvoke用try/except包裹任何 LangChain 侧异常都会被转换为 browser-use 的ModelProviderErrorbrowser_use/llm/exceptions.py携带message与model字段从而保持 Agent 重试、降级逻辑对模型不可用的判断一致except Exception as e: # Convert any LangChain errors to browser-use ModelProviderError raise ModelProviderError( messagefLangChain model error: {str(e)}, modelself.name, ) from e消息序列化LangChainMessageSerializerbrowser-use 与 LangChain 使用两套消息模型LangChainMessageSerializerexamples/models/langchain/serializer.py负责双向转换。browser-use 侧的消息类型定义在 browser_use/llm/messages.pyUserMessage、SystemMessage、AssistantMessage以及内容片段ContentPartTextParam文本、ContentPartImageParam图片、ContentPartRefusalParam拒绝内容和ToolCall。序列化规则如下browser-use 消息LangChain 消息说明UserMessageHumanMessage文本直接透传多模态内容转为{type: text/image_url, ...}列表SystemMessageSystemMessage多文本片段用\n拼接为字符串AssistantMessageAIMessage仅保留文本内容忽略 tool_calls三个静态方法分别处理用户、系统、助手内容其中_serialize_user_content对image_url部分保持 LangChain 的{type: image_url, image_url: {url: ..., detail: ...}}格式因此图片上下文如页面截图可以通过该兼容层传给支持视觉的 LangChain 模型。值得注意的是_serialize_tool_call虽然实现了 browser-useToolCall→ LangChainToolCall的转换json.loads解析参数字符串但serialize()在处理AssistantMessage时有意忽略了 tool_calls源码注释为 For simplicity, well ignore tool calls in LangChain integration。这意味着经过该兼容层时模型在上一轮生成的函数调用信息不会完整回传给后续轮次Agent 的工具调用循环依靠自身的消息管理器来维持。这是使用本集成方案时需要注意的局限。局限与适用边界结合源码可以得出如下事实性结论帮助你在选型时判断这是 legacy 路径主仓库已迁移到 OpenAI 消息格式原生适配器ChatOpenAI、ChatDeepSeek、ChatOllama等才是当前推荐接入方式详见 browser_use/llm/init.py 的惰性导入与实例缓存机制工具调用被简化助手消息的 tool_calls 不参与序列化见上节多轮工具调用循环的完整性依赖 Agent 侧provider 推断靠类名provider属性依赖类名字符串匹配自定义命名不符合上述关键词的 LangChain 模型会统一归为langchain结构化输出有回退优先走with_structured_output不支持时才手动 JSON 解析且需要模型输出合法 JSON依赖声明langchain-openai1.1.14位于pyproject.toml的 eval 依赖组中使用前请确认已安装对应 LangChain 包。总结ChatLangchain是 browser-use 在完成消息格式迁移后为 LangChain 生态保留的一座桥。通过实现BaseChatModel协议、复用LangChainMessageSerializer做消息互转、统一异常为ModelProviderError它让存量 LangChain 模型OpenAI、Anthropic、Google、Ollama 等可以直接驱动Agent执行浏览器自动化。对于已有 LangChain 基础设施、暂不想迁移到原生适配器的场景可直接参考 examples/models/langchain/example.py 快速接入对于新项目建议优先使用 browser_use/llm 下的官方适配器以获得完整功能支持。赞分享人工智能AI Agent浏览器控制GUI 自动化MCP 服务【免费下载链接】browser-useAgents that use the browser.项目地址https://gitcode.com/GitHub_Trending/br/browser-use点击查看免费下载相关推荐Browser-Use LangChain集成框架兼容性指南Browser Use LangChain集成框架兼容性指南 概述 Browser Use作为现代化的浏览器自动化框架虽然已经转向原生OpenAI API实人工智能AI Agent浏览器控制GUI 自动化MCP 服务IPTVnator 结构化 Shaka 诊断设计把 DASH 播放错误变成可审计的证据契约IPTVnator 结构化 Shaka 诊断设计把 DASH 播放错误变成可审计的证据契约 IPTVnator 是一款跨平台 IPTV 播放器其中 DASH人工智能AI Agent浏览器控制GUI 自动化MCP 服务browser-use 支持的 LLM 模型全景指南从 Browser Use Cloud 到 15 提供商接入实战browser use 支持的 LLM 模型全景指南从 Browser Use Cloud 到 15 提供商接入实战 Browser Use 在 brows人工智能AI Agent浏览器控制GUI 自动化MCP 服务上一篇Roc 闭包变量捕获机制深度解析从快照测试看 e-closure 捕获语义与作用域规则下一篇OpenCloud 依赖解析displaywidth —— Go 语言高性能等宽字符显示宽度测量库实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考