如何一步一步构建网站ChatGPT插件

在本文中,我们将一步一步地探索并构建一个名为"AI Prompt Testing"的项目。该项目是一个网站插件,旨在帮助网站生成一个ChatGPT提示测试题,以巩固当前网页的内容。

1、抽象提取

这个网站ChatGPT插件大概的效果,类比的实现有哪些? addtoany, google analytics

addtoany的配置是这样子

<div class="a2a_kit a2a_kit_size_32 a2a_floating_style a2a_vertical_style" style="left:0px; top:150px;"><a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_pinterest"></a><a class="a2a_dd" href="<https://www.addtoany.com/share>"></a>
</div><script async src="https://static.addtoany.com/menu/page.js"></script>

google analytics 的配置是这样子

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXX"></script>
<script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-XXXXX');
</script>

都记下来,以被我们后续插件配置参考

2、技术实现思考

既然是网站chatgpt 插件,那么为何不让chatgpt 帮我写一下代码呢?

思考prompt

用一个js脚本,动态嵌入到网站上,脚本内容是,动态在网页右下侧生成一个类似分享按钮的按钮,按钮的功能如下:
1、假如用户点击按钮,按钮则生成一个一段文本,“基于链接{url},生成一份测试题,选择题4题,问答题3题,判断题3题,并在问题之后附上答案”,这里的{url} 是当前网页地址。
2、按钮展示是一个chatgpt svg 图标,图标大小为32*32,,图标内部字体内容为“生成测试题”
3、用户点击按钮后,请把内容复制到剪贴板,并提示用户“内容已复制请前往chatgpt网站”
4、提示内容添加动画淡入显示,用户点击提示内容后自动淡出并移除

然后chatgpt一顿输出

// 创建一个div元素来包含按钮和提示内容
var container = document.createElement("div");
container.style.cssText = "position:fixed;right:20px;bottom:20px;z-index:9999;";// 创建按钮元素
var button = document.createElement("button");
button.style.cssText = "background:none;border:none;cursor:pointer;";
var icon = document.createElementNS("http://www.w3.org/2000/svg", "svg");
icon.setAttribute("xmlns", "http://www.w3.org/2000/svg");
icon.setAttribute("width", "32");
icon.setAttribute("height", "32");
icon.setAttribute("viewBox", "0 0 24 24");
icon.setAttribute("fill", "none");
icon.setAttribute("stroke", "currentColor");
icon.setAttribute("stroke-width", "2");
icon.setAttribute("stroke-linecap", "round");
icon.setAttribute("stroke-linejoin", "round");
var path = document.createElementNS("http://www.w3.org/2000/svg", "path");
path.setAttribute("d","M6 9l6 6 6-6"
);
icon.appendChild(path);
var text = document.createElement("span");
text.style.cssText = "font-size:10px; display:block;";
text.innerHTML = "生成测试题";
button.appendChild(icon);
button.appendChild(text);// 创建提示内容元素
var tooltip = document.createElement("div");
tooltip.style.cssText = "position:absolute;bottom:40px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:5px 10px;border-radius:5px;opacity:0;transition:opacity 0.5s;";
tooltip.innerHTML = "内容已复制,请前往ChatGPT网站";// 将按钮和提示内容添加到容器元素中
container.appendChild(button);
container.appendChild(tooltip);
document.body.appendChild(container);// 为按钮添加点击事件
button.addEventListener("click", function () {// 生成测试题文本var url = window.location.href;var text ="基于链接" +url +",生成一份测试题,选择题4题,问答题3题,判断题3题,并在问题之后附上答案";// 复制文本到剪贴板var tempInput = document.createElement("input");tempInput.setAttribute("value", text);document.body.appendChild(tempInput);tempInput.select();document.execCommand("copy");document.body.removeChild(tempInput);// 显示提示内容,并在淡入后淡出并删除元素tooltip.style.opacity = "1";setTimeout(function () {tooltip.style.opacity = "0";setTimeout(function () {container.removeChild(tooltip);}, 500);}, 3000);
});

贴入控制台看一下

生成后,点击按钮效果,基本满足了 

 

经过1、2步的梳理,我们基本实现所有用户侧的代码和思路。

3、接下来我们开始正式写代码

3.1 创建项目,初始化

npm create vite@latest

