AI实现个人阅读网页插件

背景

日常工作中经常需要浏览各种Github项目或者一些网页,逐字逐句看总觉得不够效率,如果在每次打开一个新的页面时就能够掌握大概的内容,然后再决定是否深入阅读就方便多了。有了这样的念头后,总想自己开发一款简单的浏览器插件,但是始终没有提上日程。目前随着AI编程工具越来越强大和普及,使用AI进行辅助开发是程序员工作中不可缺少的一环,这篇文章就是记录利用前段时间免费开放的GitHub Copilot进行插件开发的过程和效果。

了解Chrome插件的结构

在开发Chrome插件前,需要先了解插件的结构和开发流程。由于我完全没有开发Chrome插件的经验,那我可以直接输入问题,让AI给我解答。

经过咨询了编程助手后,大致可以得出Chrome插件主要包含了以下几个组件:
● 清单文件(manifest.json):manifest.json是插件的配置文件,这是插件的核心,它声明了扩展的基本信息、权限和资源。
● 背景页面(background.js):background.js是插件的后台脚本,可以在后台运行,处理插件的事件和请求。
● 内容脚本(content_script):content_scripts是插件的内容脚本,可以注入到网页中与网页进行交互,可以通俗理解成一个静态的html页面。
● 弹出页面(popup.html):popup.html是插件的弹出窗口页面,可以在用户点击插件图标时显示。主要用于用户和插件进行交互。
● 插件图标(icon.png):icon.png是插件的图标文件,用于在谷歌浏览器中显示插件图标,这个可有可无。

利用AI辅助生成

利用AI生成代码,最主要是描述清楚自己的需求。写Prompt需要明确最终产品的要求,条理清晰,尽可能详细描述功能和格式。

请你帮我开发一个Chrome插件,要求:

  1. 按下快捷键唤起插件的时候,就能够发起API请求,解析当前网页的内容
  2. 你需要帮我解析该网页的内容,转换为文本字符串的形式,方便API调用
  3. 交互界面为一个响应框和用户问题输入框,输入框下方还有「提问」按钮和「重新回答」按钮,按下「提问」按钮,则响应框响应用户新的输入内容,按下「重新回答」,则会发起前一个API调用请求

模型噼里啪啦一顿输出,关键有意义的部分就是这三个文件,其他的比如图标部分就被我删掉了。

在这个过程中难免生成一些无关或者错误的代码,对于有经验的开发者来说,可能比较好解决,甚至自己就修复了,而大多数人并不一定能搞定,这时候就需要不断把遇到的问题描述给AI,以便AI进行修正。

可以看到background.js是用于唤醒该插件的,当command确认为open-dialog的时候则会唤起该插件。

{"manifest_version": 3,"name": "页面解析助手","version": "1.0","description": "快捷键唤起对话框解析页面内容","permissions": ["activeTab","scripting","commands"],"commands": {"open-dialog": {"suggested_key": {"default": "Ctrl+Shift+Z"},"description": "打开对话框"}},"background": {"service_worker": "background.js"}}

manifest.json中配置了一个commands,里面有个值open-dialog,这对应了前面background.js

dialog.js 里面其实已经包含了popup.htmlcontent.js的内容,用于插件弹出页面和对应的接口请求等。

实际效果

按下Ctrl+Shift+Z后,自动调用大模型的接口进行解析,看起来还不错,只是markdown格式没有转化,问题不大。除了能实现唤起自动解析网页外,还支持在输入框与模型直接对话,这样就可以随时调用AI而不需要专门到各种大模型开发商的服务平台了,特别是有一些需要频繁验证登陆才能使用的更让人头疼。

翻译和搜索功能

对于有些英文的网页,可能存在一些不常见的单词,我希望能实现一键翻译。并且能够支持搜索功能,即自动调用Google进行搜索。同样把我的需要发送给Copilot,它直接在原来的代码基础上进行修改。

在js中新增了2个功能函数以及相应的html渲染逻辑,在这里我使用了智谱Chatglm4-9b-flash的API。

看起来逻辑是对的,鼠标选中想要处理的文字后,显示出2个按钮,分别支持翻译和搜索功能。

鼠标选中「OpenAI」后,再点击弹出的「搜索」按钮,显示正确跳转到谷歌搜索主页中。

后记

对于程序员来说,利用AI进行辅助开发已经是工作中不可缺少的一部分了,但是也不必过分担心AI取代人类的工作,至少目前看起来不太可能。如果真能替代,估计社会形态已经非常发达了,那到时也没有工作的必要了吧。
目前网络上可以看到各种「0基础AI编程课」,号称完全不懂编程也能开发各种程序和应用,并且字里行间暗示通过该方式实现了盈利。但实际情况却是,完全不懂编程的人是无法利用好AI编程工具,或者说无法与这类工具进行很好的交互。如果完全不懂编程,甚至自己的需求都描述不清楚,对于各种组件或者功能都很模糊,这样又如何让AI替你完成工作呢?名义上是普及编程知识,实际上又是另一种割韭菜的方式,对此希望大家都能保持警惕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/875971.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ之Exchange、Queue参数详解

