ChatGPT与软件架构(1) - 快速原型

通过ChatGPT生成设计和原型代码,可以帮助团队快速启动项目,验证想法,提高效率。原文: ChatGPT and Software Architecture

Surfing Croyde Bay @Unsplash
Surfing Croyde Bay @Unsplash

OpenAI的ChatGPT现在越来越火,出现了各种有趣用例。

从许多方面来看,ChatGPT都可以看作是AI赋能的架构师白板,除了画画线条和框框,还可以有许多用途。我在本文中将演示如何基于ChatGPT启动软件架构流程。

就像在白板上画画一样,过程会有点混乱,各种因素相互作用会导致不得不通过不断修改来找到最佳答案。本文旨在演示成功使用ChatGPT的一些提问技巧,这些技巧产生了真正有价值的结果。

需要注意,ChatGPT仍在学习中,所以不要对一致性有太大期望,多次问同样的问题可能会得到不同的结果。

设置ChatGPT帐户很简单,可以按照官方文档完成: https://openai.com/blog/chatgpt/

用户故事

我们从要求ChatGPT写用户故事开始。

alt

写一个用户故事,测量员登录到系统,输入地理空间坐标、建筑、建筑类型和特征信息,这是他们一天中要进行的许多调查中的一个

如你所见,这是个特定行业的用户故事。ChatGPT拥有庞大的知识库,需要通过实验来了解ChatGPT的知识深度,即它知道些什么?

第一个问题的关键是要对关键细节非常明确,以获得最佳结果。这样,ChatGPT可以响应一组体面的结果,如下所示:

alt

如果获得的结果与上述类似,那就意味着ChatGPT已经找到了线索,并将根据进一步提出的问题进行构建。要记住的关键是,以下所有结果都将基于这个初始上下文,因此值得花时间定义第一个交互。

现在可以做些非常了不起的事情,构建数据库!

构建数据库

alt

在markdown中以表格格式详细生成数据模型

ChatGPT是这样回应的:

alt

不止如此,我们继续…

alt

生成SQL