我们可以选择vue 的模版初始化,思考了一下好像挺简单,用原生js也可以。删掉vue 插件。由于我们需要构建成第三方网站直接引用的代码库,所以要配置一下build 选项。

我们的prompt里面需要用到svg图标,所以把vite-svg-loader 插件也引入。

vite.config.js

import { defineConfig } from 'vite'
import svgLoader from 'vite-svg-loader'
import banner from 'vite-plugin-banner'
import pkg from './package.json'
import path from 'path'// <https://vitejs.dev/config/>
export default defineConfig({plugins: [banner({outDir: './lib',content: `/**\n * name: ${pkg.name}\n * version: v${pkg.version}\n * description: ${pkg.description}\n * author: ${pkg.author}\n * homepage: ${pkg.homepage}\n */`}), svgLoader()],build: {outDir: "./lib",lib: {entry: path.resolve(__dirname, 'src/index.js'),name: 'chatgpt',fileName: (format) => `chatgpt.${format}.js`}}
})

项目搭建完成,npm run dev 开始一步一步调优chatgpt生成的代码

3.2 如何实现配置类似于 google analytics 的配置?

<script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-XXXXX');
</script>

首先我们要序列化一下配置选项,生成key value 对象,然后直接读取key的值就好了

// if fromOrgin
if (window.atob && window.atob(opt.config) !== location.origin) {return;
}

我们加上一行调试一下配置看一下代码还能不能运行

于是我们照猫画虎就可以得到大概引入配置代码

index.html

<script type="module" src="/src/index.js"></script>
<script>window._chatData = window._chatData || [];function chatag() { _chatData.push(arguments); }chatag('js', new Date());chatag('config', 'aHR0cDovL2xvY2FsaG9zdDo1MTcz');
</script>

'aHR0cDovL2xvY2FsaG9zdDo1MTcz' 就是当前本地调试的域名 'http://localhost:5173'

atob('aHR0cDovL2xvY2FsaG9zdDo1MTcz')

考虑到网站插件可能是多国用户的需求,引入多国语言,把原来写死的txt 抽离一下,基本完成

4、代码到了发布阶段

4.1 我们引入release-it package

"release-it": {"hooks": {"after:bump": "npm run build"}},

发布生命周期 after:bump 需要构建一下再发布, 具体参考GitHub - release-it/release-it: 🚀 Automate versioning and package publishing

4.2 优化readme 让用户更加好理解

### Add chatbtn code manuallyBelow is the chatbtn code for this account. Please copy and paste this code into the code of every page on your site, immediately after the <head> or <body> element. Only one chatbtn tag can be added per page.```js<script async src="<https://unpkg.com/ai-prompt-testing/lib/chatgpt.umd.js?id=aHR0cHM6Ly9kb2NzLnczY3ViLmNvbQ==>"></script>
<script>window._chatData = window._chatData || [];function chatag(){_chatData.push(arguments);}chatag('js', new Date());chatag('config', 'aHR0cHM6Ly9kb2NzLnczY3ViLmNvbQ==');
</script>or```
<script>
var tracker_id = 'aHR0cHM6Ly9kb2NzLnczY3ViLmNvbQ=='
function chatag(){_chatData.push(arguments);}
var url = "<https://unpkg.com/ai-prompt-testing/lib/chatgpt.umd.js?id=>" + tracker_id;
(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = url;var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
window._chatData = window._chatData || [];
chatag('js', new Date());
chatag('config', tracker_id);
</script>
```### Chatag config-   chatag('config', 'aHR0cHM6Ly9kb2NzLnczY3ViLmNvbQ==');'aHR0cHM6Ly9kb2NzLnczY3ViLmNvbQ==' equal to btoa(location.origin)### Lastest libraryhttps://unpkg.com/ai-prompt-testing## Demohttps://docs.w3cub.com/rust/std/index

因为我们要发布到npm 所以直接用unpkg cdn

unpkg is a fast, global content delivery network for everything on npm.

最后附上项目链接:GitHub - icai/ai-prompt-testing: ai prompt for website testing


最近熬夜给大家准备了一份非常全的ChatGPT 高效指令汇总大全【完整版】,需要的可以私信免费领取!

 

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

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

相关文章

ChatGPT 是什么?怎么用?如何提效?怎么赚钱变现?

