职贝云数AI新零售门户

标题: 没有Manus约请码,本人用Browser-use手搓一个Agent [打印本页]

作者: Y1Ob6L    时间: 2025-4-5 15:40
标题: 没有Manus约请码,本人用Browser-use手搓一个Agent



一、引入Browser-use

    在大家对manus讨论得沸沸扬扬的时分,苦于没有约请码无法尝试其带来的所谓惊喜,同时,却也看到网上的两种比较极端的说法,或称其为国运级创新,或说其毫无技术含量,能够是manus用了很多开源库,于是,在很多程序员的眼里,其似乎少了原创和技术含量。

    有人“越狱”了manus,并且分享出了几个关键发现:

   

    尤其是当把manus_sanbox_runtime.tar.gz文件解压后,发现的一个熟面孔:browser_use,如图1

   

                        图1

    想要搞明白Browser-use的工作原理,需先弄清楚两个关键概念:

1.1 Playwright

    Playwright是个超凶猛的阅读器自动化框架,像Chrome、Firefox和Edge这些主流阅读器它都能支持。它能定位阅读器界面的元素,并模拟用户的各种行为,像点击按钮、输入文字之类的操作,更为凶猛的是,它可以侦听、截取与服务器通讯的信息包,并将其保存为JSON文件(见本人以前的文章)。

1.2 LangChain + LLMs(大言语模型)

    LangChain是一套工具链,专门用来搭建基于大言语模型(比如说DeepSeek之类)的运用程序。经过整合这些模型,Browser-use就能听懂复杂的指令,还能把指令变成详细的阅读器操作。

    举例来说,你跟AI说 “帮我做一份去老君山的旅游攻略,包括行程安排、当地美式及相关留意事项,把攻略存到当地文件”,Browser-use就会依托大言语模型来了解你提出的要求,并分解成一个个步骤,然后调用Playwright来一步步完成这些操作。

(二)搭建Browser-use环境

    既然 Browser-use 这么凶猛,那我们赶紧动手试试吧!以下是详细的入门指南,保证即便是编程小白也能迅速上手。

2.1 预备工作

    首先,确保你的环境中安装了以下依赖项:


    安装命令如下:
    pip install langchain_openai browser-use
假如没有playwright的,还需求:
pip install playwrightplaywright install #安装阅读器CDP
2.1创建一个 .env 文件

在你的项目的跟目录下,创建.env文件,并填入你的 OpenAI API 密钥:
OPENAI_API_KEY=your_api_key_here
假如你要用DeepSeek api,也要填入DeepSeek的秘钥
DEEPSEEK_API_KEY='sk-*’ # your deepseek api_key
假如要用本人的阅读器,在.env中还要加上两行:
CHROME_PATH='C:\Program Files\***\chrome.exe' # chrome.exe pathCHROME_USER_DATA='C:\Users\***\AppData\Local\Google\Chrome\User Data'
(三)创建你本人的Agent

3.1 LLM的选择

(1)GPT-4o mini

    末尾调试时,我用的是“GPT-4o mini”,但收费额度很快就用完了,它的额度为:收费用户每3小时可以运用10次‌‌。

    “GPT-4o mini”呼应速度很快,但数据多数都是在Google中找,次要还是次数限制,估计调试结束,今后只要详细需求时,还是可以忍受的。

(2)DeepSeek V1

    改用DeepSeek后,总是在“step 1”处循环,甚至进入“死循环”,要用ctrl+C干涉。由于以前在excel及python的DeepSeek调用中用过完成央求的API_KEY,都没有发现成绩,所以一时感到差异。又回头重试Python调用DeepSeek,跳出提示“payment requested”——2月7日后,API调用末尾收费。

    充值后,DeepSeek调用成功!

3.2 创建本人的Agent

    下面是我做的一个简单的示例,演示如何让 AI 帮你把义务分解,然后把再把这些分解步骤“串”起来交给Browser-use,以完成你交代的义务:
import warningsfrom langchain_core._api import LangChainBetaWarningfrom langchain_openai import ChatOpenAIfrom browser_use import Agentfrom pydantic import SecretStrimport asyncioimport jsonfrom dotenv import load_dotenvimport osload_dotenv()api_key = os.getenv('DEEPSEEK_API_KEY', '')if not api_key:   raise ValueError('DEEPSEEK_API_KEY is not set')# 在导入其他模块前设置正告过滤warnings.filterwarnings("ignore", category=LangChainBetaWarning)async def main():   llm = ChatOpenAI(       base_url='https://api.deepseek.com/v1',       model='deepseek-chat',       api_key=SecretStr(api_key),  # 恢复SecretStr包装       temperature=0.3,       max_tokens=2000   )     agent = Agent(       task=(           '1、帮我做一份四月份去老君山的旅游详细攻略,包括行程安排,酒店引荐,交通方式,当地美食(明细),留意事项等'           '2、请用中文回复'           '3、请用markdown格式回复,并保存到本地文件'           '4、关闭阅读器'       ),       llm=llm,       use_vision=False   )   try:       # 添加执行超时控制       result = await asyncio.wait_for(agent.run(), timeout=120)       print("\n======== 测试结果 ========")       print(result.final_result())       # 交换为可序列化的数据提取       if result and hasattr(result, 'steps'):           output_data = {               "history": [                   {                       "action": step.action,                       "observation": str(step.observation)  # 确保可序列化                   }                   for step in result.steps               ]           }           with open('travel_plan.json', 'w', encoding='utf-8') as f:               json.dump(output_data, f, ensure_ascii=False, indent=2)           print("\n 攻略数据已保存到 travel_plan.json")       else:           with open('laojunshan_guide2.md', 'w', encoding='utf-8') as f:               f.write(result.final_result())           print(" 攻略已保存为 laojunshan_guide.md")   except asyncio.TimeoutError:       print("义务执行超时,请检查:\n1. 网络衔接\n2. 页面元素能否可交互")       return  # 添加提早前往避免后续代码执行   # 修正为正确的步骤属性   if hasattr(result, 'steps'):       print("\n==== 执行轨迹 ====")       for i, step in enumerate(result.steps, 1):           print(f"[步骤{i}] {step.action} -> {step.observation[:50]}...")   else:       print("\n未找到执行步骤记录")asyncio.run(main())
    运转这段代码后,你会发现 AI 将义务末尾分解执行,阅读器也随之打开并有元素发现并标注,如图2

(, 下载次数: 0)
                                                图2
    控制台也末尾同步输入执行的义务步骤,如图3:

(, 下载次数: 0)

                                                图3   

    最后,Agent给打印出旅游攻略,同时也输入到了本地文件(laojunshan_guide.md)中,如图4:

                                                    图4

    是不是很酷?

(四)总结

    用Browser-use手搓的Agent的确能完成一个残缺的义务,但是用过多个相似的Agent后,发现Browser-use调用PlayWright的最大弊端是AI对义务了解——当完成不了本步骤后,不会自动纠错,例如:

     Ai的义务分解、步骤是没有成绩的,browser-use经过PlayWright可以辨认网页元素并加以标注,然后根据义务步骤对标注停止自动化操作,但是假如网页是动态加载并使网页元素发生了变化,browser-use不会随之调用playwright再次辨认、标注的,依旧运用原有网页的标注,导致接上去按部就班的义务无法完成。

    所以这个browser-use搭建的agent没有成绩,只是其调用playwright后的元素定位及标注应确保实时更新,这或许是个BUG,对这一点需求予以关注。




欢迎光临 职贝云数AI新零售门户 (https://www.taojin168.com/cloud/) Powered by Discuz! X3.5