CREATE TABLE Surveyors (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(255NOT NULL,
    email VARCHAR(255NOT NULL,
    password VARCHAR(255NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE Buildings (
    id INT NOT NULL AUTO_INCREMENT,
    type_id INT NOT NULL,
    coordinates VARCHAR(255NOT NULL,
    notes TEXT,
    surveyor_id INT NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (type_id) REFERENCES BuildingTypes(id),
    FOREIGN KEY (surveyor_id) REFERENCES Surveyors(id)
);

CREATE TABLE BuildingTypes (
    id INT NOT NULL AUTO_INCREMENT,
    type VARCHAR(255NOT NULL,
    PRIMARY KEY (id)
);

ChatGPT输出了完全可用的SQL,可以顺利创建SQL数据库。不止如此……

创建类图
alt
<script src="https://cdn.jsdelivr.net/npm/mermaid@8.6.0/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});</script>

<div class="mermaid">
    classDiagram
    class Surveyors {
        +id: int
        +name: string
        +email: string
        +password: string
    }
    class Buildings {
        +id: int
        +type_id: int
        +coordinates: string
        +notes: string
        +surveyor_id: int
    }
    class BuildingTypes {
        +id: int
        +type: string
    }
    Surveyors --> Buildings
    Buildings --> BuildingTypes
</div>

ChatGPT生成的类图如下所示…

alt

ChatGPT真是让人惊喜:

alt
alt

ChatGPT没法显示图表,但可以生成能够创建图表的Mermaid代码。ChatGPT非常熟悉Mermaid脚本,可以生成这种脚本语言支持的图表。

由此可见,ChatGPT已经学会了编码,可以继续要求ChatGPT编写JavaScript、CSS和HTML,通过简单的请求将原型组合在一起。ChatGPT经过训练,可以用许多流行的编程语言生成代码。

如果有足够的时间,每个有经验的人都可以做到,只不过速度要慢一些。但这不是生产代码,要使代码达到生产质量和可用性水平,还需要做更多工作。不过ChatGPT已经很让人惊艳了。

我们尝试用ChatGPT来提高代码质量:

alt

生成遵循C#实践原则的类设计,包含错误处理和数据库访问层

ChatGPT的响应:

public class Surveyor
{
    private readonly string _name;
    private readonly string _email;
    private readonly List<ISurvey> _surveys;
    private readonly IDatabaseAccess _databaseAccess;

    public Surveyor(string name, string email, IDatabaseAccess databaseAccess)
    {
        _name = name;
        _email = email;
        _databaseAccess = databaseAccess;
        _surveys = new List<ISurvey>();
    }

    public void AddSurvey(ISurvey survey)
    {
        try
        {
            _surveys.Add(survey);
            _databaseAccess.SaveSurvey(survey);
        }
        catch (Exception ex)
        {
            // Log the error
        }
    }

    public void RemoveSurvey(ISurvey survey)
    {
        try
        {
            _surveys.Remove(survey);
            _databaseAccess.DeleteSurvey(survey);
        }
        catch (Exception ex)
        {
            // Log the error
        }
    }

    public List<ISurvey> GetSurveys()
    {
        try
        {
            return _databaseAccess.GetSurveys();
        }
        catch (Exception ex)
        {
            // Log the error
            return new List<ISurvey>();
        }
    }
}

public interface IDatabaseAccess
{
    void SaveSurvey(ISurvey survey);
    void DeleteSurvey(ISurvey survey);
    List<ISurvey> GetSurveys();
}

public class DatabaseAccess : IDatabaseAccess
{
    public void SaveSurvey(ISurvey survey)
    {
        // Implementation for saving the survey to a database
    }

    public void DeleteSurvey(ISurvey survey)
    {
        // Implementation for deleting the survey from the database
    }

    public List<ISurvey> GetSurveys()
    {
        // Implementation for retrieving a list of surveys from the database
    }
}

public interface ISurvey
{
    decimal Latitude { getset; }
    decimal Longitude { getset; }
    string BuildingType { getset; }
    Dictionary<stringstring> BuildingCharacteristics { getset; }
}

public class Survey : ISurvey
{
    public decimal Latitude { getset; }
    public decimal Longitude { getset; }
    public string BuildingType { getset; }
    public Dictionary<stringstring> BuildingCharacteristics { getset; }

    public Survey(decimal latitude, decimal longitude, string buildingType, Dictionary<stringstring> buildingCharacteristics)
    {
        Latitude = latitude;
        Longitude = longitude;
        BuildingType = buildingType;
        BuildingCharacteristics = buildingCharacteristics;
    }
}

作为一组脚手架类,非常不错了。

接下来让ChatGPT为RESP API创建Swagger,ChatGPT再次返回了足以启动开发的不错成果。

alt
结论

ChatGPT功能广泛,可以帮助启动开发,但还无法实现比较深度的工作。每个回合都必须靠人来激发ChatGPT完成任务,缺乏主动性,需要有人发起并推动接下来的步骤。

不过可以开发一组标准问题,促使ChatGPT提供好的结果,也许足以帮助团队以多种方式开始开发。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。微信公众号:DeepNoMind

- END -

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做大模型时代的「Linux」, ChatGPT 仅是开端

大模型只是中间状态&#xff0c;开源的大模型技术生态才是未来。 来源&#xff1a;AI科技评论 作者&#xff1a;李梅 编辑&#xff1a;岑峰 一代人的时间里总会有几次这样的时刻&#xff1a;一种产品的出现将一项技术从昏暗的工程系地下室、臭气熏天的书呆子们的卧室和业余爱好…

chatgpt赋能python:将Python官网页面切换为中文的SEO优化指南

将Python官网页面切换为中文的SEO优化指南 介绍 在当今数字化时代&#xff0c;为了吸引更多全球用户们的关注&#xff0c;网站所有者们都会将自己的网站翻译成多种语言&#xff0c;Python官网也不例外。本文将会为您详细介绍如何将Python官网页面切换为中文&#xff0c;从而提…

【新手】使用itchat,玩微信自动回复和发送信息给指定联系人

【新手】使用itchat&#xff0c;玩微信自动回复和发送信息给指定联系人 # 写在开头&#xff1a;愿我们都能尘垢不沾俗相不染 编译器&#xff1a;pycharm2019.3 课前简介&#xff1a; itchat是一个开源的微信个人号接口&#xff0c;使用python调用微信从未如此简单。 使用不到…

微信自动回复(python)

前言&#xff1a; 自从微信禁止网页版登陆之后&#xff0c;itchat 库也就都不能用了&#xff0c;新号不能再登录网页版&#xff0c;而且itchat 库在headers里面只放了UserAgent&#xff0c;其他字段都没有放。所以在你登录的瞬间&#xff0c;微信就已经知道你这个账号没有用浏…

代理平台kb-proxy:注册与登录【三】

代理平台介绍 代理工具繁杂&#xff0c;究竟应该选择哪个&#xff1f; 接口测试录入繁复&#xff0c;到底怎么才能简化&#xff1f; mock服务看似美妙&#xff0c;但搭建和使用从来就不那么美好&#xff1f; 今天&#xff0c;给大家推荐一个工具&#xff1a;kb-proxy 一次搭建…

登录之手机号验证码登录

今天测试云之讯api 云之讯官网提供源码只需要修改就好 我的是放入tp5路径如下&#xff1a;前端代码脑补 只有一个input和按钮 直接上代码 index.php <?php namespace app\admin\controller; use think\Db; use think\Loader; use think\Controller; use app\admin\contr…

点击链接跳转到微信公众号关注页、微信关注链接

感觉现在微信又更新了&#xff0c;原来 好好的方法不给用了&#xff0c;可能是微信一直在禁用通过外部链接引导到关注页的举动&#xff0c;不支持。通过重定向跳转至全部消息列表页&#xff0c;关注按钮一闪而过&#xff0c;然后消失了。。。暂时没有好的解决方案。 所以以下文…

实现微信公众号跳转登录外部链接

提示&#xff1a;微信公众平台开发文档&#xff1a;​​​​​​微信公众平台开发概述 | 微信开放文档 (qq.com)​​​​​​ 目录 前言 一、通过与菜单栏产生交互事件 &#xff0c;返回需要跳转的url图文信息 二、使用微信的网页授权机制 1.静默授权和非静默授权 2.静默授权和…

通过链接打开公众号的方法

业务场景&#xff1a; 用户在完成某些业务后&#xff0c;可以快的跳转到公众号,引导客户关注 步骤&#xff1a; 1.在电脑上打开公众号->公众号主页 2.公众号查看历史消息&#xff0c;右键用默认浏览器打开 3.取出链接中的__biz参数 4.最后一步&#xff1a;将第3步…

Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching 论文精读

Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching 论文链接&#xff1a;[2305.13310] Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching (arxiv.org) 代码链接&#xff1a;aim-uofa/Matcher: Matcher: Segment Anyt…

从GPT到ChatGPT:我们离那个理想的AI时代到底还有多远?

写在前面 在2023年新年伊始&#xff0c;科技界最为爆火一款产品无疑是OpenAI公司出品的ChatGPT了&#xff0c;作为一名NLP领域从业者&#xff0c;似乎也好久没有看到如此热闹的技术出圈场景了。诚然从现象来看&#xff0c;无论从效果惊艳度、社会效应、商业价值、科技发展方向…

论文精读:Ansor: Generating High-Performance Tensor Programs for Deep Learning

文章目录 1. Abstract2. Introduction3. Background4. Design Overview5. Program Sampling5.1 Sketch Generation5.2 Random Annotation 6. Performance Fine-tuning6.1 Evolutionary Search6.2 Learned Cost Model 7. Task Scheduler7.1 Problem Formulation7.2 Optimizing w…

研0开始如何读论文

1. 学习别人的方法 论文导读&#xff1a;如何快速掌握一个新的科研方向&#xff1f;一个新手应该怎么读论文&#xff1f; - 知乎 论文导读&#xff1a;如何高效读论文&#xff1f; (zhihu.com) 吴恩达&#xff1a;关于机器学习职业生涯以及阅读论文的一些建议https://www.yo…

论文阅读辅助利器-Zotero-GPT

前言 首先&#xff0c;什么是Zotero&#xff1f;它能做什么&#xff1f;我们来问下ChatGPT Zotero是一款开源的、免费的文献管理工具。它旨在帮助研究人员、学生和学术界的人们更好地管理和组织他们的研究文献、引用和参考资料。 Zotero 支持Windows、MacOS、Linux、iOS等多个…

GLM-130B-一个开放的双语通用预训练模型-论文精读

本文为作为类ChatGPT的模型ChatGLM的前期基础论文2《AN OPEN BILINGUAL PRE-TRAINED MODEL》的精读笔记&#xff0c;基础论文1的精读笔记请见《GLM论文精读-自回归填空的通用语言模型》。希望对大家有帮助&#xff0c;欢迎讨论交流。GLM-130B&#xff0c;主要思想概述&#xff…

【跟李牧学AI】 ChatGPT是什么?--先看看InstructGPT

最近OpenAI公司的ChatGPT非常火爆&#xff0c;虽然正式的论文还没有发布&#xff0c;但是按照OpenAI一贯的工作思路&#xff0c;基于前期工作进行相应的改造&#xff0c;我们可以跟着沐神一起来看看InstructGPT&#xff0c;也算法对了解ChatGPT有个前期的知识储备。 instructG…

李沐论文精度系列之十:GPT-4

文章目录 一、AIGC资讯速览1.1 Toolformer&#xff08;2023.2.9&#xff09;1.2 ChatGPT plugin1.3 LLaMA&#xff08;2023.2.24&#xff09;1.4 Visual ChatGPT&#xff08;2023.3.8&#xff09;1.5 GigaGAN&#xff08;2023.3.9&#xff09;1.6 Stanford Alpaca&#xff08;2…

ViT论文逐段精读【论文精读】-跟李沐学AI

视频链接&#xff1a;ViT论文逐段精读【论文精读】_哔哩哔哩_bilibili ViT&#xff1a;过去一年&#xff0c;CV 最有影响力的工作 推翻了 2012 Alexnet 提出的 CNN 在 CV 的统治地位 有足够多的预训练数据&#xff0c;NLP 的 Transformer 搬运到 CV&#xff0c;效果很好 打…

血条加载!百度地图上线复苏指数;Quora推出问答机器人;腾讯绝悟成功用于医疗诊断;使用chatGPT生成推文;GitHub AI项目精选 | ShowMeAI资讯日报

&#x1f440;日报合辑 | &#x1f3a1;AI应用与工具大全 | &#x1f514;公众号资料下载 | &#x1f369;韩信子 &#x1f4e2; 『百度地图 复苏指数』用大数据吹起人间烟火 随着疫情防控措施的调整优化&#xff0c;市民的出行和消费需求逐步回暖&#xff0c;各大城市日渐复…

火爆全网的[ChatGPT] ai studio可以玩啦

☆ 只需两步&#xff0c; Ai Studio上也可以玩[ChatGPT]了 ☆ 无需账号即可体验喽~ 【一定要选择最新版本的项目嗷&#xff01;官方接口更新太快&#xff01;】 据说诱导式可以得到匪夷所思的结果&#xff01; 图源网络&#xff0c;仅供娱乐 0 Fork后进入项目 应用中心体验…