vimGPT
为多模态模型提供一个可以玩耍的界面。
https://github.com/ishan0102/vimGPT/assets/47067154/467be2ac-7e8d-47de-af89-5bb6f51c1c31
概述
众多初创公司和开源项目正在探索使用大型语言模型(LLMs)作为浏览网页的方式。通过这个项目,我想看看我们是否可以仅使用GPT-4V的视觉能力来进行网页浏览。
这种方法的问题在于,如果不提供浏览器DOM作为文本,很难确定模型想要点击什么。Vimium是一个Chrome扩展程序,允许你只使用键盘来浏览网页。我认为看看我们是否可以使用Vimium为模型提供一种与网页交互的方式会很有趣。
使用方法
安装Python依赖:
pip install -r requirements.txt
在本地下载Vimium(运行Playwright时需要手动加载扩展):
./setup.sh
运行脚本:
python main.py
语音模式
语音模式:使用语音命令与浏览器交互。只需说出你的目标,然后观看vimGPT实时执行操作。
python main.py --voice
想法
欢迎与我合作,我有以下几个想法:
- 一旦Assistant API发布,就使用它来自动检索上下文。Assistant API将创建一个线程,我们可以向其中添加消息,以保存操作历史,但它目前还不支持Vision API。
- Vimium分支用于覆盖元素。根据上下文选择性覆盖元素的专门版本Vimium可能会很有用,可以根据用户查询有效地进行修剪。可能值得测试不同大小的框/颜色是否有帮助。
- 使用更高分辨率的图像,因为它似乎在低分辨率下会失败。我注意到在某个阈值以下,模型无法检测任何内容。使用更高分辨率的图像可能会改善这一点,但这需要更多的令牌。
- 微调LLaVa或CogVLM来执行这项任务,或者使用Fuyu-8B。可能会更快/更便宜。CogVLM可以准确指定像素坐标,这可能是一个很好的增强方法。
- 一旦Vision API发布,使用JSON模式。目前Vision API不支持JSON模式或函数调用,所以我们必须依赖更原始的提示方法。
- 让Vision API返回一般指令,由另一个调用JSON模式版本的API来规范化。这是解决JSON模式问题的一种变通方法,但需要另一个LLM调用,这会更慢/更昂贵。
- 添加使用Whisper或其他模型的语音转文本功能,以消除文本输入,使其更易于使用。
- 让它适用于你自己的浏览器,而不是启动一个人工的浏览器。我想能够用我的信用卡订餐。
- 提供启用和未启用Vimium的框架,以防模型无法看到黄色方框下的内容。
- 除了图像之外,还传入Chrome可访问性树作为输入。这提供了可以映射到Vimium绑定的交互元素布局。
- 让它根据页面内容编写更长的内容或根据查询向用户返回信息。例如回复电子邮件、总结新闻文章等。视觉问答。
- 通过添加语音模式和为给定页面创建Assistant API的键,使其成为对盲人有用的工具。可以用自然语言"与代理交谈"了解页面内容。
- 使用Javascript标记DOM元素,用彩色框标注,类似于这个。
- 构建一个基于图的重试机制,确保我们不会陷入循环,即递归地点击同一个元素。
致谢
- HackerNews: https://news.ycombinator.com/item?id=38200308
- VisualWebArena - 评估多模态代理在现实视觉网页任务上的表现(第9页):https://arxiv.org/abs/2401.13649
- WIRED: https://www.wired.com/story/fast-forward-tested-next-gen-ai-assistant/