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

这篇具有很好参考价值的文章主要介绍了如何一步一步构建网站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);
});

贴入控制台看一下

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

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

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

 文章来源地址https://www.toymoban.com/news/detail-442612.html

经过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 manually

Below 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 library

https://unpkg.com/ai-prompt-testing

## Demo

https://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 高效指令汇总大全【完整版】,需要的可以私信免费领取!

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

 

到了这里,关于如何一步一步构建网站ChatGPT插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一步一步介绍如何使用 OpenCV 创建虚拟笔和橡皮擦--附源码

            文末提供相关源码下载         如果您只需在空中挥动笔即可虚拟地绘制一些东西,并且它实际上会将其绘制在屏幕上,那不是很酷吗?如果我们不使用任何特殊的硬件来实际实现这一点,可能会更有趣,只需简单的计算机视觉就可以,事实上,我们甚至不需要

    2024年02月14日
    浏览(47)
  • 一步一步教你如何使用 Visual Studio Code 编译一段 C# 代码

    以下是一步一步教你如何使用 Visual Studio Code 编写使用 C# 语言输出当前日期和时间的代码: 1、下载并安装 .NET SDK。您可以从 Microsoft 官网下载并安装它。 2、打开 Visual Studio Code,并安装 C# 扩展。您可以在 Visual Studio Code 中通过扩展菜单安装它。 3、打开 Visual Studio Code 中的文

    2024年02月11日
    浏览(52)
  • 一步一步教你如何白嫖谷歌云Google Cloud服务器$300美金羊毛

    我们都知道,Depay(现在改名为Dupay了)卡平常可以用于微信,支付宝,美团消费,直接用USDT做日常小额消费,还免收手续费,小额的话,这点还是很舒服的。 但其实,Depay卡的用途远不止此,平常可以多挖掘挖掘。今天教大家如何用Depay卡白嫖谷歌云服务器。申请成功后随即可

    2024年02月04日
    浏览(131)
  • Ubuntn 教你如何一步一步在 Ubuntn 上安装Samba服务器详解(看不懂,你怪我)

    目录 一、Ubuntu安装Samba 服务器 二、Samba服务器配置 三、启动和关闭 四、安装完成访问在window界面输入cmd界面输入\\\\ip地址,进去找到share文件输入自己设置的密码

    2024年01月23日
    浏览(40)
  • 一步一步学习 Stable Diffusion

    网上看了很多 Stable Diffusion 的视频,还有一些网站的资料之后,决定自己整理一份一步一步学习 Stable Diffusion 的学习资料。 请参照 Windows 11 本地部署 Stable Diffusion web UI 或者 Windows 11 上从零开始基于 wsl-ubuntu 搭建 AI 学习环境及部署多种私有 ChatGPT 进行部署。 访问 Extensions =

    2024年02月09日
    浏览(71)
  • 一步一步学OAK之二: RGB相机控制

    今天我们来实现 RGB相机的控制程序,用来控制彩色相机的曝光、灵敏度、白平衡、亮度/色度降噪、 设备端裁剪、相机触发器等。 创建新建2-rgb-camera-control文件夹 用vscode打开该文件夹 新建一个main.py 文件 安装依赖前需要先创建和激活虚拟环境,我这里已经创建了虚拟环境O

    2024年02月11日
    浏览(62)
  • 怎么手机录屏?一步一步教会你操作

    在日常的生活中,我们在看电影或者电视剧的时候,发现其中有一段十分的精彩,想要将其录下来并分享给自己的好友观看,却不知该如何做?其实并不难操作,下面的这篇文章就让我们一起了解一下吧!让你不再为不知道手机怎么录屏而感到苦恼了。 方法一:借助“提词全

    2024年02月11日
    浏览(58)
  • mysql8安装(详细教程一步一步安装)

    1、下载地址: MySQL :: Download MySQL Community Server 2、点击download  3、不登录直接下载 1、将mysql8压缩包解压到自定义目录 2、在文件夹下新建Data目录以及my.ini文件 Data文件夹用于存放mysql数据,my.ini存放mysql配置  3、以文本的形式打开my.ini,输入以下信息  [mysqld] # 设置3306端口

    2024年02月12日
    浏览(51)
  • Android一步一步教你实现Emoji表情键盘

    背景: 说到聊天,就离不开文字、表情和图片,表情和图片增加了聊天的趣味性,让原本无聊的文字瞬间用表情动了起来,今天给大家带来的是表情键盘,教你一步一步实现,先来看下效果图: 效果图 功能: 1、如何控制表情键盘与输入法的切换 2、如何解析表情 3、如何处

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包