使用GPT-4生成QT代码

Posted Jason~shen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用GPT-4生成QT代码相关的知识,希望对你有一定的参考价值。

一、概述

最近ChatGPT火爆起来了,ChatGPT是一种基于GPT的自然语言处理模型,可以用于生成自然语言文本,例如对话、文章等。最近又发现了一个优秀且免费的代码生成工具Cursor.so ,Cursor.so集成了 GPT-4 ,可以帮助你快速编写、编辑和讨论代码。它支持多种编程语言,如 C/C++、Python, JS 等,可以根据你的输入自动生成代码片段。我尝试了一下,发现它可以理解QT代码,因此记录分享一下,以后可以用来当代码助手。

二、下载安装

官网:https://www.cursor.so/

三、自动生成QT代码

使用方法:新建一个main.cpp文件,按下Ctrl+k,将出现一个输入框,输入文字即可

比如输入, qt 读取摄像头并保存图片,将生成一下代码

#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QVBoxLayout>
#include <QPushButton>
#include <QFileDialog>

class CameraWidget : public QWidget

    Q_OBJECT

public:
    CameraWidget(QWidget *parent = nullptr);

private slots:
    void captureImage();
    void displayImage(int, QImage);
    void saveImage();

private:
    QCamera *m_camera;
    QCameraViewfinder *m_cameraViewfinder;
    QCameraImageCapture *m_cameraImageCapture;
    QVBoxLayout *m_layout;
    QPushButton *m_captureButton;
    QPushButton *m_saveButton;
    QImage m_capturedImage;
;

CameraWidget::CameraWidget(QWidget *parent)
    : QWidget(parent)

    m_camera = new QCamera(this);
    m_cameraViewfinder = new QCameraViewfinder(this);
    m_cameraImageCapture = new QCameraImageCapture(m_camera, this);

    m_layout = new QVBoxLayout(this);
    m_layout->addWidget(m_cameraViewfinder);

    m_captureButton = new QPushButton(tr("Capture"), this);
    connect(m_captureButton, &QPushButton::clicked, this, &CameraWidget::captureImage);
    m_layout->addWidget(m_captureButton);

    m_saveButton = new QPushButton(tr("Save"), this);
    m_saveButton->setEnabled(false);
    connect(m_saveButton, &QPushButton::clicked, this, &CameraWidget::saveImage);
    m_layout->addWidget(m_saveButton);

    m_camera->setViewfinder(m_cameraViewfinder);
    m_camera->start();


void CameraWidget::captureImage()

    m_cameraImageCapture->capture();


void CameraWidget::displayImage(int, QImage image)

    m_capturedImage = image;
    m_saveButton->setEnabled(true);


void CameraWidget::saveImage()

    QString fileName = QFileDialog::getSaveFileName(this, tr("Save Image"), "", tr("JPEG (*.jpg *.jpeg);;PNG (*.png)"));

    if (!fileName.isEmpty()) 
        m_capturedImage.save(fileName);
    


int main(int argc, char *argv[])

    QApplication a(argc, argv);

    CameraWidget w;
    w.show();

    return a.exec();


#include "main.moc"

复制代码到qt工程中是可以正常运行的,效果还不错

接下来接着测试

输入:qt自定义按钮控件并设置背景颜色为黑色,将自动生成一下代码,发现并没有完全理解我的意思

然后我将上面文字拆分2句话输入,发现可以正确理解,代码也正确

输入:qt自定义按钮控件

选中button遍历,再输入:设置背景颜色为黑色

接下来可以讨论代码,将鼠标选中setStyleSheet,输入:该代码的作用

回答如下:

这段代码的作用是将按钮的背景颜色设置为黑色。在这个例子中,我们创建了一个自定义按钮类MyButton,并在主函数中创建了一个MyButton对象button。然后,我们使用setStyleSheet函数将按钮的背景颜色设置为黑色。最后,我们显示窗口并启动应用程序事件循环。

如何更改 gpt-2 代码以使用 Tensorflow 2.0?

【中文标题】如何更改 gpt-2 代码以使用 Tensorflow 2.0?【英文标题】:How to alter gpt-2 code to work with Tensorflow 2.0? 【发布时间】:2020-11-30 15:25:43 【问题描述】:

