身边事
我做了一个 VSCode 插件版的 ChatGPT 世界速递
发布时间:2023-05-11 10:37:59 文章来源:博客园

大家好,我是风筝

其实很早之前就想学学 VSCode 插件开发了,但是又不知道做什么,加上我这半吊子前端水平,迟迟没有动手。


(资料图)

最近 ChatGPT 火的一塌糊涂,我也一直在用,真的非常好用,有些问题之前需要 Google 搜索,现在用 ChatGPT 基本上都能直接解决,效率提升了不少。

但是吧,浏览器和 IDE 来回切换又很麻烦,所以我灵机一动,那就开发个 ChatGPT 插件吧,即可以学习学习 VSCode 插件开发,又可以做一个方便的效率工具,岂不是一举两得,美哉美哉。

于是我就动手写了下面这个插件,叫做 mini ChatGPT,现在已经发布到 VSCode 插件市场了。

有条件的同学可以安装一下,试试效果如何。

插件功能特点

界面简洁,没有多余的干扰;像 ChatGPT 官网输出效果一致,打字效果实时输出;支持两轮上下文(太多了浪费 tokens),大致等于支持上下文;代码美化+格式化,并且可以一键复制,直接粘贴到 vscode 中;插件安装

当然了,这是需要正确的上网姿势。

你可以直接在 VSCode 的商店直接搜索 mini ChatGPT安装。

也可以到应用市场上安装。

插件地址:https://marketplace.visualstudio.com/items?itemName=fengzheng.code-chatgpt-assistant

插件使用点击查看->命令面板,或者使用快捷键(MacOS: Shift + Command + P,Windows:Shift + Control + P输入 Chat并回车。如果是首次使用,会弹出提示输入框,在此输入 ChatGPT 的 API。使用的就是原滋原味的 ChatGPT API 接口,官网上都写的很清楚,所以需要使用插件的小伙伴提供自己账号的 API key。下面有介绍如何获取ChatGPT API key。之后就可以使用啦如果之后想更换 ChatGPT 的 API key,在命令面板中输入 ChatGPT API即可。

使用建议

此插件只有一个 webview 实现,打开之后独占一个 tab,可以设置向左或向右拆分,然后在左侧使用此插件向 ChatGPT 提问,右侧是代码文件,这样就不用来回切换了,而且可以将代码片段一键复制,然后直接运行。

获取 ChatGPT API key

先准备好正确的上网工具,不要用亚洲节点。

之后到 OpenAI 官网注册账号。

到个人中心 创建一个 API key。

开发历程

作为一个后端开发,我的前端水平是非常一般的,所以代码中有瑕疵的地方还请见谅。对了,代码已经放到 GitHub 上了。

仓库地址:https://github.com/huzhicheng/vscode-ChatGPT

VSCode 插件开发,官方建议是用 TypeScript 开发,所以项目完全采用了 TS 开发。由于功能比较简单,没有那么多复杂的设置,由于边学边做,太复杂的也没考虑。整个插件的核心其实就是一个 webview,在webview中实现界面布局和样式,难点就在于webview与插件本身来回的数据传递,但也都是常规用法。

整个写代码的过程其实也就几个小时,当然过程中的遇到的一些问题我都是跟 ChatGPT 提问的,包括样式都是直接描述需求,ChatGPT 给我一个大致的框架,我再微调一下就可以了。

所以这样看下来,其实是我和 ChatGPT 合作开发的。

后来发布到应用商店,写 readme 介绍和使用说明花了一些时间。

问题和建议

目前的版本功能比较简单,没有 ChatGPT 官方的聊天记录列表功能,如果真的有人用的话,后期考虑加上。

由于ChatGPT 官方并未提供上下文的 API 支持,所以只能采用其他方式模仿上下文能力,目前的做法是记录前两轮提问和回答,然后在下次提问的时候,将前两轮的提问和回答告诉 ChatGPT ,并且明确告诉 ChatGPT,例如下面这样。

第一轮问题:你好。

第一轮回答:你好,请问有什么要帮忙的吗?

第二论问题:请帮我写一段 Python 爬虫抓取知乎回答的 demo。

第二轮回答:好的,下面是一段抓取知乎回答的 Python 示例。....省略多行代码。

第三轮问题:帮我改成 Java 的。

这时候,我会将实际的 prompt 改成下面这样的。

下面中括号部分是前两轮的问题和回答,只用作参考。[my question is:"你好",your anwser is:"你好,请问有什么要帮忙的吗?".my question is:"请帮我写一段 Python 爬虫抓取知乎回答的 demo。",your anwser is:"好的,下面是一段抓取知乎回答的 Python 示例。....省略多行代码。".]

下面引号包含的这部分是真正的问题:"帮我改成 Java 的。"

采用这种方式,几乎可以模拟上下文的操作,但是偶尔会出现错乱,这块儿还有优化空间,还会继续优化。

如果各位小伙伴使用过程中发现什么问题,或者有什么更好的建议,都可以加我好友直接跟我说。

欢迎捧场,赶紧用一用吧,觉得好用的话,可以推荐给身边的小伙伴也用一下。

11.jpg

我做了一个 VSCode 插件版的 ChatGPT 世界速递

莲都两电商直播“共富工坊” 获省级专项激励资金120万元|天天速看

世界快播:东华软件:5月10日融资买入2840.35万元,融资融券余额10.89亿元

招聘信息 | 先进制造投资经理、股权投资风控岗

观天下!昆明拓东街道成立大学生志愿服务点

到春城昆明 赴一场绝美的日出日落

第20届东博会高官会在邕举办

西部计划广西项目办赴全区高校开展招募宣讲活动 今年广西计划新招募千名志愿者

白鹿原影视城景区入选国家级文明旅游示范单位

全球百事通!陕西:促进城乡居民收入稳定增长

天天微头条丨解码陇原新乡村|宜居又宜业 看乡村振兴的“武威密码”

新华全媒+ | 打卡古都西安的文化地标——秦兵马俑陕西频道

世界讯息:中矿资源(002738)5月10日主力资金净买入1.53亿元

世界热头条丨我国西南麦区大面积开镰

上市游戏公司2022年报:近七成游戏公司营收下滑 当前信息

焦点资讯:宏大国源 芜湖资源环境治理有限公司

4月PPI同比下降3.6% 世界播报

韩国央行:未来十年韩制造业劳动人口或减24万人有必要引入外籍劳工

全球热点!我的世界如何获得龙蛋指令 我的世界龙蛋指令获得

世界最资讯丨年轻化沉浸式“夜济南”: 城市软实力提升来了“生力军”

公告速递:长盛盛裕纯债基金调整暂停大额申购、转换转入、定期定额投资业务金额|世界速看

世界速看:成都金地威新·成华创新基地展示中心开放 人工智能等领域企业签约入驻

神兽战士在线观看(神兽战士)

山东济宁:老城旧巷变身文创旅游“打卡地” 焦点快看

从农家“方寸地”到致富“聚宝盆”——脱贫地区发展庭院经济观察

热点在线丨足球——中甲:广西平果哈嘹胜上海嘉定汇龙

环球快讯:甘肃省人事考试考务工作联席会议召开

观热点:甘肃举行庆祝“5·12国际护士节”活动

天天实时:邯郸四项行动激活科技创新动力

邢台着力推进幸福河湖建设

食品网络电视台 | 大众经济网 | 廊坊新闻网 | 魅力中国网 | 中国财讯网 | 中国食品网络电视台 | 新选择原创 | 生活新报 | 参考经济网 | 华夏财富网 | 手机资讯 | 百通网 | 手机电商 | 瑞克网