OpenAi提供了Fine-tuning功能,解决个人模型训练需求。这里尝试使用下。

前置条件

  1. OpenAI账号注册,api key获取

  2. 安装工具包

    1
    pip install --upgrade openai

生成数据集

按照如下格式整理数据

https://github.com/alanhg/express-demo/blob/c36ea133139b5d611845628a0c6ba5d6e995c209/test/trainai.jsonl

字段说明

  1. prompt即问题,以\n\nIntent:\n\n结尾
  2. completion即回答,空格开头

数据格式为什么如此要求,见官方解释https://platform.openai.com/docs/guides/fine-tuning/data-formatting

校验数据

1
openai tools fine_tunes.prepare_data -f ./test/trainai.jsonl

在执行数据校验时可能会遇到一些错误,比如

missing pandas

OpenAI error:

missing pandas

报错原因是像 numpypandas 这样的数据库,由于其体积较大,不会默认安装。它们是该库的某些功能所需,但通常不需要用于与API通信。如果遇到 MissingDependencyError,请使用以下方式安装它们:

1
pip install pandas   

创建model

1
openai api fine_tunes.create -t test/trainai.jsonl -m davinci 

创建成功后命令行会提示模型名称/训练花费

使用model

模型训练成功后即可以使用,除了API直接调用外,简单测试的话可以走官网playground,模型下拉会显示出已训练OK的模型,直接测试即可。

https://static.1991421.cn/2023/2023-03-26-232507.jpeg

https://platform.openai.com/playground

更新model?

不存在对现有model的更新,必须以最新的全量数据重新训练出新的版本模型。

定价

模型训练需要花钱,具体价格见https://openai.com/pricing#language-models

写在最后

有了Fine-tuning,构建比如官方文档助手/客服等将会很简单了。

ChatGPT首发于2022 年 11 月 30 日,可以说从这天开始,出圈了。ChatGPT,OpenAI API,Midjourney,New Bing,Bard,GitHub Copilot等等层出不穷。

在使用几个月后,这里进行下总结。

ChatGPT

ChatGPT是 OpenAI 基于 GPT-3.5 架构研发的自然语言生成模型,一种高级的聊天机器人。

  1. 产品形态是Web网页,免费使用
  2. 付费开通PLUS可以解锁最新的GPT-4模型,不同模型的区别会带来回答速度,回答质量的区别

注册

OpenAI API

OpenAI推出的产品除了ChatGPT之外,还有更底层的设施OpenAI API,对应也提供了各个语言的library,因此市面上很多接入OpenAI的产品都是走的该方案。

Library链接戳这里

玩法

  1. 调用API比如实现根据自然语言描述,生成Shell命令
  2. 类ChatGPT聊天机器人
  3. 私人数据模型训练

GPT-4

GPT-4 是由 OpenAI 开发的多模态模型,能够接收图像和文本输入并输出文本。

GPT-4 在许多领域上达到了 SOTA 的模型。

  • 输入文字上限来到了 25000 个词
  • GPT-4 在专业和学术能力的基准上已经达到了人类水平。
  • 可支持图片输入,并且可以阅读和解释
  1. GPT-4目前还在排队申请阶段,并未对外放开
  2. 训练数据仍然是停留在 Sep 2021

排队戳这里https://openai.com/waitlist/gpt-4

GitHub Copilot

GitHub Copilot是一个由GitHub和OpenAI合作开发的人工智能工具,用户在使用Visual Studio Code、Microsoft Visual Studio、Vim或JetBrains集成开发环境时可以通过GitHub Copilot自动补全代码。

玩法

Copilot X?

GitHub Copilot X是GitHub Copilot的升级版,它引入了聊天和语音界面、支持pull requests,回答文档中的问题,并采用OpenAI的GPT-4技术,以获得更个性化的开发者体验

New Bing

新版Bing运行在比ChatGPT更先进的OpenAI语言模型上,但并不是之前坊间相传的GPT4模型。12 微软和OpenAI的关系是,微软是OpenAI的投资方之一,而且两家公司在人工智能领域有着广泛的合作。12

  1. New Bing的产品形态是搜索,即聊天问答,与ChatGPT当前最根本的区别是数据来源于搜索即实时数据,而ChatGPT是有时效性的
  2. 新版必应Bing Chat每日聊天上限将上调至100次,交互响应速度将提升10%

官网链接:https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx

玩法

  1. 聊天式检索

Midjourney

Midjourney从自然语言描述(称为“提示”)中生成图像,类似于OpenAI的DALL-E和Stable Diffusion

官网:https://www.midjourney.com

玩法

比如下面的prompt

create it in the Disney Pixar style , 3d, computer animation, animated movie, HD,Do not bring glasses,wear white T shirt

其它

Bard

Google Bard是谷歌开发的人工智能聊天机器人,由LaMDA提供支持,旨在模拟与人类的对话,并使用自然语言处理和机器学习相结合,为您可能问它的问题提供逼真和有用的回答。

Bard现在跟OpenAI/ChatGPT比差很多

  1. 不支持中文
  2. 还没提供API服务

https://bard.google.com

文心一言

https://yiyan.baidu.com