1.先来介绍RabbitMQ中的成员Producer(生产者): 将消息发送到Exchange Exchange(交换器):将从生产者接收到的消息路由到Queue Queue(队列):存放供消费者消费的消息 BindingKey(绑定键):建立Exchange与Queue之间的关系(个人看作是一种规则,也就是Exchange将什么样的消息路由…

[日记]轻量回测框架 Backtesting.py 与 Streamlit集成

找到一个目前觉得比较轻量级的框架,结构简单易用,几行代码搞定即可搞定回测。 对于回测结果提供可视化的找到一个目前觉得比较轻量级的框架,结构简单易用,几行代码搞定即可搞定回测。 对于回测结果提供可视化的图表分析。如下图:同时提供常用的收益和风险指标数据作为量化…

【开源】Pi-hole控制面板:深入解析你的网络流量和广告拦截

今天要给大家介绍一个非常实用的开源项目——Pi-hole。这是一款基于树莓派的全能广告屏蔽助手,能够在不安装任何客户端软件的前提下为设备提供网络内容屏蔽服务,非常轻量易用。Pi-hole的主要功能: 1、 全网广告拦截: Pi-hole 充当 DNS 污水坑,阻止网络上所有设备上不需要的…

Rust多线程中安全的使用变量

在Rust语言中,一个既引人入胜又可能带来挑战的特性是闭包如何从其所在环境中捕获变量,尤其是在涉及多线程编程的情境下。 如果尝试在不使用move关键字的情况下创建新线程并传递数据至闭包内,编译器将很可能返回一系列与生命周期、借用规则及所有权相关的复杂错误信息。 不过…

ARC_069 D - Menagerie 题解

atcoder 一道很有意思的模拟题啊。 思路很重要。 首先,我们只要知道连续两只动物的身份,就可以根据 \(s\) 推出所有动物的身份。 不妨假设我们知道第一只和第二只动物的身份,一共有几种情况呢? 用 \(1\) 代表羊,\(0\) 代表狼。 那么,共有 \(2^2=4\) 种情况,分别为: 00 …

『学习笔记』二分算法

今天记录二分知识点。 二分是一个简单清晰,实用性强的算法。 也是本人最喜欢的算法之一。 先给出二分模板吧!int l = 1, r = n;//初始值,根据情况而定while (l + 1 < r) {int mid = (l + r) >> 1;if (check(mid)) l = mid;// check函数判断左半部分是否不符合,更新…

回家之难难于蜀道难

回家难 之难于蜀道难 (仿写李白蜀道难)噫吁嚱,困乎难乎,回家之途,难于上班路。 盘古及女娲,开天辟地捏人烟,尓来文明已万年,难解归家争吵事。 游子无钱难上路,漂留外地护空城。 千思万想定下来,踏上归途望团年。 上有爸妈在老家,下有孩童八九岁。 列车无票不得行,驱…

MAC|Edge——下载视频

解码错误解码错误指的是当前音/视频帧与浏览器不兼容,可以尝试以下方式:1.chrome/edge 浏览器打开chrome://flags,搜索 Hardware-accelerated video decode,选择 disabled2.如果解码错误仍然存在,请对视频进行转码处理,以修复问题帧3.firefox浏览器请打开about:support,…

stdio.h的缓冲机制解析

在C语言中,由于stdio.h中的缓冲机制,printf的输出常令人感到迷惑。本文将介绍其缓冲机制的具体细节1. 令人迷惑的printf() 在C语言中,由于stdio.h中的缓冲机制,printf的输出通常会受到缓冲区的影响。 这种影响可能非常微妙,并常常令人疑惑,比如我们来看下面这段代码 #inc…

【新能源行业】新能源汽车电子驻车制动系统(EPB)谁在做?

长期以来,汽车的动力系统一直是人们所关注的焦点,然而,汽车制动系统在背后默默支撑起整个汽车安全与稳定。其重要性丝毫不亚于动力系统。行车上路,安全第一。在每一次的启程与停驻之间,唯有制动系统作为坚实保障,才能让每一次出行都安心无虞。一、制动系统分类与组成 目前…

如何从内存中提取shellcode

恶意程序有时会直接在内存中运行shellcode 。在这篇文章中,我将向你展示如何从内存中获取shellcode。 shellcode在内存中的位置 在内存中分配shellcode的常用方法是使用VirtualAlloc来分配具有所需权~限的内存。然后恶意软件使用RtlMoveMemory将shellcode写入分配的空间。然后…

施耐德UNITY中使用ST 语言计算日均值

以前做过练习,在unity中计算分钟均值和小时均值,做成自定义功能块。今天在家打算按照同样的思路,试着做一下日均值。 第一次打算建立一个三维数组PV_DAY[0..23,0..59,0..59],每秒存放一个数据,编译的时候提示数组太大。 第二次尝试建立24个数组,每个数组存放一个小时内36…