我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

这篇具有很好参考价值的文章主要介绍了我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求产生

前两天在工作过程中又遇到了一直以来困惑我的一个问题,就是Go配置项的管理问题。

在开发一个新项目的时候,往往涉及到配置项的管理。个人小项目可能会通过配置文件来传入、环境变量来传入,也可能通过命令行参数来传入,公司级别的项目还可能用到各种各样的config center。那么,如何来管理这些配置项就会很麻烦。

在我的习惯中,通常会使用至少两种方式来传入配置——如配置文件加命令行。原因有三:

  • 大部分情况下我运行的程序无需进行定制化,此时常使用默认配置文件。但有时候我们要临时修改一些选项,可以直接通过命令行参数传入覆盖默认配置

  • 我通常会将默认配置文件直接添加到Git仓库里,但其中有部分包含敏感信息的配置(如加密密钥),我需要通过其他方式传入,如环境变量、命令行等

  • 程序如果需要同时在测试环境和生产环境运行,我可以通过命令行选项来控制一些选项,而无需准备两个不同的配置文件

以往在命令行覆盖配置文件中配置项的时候,有一个很大的痛点就是,我不可能给每一个配置项都编写一个对应的命令行参数,而且随着项目的迭代,每次添加新的配置项都要添加对应的命令行参数,不太方便。

Go生态里有一个开源项目viper可以用于处理类似的问题,但是项目比较大,和pflagcobra的耦合也比较深。

其实我需要的功能很简单,一个类似Java -Dserver.port=8000中的-D这样的选项,让我可以动态的修改配置文件中的一些配置项。这样,不管配置来自哪里,里面有哪些字段,我都可以通过-Da.b.c=1这样的方式来修改。

ChatGPT辅助开发

按照我的这个痛点,我准备开发一个库,这个库的工作很简单,就是可以使用一定的语法,获取和设置任意对象中的属性。

比如,下面这个YAML对应的对象(这实际上是一个docker-compose.yml的配置文件):

version: "2.0"
services:
  web:
    image: openjdk:8-jre
    ports:
      - "8080:8080"
      - "8081:8081"

我要将web容器的镜像由openjdk:8-jre换成openjdk:8-jdk,可以编写这样的语句:services.web.image=openjdk:8-jdk;如果我想将8080端口修改成9090,则可以编写这样的语句:services.web.ports[0]=9090:8080

这并不是一个非常困难的项目,但作为一个尊贵的ChatGPT Plus会员,我想让GPT4辅助我完成这个项目代码的编写。

首先,我们需要将自己的需求清晰地描述给ChatGPT,比如,我将我的需求抽象成一个名为SetAttr的函数,并将这个函数的作用和例子发给它:

我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

ChatGPT返回给我的函数,看起来大致没有什么问题。接着,我还让其帮忙生成了与SetAttr对应的GetAttr函数,由于前面已经生成过SetAttr,所以对于GetAttr函数的描述可以比较简单,GPT4具有一定逻辑思考能力:

我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

这两个函数的代码主体上没有什么问题,但细节是否能完全满足我们的需求,还需要编写单元测试来验证。

我这里的建议是,如果代码由GPT生成,那么单元测试需要我们人工来编写;如果代码是我们人工编写,那么单元测试可以让GPT生成。人工编写的过程中,可以让GPT来生成一些辅助片段加快我们工作效率,但最好不要把这两部分全部都交给GPT来实现,否则很可能在它那里是逻辑自洽的,但实际上有很多情况没有被考虑,需要大量修改。

最后,我投入了一些时间在单元测试的编写上,处理了一些panic,让项目可以适应大部分情况。

项目取名与开源

完成了代码开发,我们可以让ChatGPT帮忙生成一下README:

我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

这就是我第一个使用ChatGPT辅助生成的完整项目。ChatGPT的工作大概70%,我的工作大概30%,相比于正常实现一个类似的项目,我大概节省了50%时间。

我的贡献除了编写部分单元测试,我还优化了API,让其更方便被使用,用可以直接通过这样的方式来设置config对象的任意属性:

goattribute.New(&config).SetAttr("Services.Web.Ports[0]", "9090:8080")

有这样一个库,我就可以比较方便地实现文章开头的需求了——从命令行获取-D参数的值后,使用=将其分割成键名和值,键名作为SetAttr的第一个参数,值作为SetAttr的第二个参数即可。

完整代码已经发布在https://github.com/phith0n/goattribute,如果你与我有相似需求,可以考虑使用这个库来优化你的配置管理流程。当然,goattribute并不仅限于我上面说到的场景,也可以用于操纵任意对象的值。

我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

