VSCode中安装GPT插件详细教程+gpt4改进

news2024/12/27 12:17:57

目录

安装插件

A.安装CodeGPT

B.安装chatgpt

1.VSCode安装插件,使用本地下载vsix文件

2.获取 ChatGPT API 密钥

3.配置settings.json

gpt4和3.5对比

GPT-4主要有三大改进点

局限性

安装插件

AB功能一样,A安装的人最多,GPT具体功能可见标题链接

A.安装CodeGPT

B.安装chatgpt

1.VSCode安装插件,使用本地下载vsix文件

2.获取 ChatGPT API 密钥

爬梯子(用美国友好国家的IP(欧美、韩国、日本),

访问https://platform.openai.com/ 登录账号。

登录之后,点击右上角“Personal”,展开菜单,找到“View API keys”

点击“Create new secret key”按钮,来创建API KEY。

之后复制你的key,记住它!!!单个key只会显示一次!

可以创建多个key,但是多个key是共享总的金额。

用key请谨慎,容易造成封号!!!因为每个人的网络IP和运行程序都不一样,有些人的项目容易封号,有些则不容易,原因复杂,请自行负责!

3.配置settings.json

虽然用中文提问,但有时用中文回答,有时用英文。

想让gpt全用中文回答,直接说请用中文回答就行了

  "chatgpt.promptPrefix.optimize": "最大程度的优化以下代码,并告诉我原因,请用中文回答",
  "chatgpt.promptPrefix.findProblems": "查找以下代码会出现的问题以及原因,请用中文回答",
  "chatgpt.promptPrefix.explain": "解释以下代码,请用中文回答",
  "chatgpt.gpt3.apiKey": "sk-xxx",
  "chatgpt.promptPrefix.addComments": "为下面的代码添加中文注释,请用中文回答",
  "chatgpt.promptPrefix.addTests": "测试下面的代码,告诉我问题和解决方法,请用中文回答",
  "chatgpt.promptPrefix.completeCode": "完成以下代码,请用中文回答",
  "chatgpt.gpt3.maxTokens": 2048,

每次回答可能不按代码格式,回答也可能会不一样

 

gpt4和3.5对比

gpt4示例:

gpt3.5免费版示例:

ChatGPT

-------

You

---

pyqt5写一个添加客户详细账单的页面,要求有产品名称类型数量和价格

ChatGPT

-------

好的,下面是一个使用PyQt5编写的添加客户详细账单页面的示例代码。该页面包含产品名称、类型、数量和价格等信息。

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QGridLayout


 

class AddCustomerBill(QWidget):

    def __init__(self):

        super().__init__()

        self.initUI()

    def initUI(self):

        # 设置窗口标题和大小

        self.setWindowTitle('添加客户账单')

        self.setGeometry(300, 300, 350, 200)

        # 创建各个表单控件

        nameLabel = QLabel('产品名称:')

        typeLabel = QLabel('类型:')

        quantityLabel = QLabel('数量:')

        priceLabel = QLabel('价格:')

        self.nameEdit = QLineEdit()

        self.typeEdit = QLineEdit()

        self.quantityEdit = QLineEdit()

        self.priceEdit = QLineEdit()

        # 创建确认按钮,并连接槽函数

        self.addButton = QPushButton('确认')

        self.addButton.clicked.connect(self.addBill)

        # 创建表格布局,并将各个表单控件加入其中

        grid = QGridLayout()

        grid.setSpacing(10)

        grid.addWidget(nameLabel, 1, 0)

        grid.addWidget(self.nameEdit, 1, 1)

        grid.addWidget(typeLabel, 2, 0)

        grid.addWidget(self.typeEdit, 2, 1)

        grid.addWidget(quantityLabel, 3, 0)

        grid.addWidget(self.quantityEdit, 3, 1)

        grid.addWidget(priceLabel, 4, 0)

        grid.addWidget(self.priceEdit, 4, 1)

        grid.addWidget(self.addButton, 5, 1)

        # 将表格布局设置为窗口主布局

        self.setLayout(grid)

    # 添加账单的槽函数,可根据实际需要进行修改

    def addBill(self):

        name = self.nameEdit.text()

        t = self.typeEdit.text()

        quantity = self.quantityEdit.text()

        price = self.priceEdit.text()

        print(f'产品名称:{name}')

        print(f'类型:{t}')

        print(f'数量:{quantity}')

        print(f'价格:{price}')


 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    ex = AddCustomerBill()

    ex.show()

    sys.exit(app.exec_())

```

这个示例代码使用了PyQt5库中的许多常用控件和布局方式。在界面设计时,通过 `QLabel` 和 `QLineEdit` 控件来添加输入框和标签,并对它们进行了位置布局,形成一个简单的表单样式。最后添加了一个确认按钮,通过 `QPushButton` 控件来实现。

在槽函数中,我们只是简单地将文本框中的内容输出到终端,你可以根据实际需求来编写代码来处理账单数据。

You

---

上面的要求要可以同时添加多个

ChatGPT

-------

可以的,您可以使用PyQt5中的QTableWidget组件来实现添加多个客户详细账单信息的页面。

以下是一个简单的Python程序,可以创建具有四列(产品名称,类型,数量和价格)用于添加和显示客户详细账单信息的表格:

```python

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem

class CustomerBillPage(QMainWindow):

    def __init__(self):

        super().__init__()

        # 设置窗口标题

        self.setWindowTitle('添加客户详细账单')

        # 设置表格

        self.table = QTableWidget()

        self.table.setColumnCount(4)

        self.table.setHorizontalHeaderLabels(['产品名称', '类型', '数量', '价格'])

        self.setCentralWidget(self.table)

    # 添加行到表格

    def addRow(self, name, type, quantity, price):

        rowPosition = self.table.rowCount()

        self.table.insertRow(rowPosition)

        self.table.setItem(rowPosition, 0, QTableWidgetItem(name))

        self.table.setItem(rowPosition, 1, QTableWidgetItem(type))

        self.table.setItem(rowPosition, 2, QTableWidgetItem(quantity))

        self.table.setItem(rowPosition, 3, QTableWidgetItem(price))

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = CustomerBillPage()

    window.show()

    sys.exit(app.exec_())

```

这个程序创建了一个仅有一个窗口的GUI,其中包含一个四列的QTableWidget。通过调用`addRow()`方法,可以将新的行添加到表格中。实际上,这个程序仅建立一个基本的框架,你需要根据你的需求来填充自己需要的功能和布局。

You

---

再在上面的功能中加入一个提交按钮

ChatGPT

-------

以下是一个使用PyQt5编写的添加客户详细账单页面,并可以同时添加多个产品,包括产品名称、类型、数量和价格。同时提供“提交”按钮以保存数据。

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit, QPushButton

class AddBillWidget(QWidget):

    def __init__(self):

        super().__init__()

        self.product_count = 1

        # 初始化第一种产品行

        self.product_label_1 = QLabel('产品1')

        self.name_label_1 = QLabel('名称:')

        self.name_edit_1 = QLineEdit()

        self.type_label_1 = QLabel('类型:')

        self.type_edit_1 = QLineEdit()

        self.amount_label_1 = QLabel('数量:')

        self.amount_edit_1 = QLineEdit()

        self.price_label_1 = QLabel('价格:')

        self.price_edit_1 = QLineEdit()

        # 按钮

        self.add_product_btn = QPushButton('+ 添加产品')

        self.submit_btn = QPushButton('提交')

        # 布局

        product_layout_1 = QHBoxLayout()

        product_layout_1.addWidget(self.name_label_1)

        product_layout_1.addWidget(self.name_edit_1)

        product_layout_1.addWidget(self.type_label_1)

        product_layout_1.addWidget(self.type_edit_1)

        product_layout_1.addWidget(self.amount_label_1)

        product_layout_1.addWidget(self.amount_edit_1)

        product_layout_1.addWidget(self.price_label_1)

        product_layout_1.addWidget(self.price_edit_1)

        main_layout = QVBoxLayout()

        main_layout.addWidget(self.product_label_1)

        main_layout.addLayout(product_layout_1)

        main_layout.addWidget(self.add_product_btn)

        main_layout.addWidget(self.submit_btn)

        self.setLayout(main_layout)

        # 信号连接

        self.add_product_btn.clicked.connect(self.add_product_row)

        self.submit_btn.clicked.connect(self.submit_bill)

    def add_product_row(self):

        '''

        添加产品行

        '''

        self.product_count += 1

        product_label = QLabel('产品' + str(self.product_count))

        name_label = QLabel('名称:')

        name_edit = QLineEdit()

        type_label = QLabel('类型:')

        type_edit = QLineEdit()

        amount_label = QLabel('数量:')

        amount_edit = QLineEdit()

        price_label = QLabel('价格:')

        price_edit = QLineEdit()

        product_layout = QHBoxLayout()

        product_layout.addWidget(name_label)

        product_layout.addWidget(name_edit)

        product_layout.addWidget(type_label)

        product_layout.addWidget(type_edit)

        product_layout.addWidget(amount_label)

        product_layout.addWidget(amount_edit)

        product_layout.addWidget(price_label)

        product_layout.addWidget(price_edit)

        self.layout().insertWidget(self.product_count*2-1, product_label)

        self.layout().insertLayout(self.product_count*2, product_layout)

    def submit_bill(self):

        '''

        提交账单

        '''

        for i in range(1, self.product_count+1):

            name = getattr(self, 'name_edit_'+str(i)).text()

            type_ = getattr(self, 'type_edit_'+str(i)).text()

            amount = getattr(self, 'amount_edit_'+str(i)).text()

            price = getattr(self, 'price_edit_'+str(i)).text()

            # 在这里可以将数据保存到数据库或文件中

        # 清空编辑框

        for i in range(1, self.product_count+1):

            getattr(self, 'name_edit_'+str(i)).setText('')

            getattr(self, 'type_edit_'+str(i)).setText('')

            getattr(self, 'amount_edit_'+str(i)).setText('')

            getattr(self, 'price_edit_'+str(i)).setText('')

if __name__ == '__main__':

    app = QApplication(sys.argv)

    add_bill_widget = AddBillWidget()

    add_bill_widget.show()

    sys.exit(app.exec_())

```

使用方式:

*   在命令行中运行以上代码

*   点击“+ 添加产品”按钮即可添加新的产品行

*   填写每个产品的相关信息

*   点击“提交”按钮即可保存数据,此处仅将数据清空

希望这些能帮助到你。

You

---

上面的代码没写完

ChatGPT

-------

好的,我来帮您完成这个代码。

首先安装 PyQt5 库:

```

pip install PyQt5

```

然后,在 Python 中创建一个新的文件,比如 `customer_details.py`。将下面代码复制并粘贴进去:

```python

from PyQt5.QtWidgets import QApplication, QWidget,QGridLayout, QLabel, QLineEdit, QPushButton

class CustomerDetails(QWidget):

    def __init__(self):

        super().__init__()

        # 设置窗口标题和大小

        self.setWindowTitle('添加客户详细账单')

        self.resize(400, 300)

        # 创建表单中的控件

        product_name_label = QLabel('产品名称')

        product_type_label = QLabel('产品类型')

        quantity_label = QLabel('数量')

        price_label = QLabel('价格')

        # 添加多个数据时所需控件

        self.product_name_inputs = []

        self.product_type_inputs = []

        self.quantity_inputs = []

        self.price_inputs = []

        for i in range(3):

            index = i + 1

            product_name_input = QLineEdit()

            product_type_input = QLineEdit()

            quantity_input = QLineEdit()

            price_input = QLineEdit()

            self.product_name_inputs.append(product_name_input)

            self.product_type_inputs.append(product_type_input)

            self.quantity_inputs.append(quantity_input)

            self.price_inputs.append(price_input)

            grid = QGridLayout()

            grid.addWidget(product_name_label, i, 0)

            grid.addWidget(product_name_input, i, 1)

            grid.addWidget(product_type_label, i, 2)

            grid.addWidget(product_type_input, i, 3)

            grid.addWidget(quantity_label, i, 4)

            grid.addWidget(quantity_input, i, 5)

            grid.addWidget(price_input, i, 7)

            grid.addWidget(price_label, i, 6)

            self.setLayout(grid)

        # 添加提交按钮

        submit_button = QPushButton('提交')

        submit_button.clicked.connect(self.submit_data)

        # 创建布局并将控件添加进去

        layout = QVBoxLayout()

        layout.addLayout(grid)

        layout.addWidget(submit_button)

        self.setLayout(layout)


 

    def submit_data(self):

        records = []

        for i in range(3):

            record = {

                'product_name': self.product_name_inputs[i].text(),

                'product_type': self.product_type_inputs[i].text(),

                'quantity': self.quantity_inputs[i].text(),

                'price': self.price_inputs[i].text()

            }

            records.append(record)

        print(records)


 

if __name__ == '__main__':

    # 创建应用程序实例并启动事件循环

    app = QApplication([])

    window = CustomerDetails()

    window.show()

    app.exec_()

```

这个代码定义了一个 `CustomerDetails` 类来显示客户详细账单的表单,并将其放置在网格布局中。用户可以添加多个产品记录,每一个记录都有产品名称,产品类型,数量和价格。

最后,我们在窗口底部加入一个 ‘提交’ 按钮。按钮被点击时,会将表单中填写的所有产品记录打印出来。

您可以运行此代码,并在表单中填写数据,以测试此功能。如有任何疑问,请随时联系我。

GPT-4主要有三大改进点

  1. 更强的创造力,可以按指定风格写歌、创作剧本等;
  2. 新增视觉输入功能,用户可以输入图片;
  3. 解题能力更强
  4. 允许更长的上下文,能够处理的文本超过25000个单词。

gpt4 总体好很多,大多数代码都可以可以用的。刚出来时由于服务不稳定的问题,实际(消耗的时间)效率不一定比3.5好,但现在看VPN VPN稳定就稳定

局限性

问GPT常识性的东西天衣无缝,问高一点的深一点的基本没用。重逻辑的东西现在还不太行的。

GPT4还是只能让人更快的做到他本来就能做到的事情,降本增效,相当于用自然语言搞了一套伪代码

好处就是大体上框架是正确的,不用查文档,不用关心特殊的语法,不用关心API的名字和参数的位置等等

就是需要自己改bug。在自己不熟悉的领域一定要小心使用,谁知道他犯了什么你看不出来的错。半桶水还发现不到他是半桶水

它给的是一个半调子代码~想修好起码得有半桶水的水平~不过已经是大大的解放了~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8s之标签、Node选择器与亲和性详解

文章目录 一、标签1、标签是什么?2、给Pod打标签3、给Node节点打标签4、查看标签资源 二、Node选择器1、nodeName(指定Pod调度到指定Node节点)2、nodeSelector(指定Pod调度到具有指定标签的Node节点) 三、亲和性1、Node亲和性-nodeAffinity2、Pod亲和性-podAffinity…

软件测试项目实战经验附视频以及源码【医疗项目,社区管理,前后端分离项目,银行项目,金融项目,车载项目】

前言: ​​大家好,我是测试小马。 很多初学的测试小白都在烦恼找不到合适的项目去练习,这也是难倒大部分测试小白的一个很常见的问题,项目经验确实是每一个测试非常宝贵的经验!这里小马哥给大家找了一些常用的项目合…

AJ-Captcha验证码使用教程源码解读

1.背景 验证码的主要作用是防止机器人恶意使用我们的程序........ 今天我们结束一款强大的验证码组件:aj-captcha 官方文档:AJ-Captcha在线体验 大家一定要认真阅读官方文档 2.项目启动与快速测试 启动后端: 快速页面测试: 使用浏览器访问这个页面 有修改后端源码的情况…

MySQL触发器Trigger加载以及目前局限

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者: 亮文章来源:GreatSQL社区原创 概念介绍 首先需要知道MySQL中触发器特点,以及表table…

掌握这些技巧,让你的Facebook文案更具说服力!

面对广告瀑布流般的竞争,如何让自己的Facebook广告脱颖而出,吸引到用户的眼球,成为广告运营人员必须思考的问题。在这个过程中,文案的作用是至关重要的。 优秀的文案不仅可以吸引用户点击,还能让用户产生共鸣&#xf…

K8s scheduler 调度:预选和优选策略

1 环境准备 kube-scheduler是k8s的核心组件之一,主要负责Pod的调度。scheduler通过监听kube-apiserver,查询未分配 Node的Pod,根据配置的调度策略,将Pod调度到最优的工作节点上,从而高效、合理地利用k8s集群资源。 在m…

shell之数组

一. 关于数组的命令 1. 定义数组 数组名(value0 value1 value2 …) arr(元素1 元素2 元素3 ...) echo ${arr[]}数组名([0]value [1]value [2]value…" arr ([下标1]值1 [下标2]值2 ....) echo ${array3[]}列表名"value0 value1 value2 list"值1 值2 值3 ..…

一文解读spring中事务管理

目录 声明式事务概念 事务基本概念 ①什么是事务 ②事务的特性 编程式事务 声明式事务 基于注解的声明式事务 准备工作 测试无事务情况 加入事务 Transactional的使用 事务属性:只读 事务属性:超时 事务属性:回滚策略 事务属性…

华为OD机试真题 Java 实现【寻找链表的中间结点】【2023Q1 100分】

一、题目描述 给定一个单链表 L,请编写程序输出 L中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。 例如: 给定 L 为 1 -> 7 -> 5,则输出应该为 7; 给定 L 为 1 -> 2 -> 3 -> 4&#…

微服务简介,SpringCloud Alibaba Nacos的安装部署与使用,Nacos集成springboot实现服务注册

目录 一.认识微服务 1.0.学习目标 1.1.单体架构 单体架构的优缺点如下: 1.2.分布式架构 分布式架构的优缺点: 1.3.微服务 微服务的架构特征: 1.4.SpringCloud 1.5Nacos注册中心 1.6.总结 二、Nacos基本使用安装部署服务注册 &am…

聊一聊适配器模式

接口不能用?行,我帮你适配 一、概述 适配器模式(Adapter),是23种设计模式中的结构型模式之一;它就像我们电脑上接口不够时,需要用到的拓展坞,起到转接的作用。它可以将新的功能和原…

SCS【26】单细胞细胞间通信第二部分通信网络的系统分析(CellChat)

桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程,目前整理出来的相关教程目录如下: Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅,述说单细胞测序的前世…

《微服务实战》 第十一章 Spring Cloud Alibaba nacos配置中心

前言 Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。 Spring Cloud Aliba…

【C++ 入坑指南】(08)循环

文章目录 一、while 循环二、do...while 循环三、for 循环四、嵌套循环五、跳转语句5.1 break 语句5.2 continue 语句5.3 goto 语句 有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行&#xff0c…

c++ 11标准模板(STL) std::set(五)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…

Java中的线程通信的几种方式

Java中的线程间通信是指不同线程之间相互协作&#xff0c;以完成一些复杂的任务或实现某些功能的过程。线程间通信主要包括两个方面&#xff1a;线程之间的互斥和同步&#xff0c;以及线程之间的数据共享和通信。Java提供了多种方式来实现线程间通信&#xff0c;本文将介绍Java…

Java | 一分钟掌握定时任务 | 5 - Spring Task

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱原创&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 多线程解决了并发阻塞问题&#xff0c;但是不能方便的表达我们的定时方…

redi可持久化配置

回顾&#xff1a;rpcbind111 nfs2049 redis高可用高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%&#xff0c;99.99%&#xff0c;99.999%等&#xff09; 还要考虑提供主从分离&#xff0c;快速容灾技术&#…

用netty实现聊天

1.引入netty依赖 <dependencies> <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.92.Final</version> </dependency> </dependencies> 2.准备一个服务端ChatServer和…

Redis优化与常见问题

---------------------- Redis 命令工具 ---------------------------------------- redis-server&#xff1a;用于启动 Redis 的工具 redis-benchmark&#xff1a;用于检测 Redis 在本机的运行效率 redis-check-aof&#xff1a;修复 AOF 持久化文件 redis-check-rdb&#xff1…