我花了几天时间系统的研究了 ChatGPT 的原理、应用、实践、以及我交流群里大家的反馈。 总结一句话&#xff1a;要么拥抱 ChatGPT&#xff0c;要么被 ChatGPT 干掉&#xff0c;就这么简单。 ChatGpt 是什么&#xff1f; ChatGPT 是由 OpenAI 开发的&#xff0c;目前可以免费注…

科创板首批9家企业及其招股说明书下载链接

今天&#xff08;2019-3-22&#xff09;&#xff0c;科创板首批9家企业名单公布&#xff0c;分别为晶晨半导体、睿创微纳、天奈科技、江苏北人、利元亨、宁波容百、和舰芯片、安瀚科技、武汉科前生物。 9份招股书下载链接&#xff08;仅2019-3-29之前有效&#xff09; 链接: ht…

2021年科创板股权激励研究报告发布

编者按&#xff1a;科创板于2019年正式开板&#xff0c;开启A股市场注册制&#xff0c;允许同股不同权的公司和未盈利的公司上市&#xff0c;A股迅速扩容。截至2021年6月21日&#xff0c;共有接近300家公司在科创板注册上市。科创板众多上市公司实施股权激励计划&#xff0c;对…

天岳先进登陆科创板:上市首日一度破发,预计全年扣非后利润下滑

1月12日&#xff0c;山东天岳先进科技股份有限公司&#xff08;下称“天岳先进”&#xff0c;SH:688234&#xff09;在上交所科创板上市。据了解&#xff0c;天岳先进的发行价为82.79元/股&#xff0c;发行股份数量为约4297.11万股&#xff0c;募资金额为35.58亿元。 按发行价计…

这些科创板的上市公司,你们都了解吗?

之前&#xff0c;科创板的出台&#xff0c;引发了行业激烈反响。随着科创板走入正轨&#xff0c;就在2019年7、8、9三个月内&#xff0c;就有不同类型的科技公司上市在了科创板。 那么&#xff0c;这些科创板的上市公司&#xff0c;你们都了解吗&#xff1f; 点击添加图片描述…

旷视科技在科创板上市发行注册进程恢复,三年研发投入超过26亿元

2022年5月16日&#xff0c;上交所科创板披露的信息显示&#xff0c;根据《科创板首次公开发行股票注册管理办法&#xff08;试行&#xff09;》第三十条的相关规定&#xff0c;恢复旷视科技有限公司&#xff08;下称“旷视科技”&#xff09;发行注册程序。 这意味着&#xff…

科创板IPO上市条件

科创板IPO上市条件 1、符合中国证监会规定的发行条件&#xff1b; 2、发行后股本总额不低于人民币3千万元&#xff1b; 3、首次公开发行的股份达到公司股份总数的25%以上&#xff0c;公司股本总额超过人民币4亿元的&#xff0c;首次公开发行股份的比例为10%以上&#xff1b;…

科创板将迎做市商机制,做市商到底是什么?

监会近日发布《证券公司科创板股票做市交易业务试点规定&#xff08;征求意见稿&#xff09;》&#xff0c;简称《做市规定》&#xff0c;向社会公开征求意见。《做市规定》共十七条&#xff0c;主要包括做市商准入条件、准入程序、做市券源安排、内部管控、风险监测监控、监管…

新点软件登陆科创板:上市首日破发,腾讯、建发股份参与认购

11月17日&#xff0c;国泰新点软件股份有限公司&#xff08;下称“新点软件”&#xff0c;SH:688232&#xff09;在上交所科创板上市。上市首日&#xff0c;新点软件便跌破发行价&#xff0c;盘中最低价一度跌至41.02元/股。 与之对的是&#xff0c;新点软件的发行价为48.49元…

康鹏科技将于12月16日上会:曾在纽交所上市,由杨建华家族控股

近日&#xff0c;上海康鹏科技股份有限公司&#xff08;下称“康鹏科技”&#xff09;在上海证券交易所递交招股书&#xff08;上会稿&#xff09;&#xff0c;准备在科创板上市。据贝多财经了解&#xff0c;康鹏科技将于2022年12月16日接受科创板上市委的现场审议。 根据公开信…

赛卓电子冲刺科创板上市:计划募资11亿元,股东包括尚颀资本等