接入GPT的一些产品

  1. 欧陆词典
  2. iTerm2
  3. Cursor
  4. warp terminal

总结

  1. ChatGPT充当检索功能互补了Google类传统检索的不足
  2. GitHub Copilot作为动态code snippet管理工具及结对编程的伙伴

今天去登记了结婚,算是步入新时代。

这里也总结下北京这边登记结婚事宜,因为我这里情况特殊,一方是北京集体户口,另一方是外地集体户口,一度担心会有证件问题,最后总算顺利办下来了。这里总结下,兴许帮到些朋友。

阅读全文 »

最近推出的WebShell实现了自定义背景图,这里mark下整体方案

技术方案

https://static.1991421.cn/2023/2023-03-06-235223.jpeg

整体方案如图,大致的实现细节是

  1. 终端方案xterm.js支持透明背景,因此这里设置为透明背景
  2. 补充一个终端的兄弟DOM元素,且在前,通过CSS设置背景图,背景图作为终端的底,但是同时通过opacity设置透明度
  3. 终端的父元素设置为纯色,不需要透明度

如上即可实现具备透明度的自定义终端背景图了

Demo

戳这里

最近有需求将我们的PC版WebShell支持下PWA,主要是想利用其特性实现安装到桌面,这样用户可以App形式访问。这里就mark下基本实现。

https://static.1991421.cn/2023/2023-02-27-220540.jpeg

PWA配置

首先是基本的PWA配置

manifest配置说明

manifest.webmanifest清单文件,内容是JSON格式

参考

  1. display

    minimal-ui

    https://static.1991421.cn/2023/2023-02-27-223043.jpeg

    standalone

    https://static.1991421.cn/2023/2023-02-27-223109.jpeg

  2. name/short_name/display配置修改更新

    比如name修改,再浏览器重启访问网站是会提示更新,但比如display配置修改,重启浏览器访问app,不会提示,直接会使用最新的。

  3. description

    • 该字段配置后,在Windows系统下,光标移动到快捷方式时,hover显示内容,因此不建议很长,推荐与name/short_name一致即可。
    • 后期manifest更新description时,Windows下的快捷方式并不会同步更新,必须重新创建才行。
  4. theme_color

如果想动态修改theme_color,可以通过动态修改<meta name="theme-color" content="#0066ff"/>来解决

https://static.1991421.cn/2023/2023-02-27-223225.jpeg

  1. icon
  • 尺寸建议配置192/512,包含maskable的,共4个图标即可。

service-worker.js注册

参考

调试

Chrome隐私模式下不支持PWA安装提示,也不支持ServiceWorker提示

兼容性

PWA支持的浏览器挺多,比如Firefox,Safari都有支持,但支持程度不同,针对安装这个特性,PC版目前

Edge/Chrome,Windows/Mac均支持,具体来说,还有版本限制。

准确判断的话,可以使用以下事件,只有触发了beforeinstallprompt事件,安装提示才会出现。

1
2
3
4
5
6
window.addEventListener('beforeinstallprompt', (e) => {
// 可以用于区分是否可以安装,非空表示可以安装,但空表示不支持安装或已经安装过了
// isInstallAvailable
window.deferredPrompt = e;
});

测试发现即使是新的浏览器,比如Chrome,有些同事的电脑访问网页也没有安装提示,不确定是否有些设定可以禁用。

如上配置再结合beforeinstallprompt即可实现网页添加到桌面了。

但还有些细节问题需要处理。

常见问题

  1. 判断是否是应用图标启动

    1
    2
    3
    4
    5
    6
    function isStandalone() {
    if (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator.standalone === true))) {
    return true;
    }
    return false;
    }
  2. 访问网页时检测是否已经安装过

    如果安装过,beforeinstallprompt事件是不会触发的,但是beforeinstallprompt不存在三种可能性,因此并没有准确的办法判断,需要按需选择能用的办法。

    1. 不支持安装,比如Firefox
    2. 不满足使用条件,比如有些同事同版本浏览器没出现安装提示,具体原因不明
    3. 支持且已经安装过了
  3. 程序化控制从网页选择用App打开

    目前不存在这样的接口实现

  4. 重复打开

    App本质还是个标签网页,因此如果用户多次点击Open with,那么也就会打开多个App

  5. 自定义安装提示

    可以自行增加一个安装按钮/弹窗,增加一个自定义提示,但最终还是会唤起浏览器自带的安装弹窗

    1
    2
    3
    4
    5
    6
    7
    8
    9
    installApp.addEventListener('click', async () => {
    if (deferredPrompt !== null) {
    deferredPrompt.prompt();
    const {outcome} = await deferredPrompt.userChoice;
    if (outcome === 'accepted') {
    window.deferredPrompt = null;
    }
    }
    });
  6. App启动欢迎画面设定?

    不支持,唯一的做法是自己在页面的整个渲染过程中可以适当增加动画,提升体验

参考站点

PC版实现了添加到桌面的网页并不多,这里罗列些。

  1. https://www.v2ex.com/
  2. https://youtube.com/
  3. https://twitter.com/

写在最后

综上,这里只是实现了PWA的一个特性应用即添加到桌面。

相关文档

0%