我正在尝试使用 gpt-2 生成文本。即使在运行 Tensorflow 2.0 code upgrade script 之后,我也会遇到兼容性错误。

我遵循的步骤:

    克隆repo

    从这里开始,按照 DEVELOPERS.md 中的说明进行操作

    在 /src 中的文件上运行 upgrade script

    在终端运行:sudo docker build --tag gpt-2 -f Dockerfile.gpu .

    构建完成后,运行:sudo docker run --runtime=nvidia -it gpt-2 bash

    输入python3 src/generate_unconditional_samples.py | tee /tmp/samples

    获取此回溯:

    Traceback (most recent call last):
    File "src/generate_unconditional_samples.py", line 9, in <module>  
    import model, sample, encoder
    File "/gpt-2/src/model.py", line 4, in <module>
    from tensorboard.plugins.hparams.api import HParam
    ImportError: No module named 'tensorboard.plugins.hparams'
    root@f8bdde043f91:/gpt-2# python3 src/generate_unconditional_samples.py | tee 
    /tmp/samples
    Traceback (most recent call last):
    File "src/generate_unconditional_samples.py", line 9, in <module>
    import model, sample, encoder
    File "/gpt-2/src/model.py", line 4, in <module>
    from tensorboard.plugins.hparams.api import HParam
    ImportError: No module named 'tensorboard.plugins.hparams'```
    
    

HParams 似乎已被弃用,Tensorflow 2.0 中的新版本称为HParam。但是,参数不同。在model.py 中,params 实例化如下:

def default_hparams():
return HParams(
    n_vocab=0,
    n_ctx=1024,
    n_embd=768,
    n_head=12,
    n_layer=12,
)

似乎没有任何 1:1 转换为 Tensorflow 2.0。有谁知道如何让 gpt-2 与 Tensorflow 2.0 一起工作?

我的 GPU 是 NVIDIA 20xx。

谢谢。

【问题讨论】:

【参考方案1】:

如果你想看看我的 1.x 分支,它就在这里,正在编译: https://github.com/timschott/gpt-2

【讨论】:

【参考方案2】:

我遇到了同样的问题,但通过在文件夹中创建一个单独的 hparams.py 文件并使用此处的内容填充它来解决它:https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/utils/hparam.py

然后在你的 model.py 中你可以添加以下代码并换掉它:

import tensorflow as tf
from tensorflow.contrib.training import HParams

用这个:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from hparams import HParams

然后你将不得不在“tf”和模块之间添加“compat.v1”(如果这就是它的名字)......例如,如果它是“tf.Session”,请将其更改为“tf.compat.v1 .Session”或者如果是“tf.placeholder”,则改为“tf.compat.v1.placeholder”等

我在尝试降级到 tensorflow-gpu 1.13 后执行此操作,但 gpt-2 仍然无法正常工作。在 3.6 版本的 Python 中运行环境也是如此。

附:这是我的第一个答案,不确定我的格式是否正确,但我也会学习。

【讨论】:

这会让你有一段距离,但更进一步我仍然以AttributeError: 'HParams' object has no attribute 'encoder_type'结束【参考方案3】:

自动升级代码很少开箱即用。对于那个 repo,你应该使用 Tensorflow=1.15 最大值。

如果你真的想要Tensorflow=2,你可以看看这个repo:https://github.com/akanyaani/gpt-2-tensorflow2.0

注意:您不会得到预训练的模型(对于普通用户来说,这可能是 gpt2 中最有趣的部分)。意味着无法访问他们的 1554M 或 778M 型号。

我知道没有任何方法可以自动将预训练模型从 1.15 升级到 2.3 或诸如此类。

【讨论】:

以上是关于使用GPT-4生成QT代码的主要内容,如果未能解决你的问题,请参考以下文章

全网最详细中英文ChatGPT-GPT-4示例文档-类比语句智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

全网最详细中英文ChatGPT-GPT-4示例文档-步骤指示智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

ChatGPT可以做WebRTC音视频质量性能优化,惊艳到我了

三大维度拆解ChatGPT/GPT-4!让巨头们兴奋的技术真相附下载

GPT-4 和ChatGPT API的定价分析