封面图片由MidJourney生成。喜欢这篇文章,点个在看再走吧~文章来源地址https://www.toymoban.com/news/detail-434997.html

到了这里,关于我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于开源的 ChatGPT Web UI 项目,快速构建属于自己的 ChatGPT 站点

    作为一个技术博主,了不起比较喜欢各种折腾,之前给大家介绍过 ChatGPT 接入微信,钉钉和知识星球(如果没看过的可以翻翻前面的文章),最近再看开源项目的时候,发现了一个 ChatGPT Web UI 项目。 想着刚好之前没有将 ChatGPT 接入过 Web UI ,有了这个开源项目可以拿来使用,

    2023年04月10日
    浏览(45)
  • 一个令人惊艳的ChatGPT项目,开源了!

    最近在GitHub上发现了一个爆火的开源项目。 好家伙,凑近一看,居然还是 由微软开源 ,并且和最近炙手可热的 ChatGPT息息相关 。 项目的名字叫做: Visual ChatGPT 。 https://github.com/microsoft/visual-chatgpt 这个项目最早是3月上旬微软开源的,项目宣布开源后仅用了短短一周,就斩获

    2023年04月08日
    浏览(38)
  • 好家伙,这个开源项目硬生生复制了一个 ChatGPT Plus 出来

    最近有一款聊天机器人框架 Lobe Chat 火出了天际,它不仅支持多模态,支持语音会话,还有一个强大的 Function Calling 插件生态系统(可以作为 ChatGPT 插件的平替)。最重要的是,它的 UI 很漂亮,一看就是小姐姐精心设计过的~ 连 Vercel 的 CEO 都给它点赞了: 项目地址:https://

    2024年02月04日
    浏览(34)
  • 【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】

    界面的实现使用了一张png图片,图片直接使用PS制作一张即可,资源下载可以查看易售小程序我的界面上方背景 将图片放到项目的静态资源文件夹下面 使用下方的代码来设置页面的背景图片 要想实现元素悬浮在背景图片上面的感觉,只需要修改一下元素的透明度即可,如下

    2024年02月09日
    浏览(56)
  • 用go设计开发一个自己的轻量级登录库/框架吧(项目维护篇)

    本篇将开始讲讲开发库/框架的最开始阶段,也就是搭建一个项目 源码:weloe/token-go: a light login library (github.com) 项目结构,不是上一篇所说的代码架构,而是分包,明确的分包更有助于我们的开发。本框架分包如下 我们选择使用GitHub进行代码托管,同时也使用GitHub Actions进行

    2024年02月03日
    浏览(51)
  • 本地构建自己的chatgpt已成为可能,国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持普通在笔记上运行chatgpt

    国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持,普通在笔记上运行chatgpt。下面是他们分享的:收集到的数据、数据管理程序、训练代码和最终模型,以促进开放研究和可重复性。 在 2023 年 3 月 20 日至 2023 年 3 月 26 日期间,该团队使用 GPT

    2023年04月21日
    浏览(67)
  • 推荐一个.Ner Core开发的配置中心开源项目

    当你把单体应用改造为微服务架构,相应的配置文件,也会被分割,被分散到各个节点。这个时候就会产生一个问题,配置信息是分散的、冗余的,变成不好维护管理。这个时候我们就需要把配置信息独立出来,成立一个配置中心。 这是一个基于.Net Core开发的,轻量级配置中

    2024年02月04日
    浏览(54)
  • 推荐一个.Net Core开发的Websocket群聊、私聊的开源项目

    今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件,可用于群聊、好友聊天、游戏直播等场景。 这是一个基于.Net Core开发的、简单、高性能的通讯组件,支持点对点发送、群聊、在线状态的订阅。 该项目还包含群聊例子,可以用于学习。 1、跨平台:基于.N

    2024年02月03日
    浏览(57)
  • 【ChatGPT 指令大全】怎么使用ChatGPT辅助程式开发

    目录 写程式 解读程式码 重构程式码 解 bug 写测试 写 Regex 总结 在当今快节奏的数字化世界中,程式开发变得越来越重要和普遍。无论是开发应用程序、网站还是其他软件,程式开发的需求都在不断增长。然而,有时候我们可能会遇到各种问题,影响我们的工作进度,如果使

    2024年02月13日
    浏览(44)
  • GPT-4发布!能打败ChatGPT的只有OpenAI自己!

    众所周知,chatGPT的对话生成模型用的是GPT3.5,而今发布的GPT4相比GPT3,又有了巨大的升级: 输入仅文本 = 输入文本和图像,具备了强大的识图能力 文字输入限制3k字 = 2.5w字 准确率、对细节的理解能力大幅提升 openai也对GPT4的能力做了一系列测试,发现GPT-4 在各种专业测试和

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包