12月28日&#xff0c;赛卓电子科技&#xff08;上海&#xff09;股份有限公司&#xff08;下称“赛卓电子”&#xff09;在上海证券交易所递交招股书&#xff0c;准备在科创板上市。本次冲刺上市&#xff0c;赛卓电子计划募资11亿元&#xff0c;将用于车规级芯片研发及产业化项…

[创业之路-68]:科创板上市公司符合哪些条件

上交所发布《关于在上交所设立科创板并试点注册制相关情况答记者问》。上交所将认真落实习指示&#xff0c;在证监会的指导下&#xff0c;积极研究制订科创板和注册制试点方案&#xff0c;向市场征求意见并履行报批程序后实施。科创板是独立于现有主板市场的新设板块&#xff0…

国家高新技术企业,科创板上市会更容易吗?

企业在申请了国家高新技术认定通过之后&#xff0c;如果还想再去申请科创板上市&#xff0c;那么如有国家高新技术的话&#xff0c;就一定可以去申请科创板上市吗&#xff1f; 有国家高新技术资格上科创板会不会更容易&#xff1f;&#xff01;其实国家高新技术认定的企业&…

纵目科技冲刺科创板上市:拟募资20亿元,股东阵容强大

11月23日&#xff0c;纵目科技&#xff08;上海&#xff09;股份有限公司&#xff08;下称“纵目科技”&#xff09;在上海证券交易所递交招股书&#xff0c;准备在科创板上市。本次冲刺上市&#xff0c;纵目科技计划募资20亿元&#xff0c;拟用于上海研发中心建设项目、东阳智…

英方软件在科创板上市:总市值89亿元,胡军擎、江俊夫妇为实控人

1月19日&#xff0c;上海英方软件股份有限公司&#xff08;下称“英方软件”&#xff0c;SH:688435&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;英方软件的发行价为38.66元/股&#xff0c;发行2094.6737万股&#xff0c;募资总额约为8.10亿元&#xff0c;募资…

美腾科技科创板上市:预计年营收4.7亿到5.7亿 市值44亿

雷递网 雷建平 12月9日 天津美腾科技股份有限公司&#xff08;简称&#xff1a;“美腾科技”&#xff0c;股票代码为&#xff1a;“688420”&#xff09;今日在科创板上市。 美腾科技此次发行2211万股&#xff0c;发行价为48.96元&#xff0c;募资总额为10.83亿元。 美腾科技开…

港交所VS科创板,企业IPO更应该选择谁?

文丨易牟 来源丨螳螂财经&#xff08;ID:TanglangFin&#xff09; 有人星夜赶考场&#xff0c;有人辞官归故里。 这几天&#xff0c;A股完成了热点切换&#xff0c;银行股、保险股、地产股开始走强&#xff0c;低估值类行业被投资者青睐&#xff0c;媒体和券商再一次鼓吹“牛…

长盈通递交注册:拟募资5亿 光谷将诞生一家科创板企业

雷递网 雷建平 9月6日 武汉长盈通光电技术股份有限公司&#xff08;简称&#xff1a;“长盈通光电”&#xff09;日前IPO过会&#xff0c;并递交注册&#xff0c;准备在科创板上市。 长盈通光电计划募资5亿元&#xff0c;其中&#xff0c;4亿元用于特种光纤光缆、光器件产能建设…

​赛分科技冲刺科创板上市:拟募资8亿元,复星、高瓴为股东​

近日&#xff0c;苏州赛分科技股份有限公司&#xff08;下称“赛分科技”&#xff09;在上海证券交易所递交招股书&#xff0c;准备在科创板上市。本次冲刺上市&#xff0c;赛分科技计划募资8亿元&#xff0c;将用于20万升/年生物医药分离纯化用辅料、研发中心建设项目&#xf…

【ChatGLM】基于 ChatGLM-6B + langchain 实现本地化知识库检索与智能答案生成: 中文 LangChain 项目的实现开源工作

【ChatGLM】基于 ChatGLM-6B + langchain 实现本地化知识库检索与智能答案生成: 中文 LangChain 项目的实现开源工作 目录 【ChatGLM】基于 ChatGLM-6B + langchain 实现本地化知识库检索与智能答案生成: 中文 LangChain 项目的实现开源工作 1.克隆源代码: 2.安装前置依