花粉乐分享平台宣传视频
> 乐学堂 > > 用 GPT-4 创建 VSCode 插件,我遇到的六个问题!
用 GPT-4 创建 VSCode 插件,我遇到的六个问题!
来源:CSDN
2023-06-27 16:32:43
543
管理

让 GPT-4 从头开发一个扩展,会有什么情况发生?它的代码真的可以安装、编译、运行吗?一位开发者 KEVIN LIN 进行了一次测试。

原文链接:https://bit.kevinslin.com/p/leverAGIng-gpt-4-to-automate-the

声明:本文为 CSDN 翻译,未经允许,禁止转载。

作者 | KEVIN LIN

编译 | ChatGPT 责编 | 苏宓

出品 | CSDN(ID:CSDNnews)

最近,我一直在尝试使用语言模型(LLM)来编写代码。我发现它们非常擅长生成小而完整的代码片段。不幸的是,如果需要生成更多的代码,就需要人类评估 LLM 的输出,并提供适当的后续提示,进行优化,之后才可以使用。

目前,大部分“GPT 写了 X”的案例都是如此——人类充当 LLM 的 REPL(Read-Eval-Print Loop,读取-求值-输出循环),仔细引导大模型产生功能性的结果。这并不是贬低这个过程的意思——它的可行性实则令人惊叹。但我们能否进一步呢?我们能否使用 LLM 一次性生成复杂程序的所有代码,而无需任何人类介入呢?

代码

extension.ts 是开发一个 VSCode 扩展的入口点。在这份文件中,我们定义了指定的三个命令。

import * as vscode from 'vscode';import { increaseHeadingLevel } from './commands/increaseHeadingLevel';import { decreaseHeadingLevel } from './commands/decreaseHeadingLevel';import { setHeadingLevel } from './commands/setHeadingLevel';export function activate(context: vscode.ExtensionContext) {context.subscriptions.push(vscode.commands.registerCommand('extension.increaseHeadingLevel', increaseHeadingLevel),vscode.commands.registerCommand('extension.decreaseHeadingLevel', decreaseHeadingLevel),vscode.commands.registerCommand('extension.setHeadingLevel', setHeadingLevel));}export function deactivate {}

下面是 decreaseHeadingLevel.ts 中的逻辑:

import * as vscode from 'vscode';export async function decreaseHeadingLevel {const editor = vscode.window.activeTextEditor;if (!editor) {return;}const document = editor.document;const selection = editor.selection;const selectedText = document.getText(selection);const headingRegex = /^(# )s(.*)$/;const match = selectedText.match(headingRegex);if (!match) {vscode.window.showErrorMessage('Invalid selection. Please select a heading to decrease its level.');return;}const currentLevel = match[1].length;if (currentLevel === 1) {vscode.window.showErrorMessage('Cannot decrease heading level. Already at the lowest level.');return;}const newLevel = currentLevel - 1;const newHeading = '#'.repeat(newLevel) ' ' match[2];await editor.edit((editBuilder) => {editBuilder.replace(selection, newHeading);});}

这段代码检查一个活动的编辑器,如果存在的话,就会获取选定的文本并通过正则表达式寻找一个 markdown 标题。如果找到一个标题,并且当前的标题级别还没有达到最低级别,它就会降低标题级别。

乍一看,这个逻辑没有什么不妥。它执行命令并检查边缘情况。它甚至提供了有用的错误信息,这已经使它领先于大多数人工生成的程序......

测试扩展

为了测试这个扩展,我们需要成功执行以下步骤:

1. 安装依赖项

2. 编译代码

3. 运行扩展

第一步:安装

我们在尝试安装依赖项时遇到了第一个问题:

$ yarnCouldn't find any versions for "vscode-test" that matches "^1.6.2"? Please choose a version of "vscode-test" from this list: (Use arrow keys)❯ 1.6.1

问题 1--找不到 vscode-test

检查 package.json 的结果如下:

{"name": "adjust-heading-level",..."engines": {"vscode": "^1.62.0"},"devDependencies": {"@types/node": "^14.17.0","@types/vscode": "^1.62.0","typescript": "^4.4.2","vscode": "^1.1.37","vscode-test": "^1.6.2"},}

vscode 引擎决定了 vscode 的最低版本。现在的(截至 2023-05-23)引擎版本是 1.78。1.62.0 版本是在 2021 年 10 月 21 日发布的。

这与 GPT-4 的知识截止日期相吻合:

GPT-4 通常缺乏对其绝大部分数据截止日期(2021年9月)之后发生的事件的知识。

1.6.2 的 vscode-test 版本与 1.62 在数字上相差了一个点,这表明 GPT 很可能对这些数字产生了幻觉,出现了错误。

在任何情况下,这很容易解决,只要指定正确的版本号,并重新安装,就可以修复:

- "vscode-test": "^1.6.2" "vscode-test": "^1.6.1"

所以,重新运行安装过程,第二次就成功了。

$ yarn...[3/5]

花粉社群VIP加油站

0
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
Blind(采蜜高手)
文章
522
主题
0
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
猜你喜欢
杭州互联网违法和不良信息举报平台 网络110报警服务 浙ICP备17046585号
0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索