程序员的福音,AI 项目生成 GPT Engineer 实践与源码解析

背景介绍

GPT Engineer 是一个基于需求描述自动生成项目源码的开源项目,主打轻量,灵活生成项目源码,可以在 AI 生成与人工生成之间进行切换,底层是基于 GPT-4 对应的编程能力,目前 Github 上 star 数量已经达到了 50k,算是一个十分火热的 AI 项目。

与大热的 AutoGPT 相比,GPT Engineer 更加轻量,没有使用递归的请求调用,避免陷入反复请求的死循环。同时 GPT Engineer 更加侧重代码生成,因此 prompt 上针对代码生成上做了针对性的优化。

动手实践

使用的 GPT Engineer 版本为 0.1.0,此版本提供的两个能力分别为:

  1. 创建新工程;
  2. 优化已有代码;

安装方式很简单,在 Python 环境下安装所需的依赖,然后配置上 OPANAI_KEY 即可,这部分可以查看 github readme,这边就不进一步介绍了。

创建新工程

使用 GPT Engineer 对研发人员相对简单,直接在工程所需的目录下创建一个 prompt 文件,在此文件上描述项目相关的信息,然后调用 gpt-engineer <project_dir> 即可生成所需的代码。下面选择一个实际的需求验证 GPT Engineer 的能力。

在之前的文章中提到了 DICOM 医疗图像,期望使用医疗图像进行机器学习的训练,因此需要构造基于医疗图像的 dataset。同时期望生成 dataset 时可以从 JSON 格式的标注文件中提取标签。对应需求需要具备处理 DICOM 解析,机器学习 dataset 构造,以及必要的标签解析提取标签的能力,对应的 prompt 如下所示:

期望基于 pytorch 实现支持 DICOM 图像的 dataset 用于深度学习训练,每个图像对应一个同名的 json 文件,其中包含 `label` 字段作为图像训练的标签

这部分只是简单的需求描述,没有做太多 prompt 的优化。最终输出了代码结构如下所示:

请添加图片描述

可以看到输出了对应的代码,并补充了依赖文件 requirements.txt,并增加了相关测试脚本 run.sh 方便进行测试。下面具体看下主要的代码实现:

import os
import json
import pydicom
import torch
from PIL import Image
from torchvision.transforms import ToTensor
from torch.utils.data import Dataset

class DicomDataset(Dataset):
    def __init__(self, image_dir, label_dir):
        self.image_dir = image_dir
        self.label_dir = label_dir
        self.image_files = os.listdir(image_dir)

    def __len__(self):
        return len(self.image_files)

    def __getitem__(self, idx):
        image_file = self.image_files[idx]
        image_path = os.path.join(self.image_dir, image_file)
        label_path = os.path.join(self.label_dir, image_file.replace('.dcm', '.json'))

        # Load DICOM image

        dicom_image = pydicom.dcmread(image_path).pixel_array
        # Convert DICOM image to tensor

        image = ToTensor()(Image.fromarray(dicom_image))

        # Load label

        with open(label_path, 'r') as f:
            label = json.load(f)['l
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易迟

高质量内容创作不易,支持下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值