用ChatGPT,绘制一个账号系统的C4架构图

hi,我是熵减,见字如面。

昨天我们用ChatGPT来设计一个账号系统,并尝试输出:模型表,类关系图,序列图,状态图等常用的架构设计中常用的元素。

今天,我们继续向更高层级延伸一下,看ChatGPT能不能更进一步释放工程师的生产力,创造更多的可能性。

所以,这次我们就来尝试用ChatGPT,来构建账号系统的C4模型的架构图啦。

由于ChatGPT不能直接输出图像,所以我们转化为用Mermaid的脚本,通过markdown的方式输出,再用支持Mermaid渲染的工具,将图片显示出来。

生成数据库初始化SQL

我们首先来试试,生成数据库初始化SQL吧。

提示:将以上账号系统的数据模型,生成MySQL数据库的SQL

ChatGPT:

-- 创建表:Account
CREATE TABLE Account (id INT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL,email VARCHAR(50),phone_number VARCHAR(20),state VARCHAR(20),email_ver BOOLEAN DEFAULT false,phone_ver BOOLEAN DEFAULT false,created_at DATETIME,updated_at DATETIME
);-- 创建表:EmailVerification
CREATE TABLE EmailVerification (id INT PRIMARY KEY,token VARCHAR(50) NOT NULL,expired_at DATETIME,account_id INT,FOREIGN KEY (account_id) REFERENCES Account(id)
);-- 创建表:PhoneVerification
CREATE TABLE PhoneVerification (id INT PRIMARY KEY,token VARCHAR(50) NOT NULL,expired_at DATETIME,phone_number VARCHAR(20),account_id INT,FOREIGN KEY (account_id) REFERENCES Account(id)
);-- 创建表:ThirdPartySocialAccount
CREATE TABLE ThirdPartySocialAccount (id INT PRIMARY KEY,provider VARCHAR(20) NOT NULL,provider_id VARCHAR(50) NOT NULL,account_id INT,FOREIGN KEY (account_id) REFERENCES Account(id)
);-- 创建表:LoginRecord
CREATE TABLE LoginRecord (id INT PRIMARY KEY,account_id INT,login_at DATETIME,FOREIGN KEY (account_id) REFERENCES Account(id)
);

以上SQL语句可以在MySQL数据库中创建相应的表,包括Account、EmailVerification、PhoneVerification、ThirdPartySocialAccount和LoginRecord五个表,并设置它们之间的关联关系。

直接输出C4 Diagram

接下来我们直接尝试其是否可以输出系统的C4模型的代码吧。

提示:对于系统架构图,用Mermaid's c4 diagram是非常有效的,接下来,我们需要开始构建c4 模型的Mermaid脚本,并用markdown

ChatGPT:

好的,以下是用Mermaid's C4 Diagram构建系统架构图的Mermaid脚本,并用markdown格式输出:

## C4 Model for Account System### Level 1: System Context Diagramtitle Account System - System Context Diagramactor UserUser -> AccountSystem: Use### Level 2: Container Diagramtitle Account System - Container DiagramAccountSystem -> AccountService: Uses
AccountSystem -> EmailService: Uses
AccountSystem -> PhoneService: Uses
AccountSystem -> ThirdPartyService: Uses
AccountSystem -> Database: UsesAccountService -> Database: Reads/Writes
EmailService -> Database: Reads/Writes
PhoneService -> Database: Reads/Writes
ThirdPartyService -> Database: Reads/Writes### Level 3: Component Diagramtitle Account System - Component DiagramAccountSystem --> AccountService: Manages Accounts
AccountSystem --> EmailService: Sends Email
AccountSystem --> PhoneService: Sends SMS
AccountSystem --> ThirdPartyService: Interacts with Social PlatformsAccountService --> Account: Accesses Account Data
EmailService --> EmailVerification: Validates Email
PhoneService --> PhoneVerification: Validates Phone NumberAccount --> PasswordSecurity: Manages Passwords
Account --> LoginRecord: Records Login Information

虽然给出了完整的代码,但在我的vscode的插件中,无法渲染出正确的结果图。

我推测由于ChatGPT训练的时间是21年的,所以其给出的代码版较低,而Mermaid近期升级了对C4模型的脚本规范,所以,我试图提升ChatGPT升级一下:

提示:这不是最新版的,请用Mermaid的最新版的C4 Diagrams脚本,再次输出

ChatGPT:

image

输出的结果,依然在我的渲染插件中无法展示。

所以,我尝试换了一种方法,来让其帮我继续做C4模型图,这也是我发现的一个大惊喜:

你给ChatGPT一个内容模版,它立马就会学会应用,而且效果惊人。

下面我们继续来看新方法的过程。

C4模型实验

C4Context视图

我输入的提示:下面,我要给你一个最新版本的Mermaid C4 Diagrams脚本案例,你要记住哦

ChatGPT:好的,尽管跟我分享吧。

我将从Mermaid官网上复制的C4Context代码输入给了ChatGPT:

C4Contexttitle System Context diagram for Internet Banking SystemEnterprise_Boundary(b0, "BankBoundary0") {Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")Person(customerB, "Banking Customer B")Person_Ext(customerC, "Banking Customer C", "desc")Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")Enterprise_Boundary(b1, "BankBoundary") {SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")System_Boundary(b2, "BankBoundary2") {System(SystemA, "Banking System A")System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.")}System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")Boundary(b3, "BankBoundary3", "boundary") {SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.")SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")}}}BiRel(customerA, SystemAA, "Uses")BiRel(SystemAA, SystemE, "Uses")Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")Rel(SystemC, customerA, "Sends e-mails to")UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")

ChatGPT:

image

提示:请按照上面给的案例,输出我们修改后的账号系统的C4Context的Mermaid脚本,用markdown输出

ChatGPT输出:

C4Contexttitle Account System Context DiagramEnterprise_Boundary(EB, "Account System Boundary") {System(AccountSystem, "Account System", "Allows users to manage their accounts, passwords, and login sessions.")User(User, "User", "A user of the account system.")System_Ext(MailSystem, "Email System", "The internal email system.")System_Ext(SMS, "SMS System", "The system that sends SMS messages for 2FA.")AccountSystem --> UserAccountSystem --> MailSystemAccountSystem --> SMS}BiRel(User, AccountSystem, "Uses")Rel(AccountSystem, MailSystem, "Sends emails")Rel(AccountSystem, SMS, "Sends SMS messages for 2FA")UpdateElementStyle(User, $fontColor="red", $bgColor="grey", $borderColor="red")UpdateRelStyle(User, AccountSystem, $textColor="blue", $lineColor="blue", $offsetX="5")UpdateRelStyle(AccountSystem, MailSystem, $textColor="blue", $lineColor="blue", $offsetY="-10", $offsetX="-50")UpdateRelStyle(AccountSystem, SMS, $textColor="blue", $lineColor="blue", $offsetY="10", $offsetX="-50")

代码渲染后为:

image

实验成功,那接下来的其他的C4模型,就可以如法炮制啦。

C4Container视图

提供Mermaid官网的demo后,就可以提示:

请按照上面给的案例,输出我们我们要处理账号系统C4Container的Mermaid脚本,用markdown输出

ChatGPT输出代码为:

C4Container
title Container diagram for Account SystemSystem_Ext(identity_provider, "Identity Provider", "An external identity provider, such as Auth0 or Okta", $tags="v1.0")
Person(user, User, "A user of the system, with a registered account", $tags="v1.0")Container_Boundary(c1, "Account System") {Container_Ext(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the account system SPA")Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the account system functionality to users via their web browser")ContainerDb(database, "Database", "SQL Database", "Stores user registration information, hashed auth credentials, access logs, etc.")ContainerDb_Ext(api, "API Application", "Java, Docker Container", "Provides account system functionality via API")}Rel(user, web_app, "Uses", "HTTPS")
UpdateRelStyle(user, web_app, $offsetY="60", $offsetX="90")
Rel(user, spa, "Uses", "HTTPS")
UpdateRelStyle(user, spa, $offsetY="-40")
Rel(web_app, spa, "Delivers")
UpdateRelStyle(web_app, spa, $offsetX="130")
Rel(spa, api, "Uses", "async, JSON/HTTPS")
Rel_Back(database, api, "Reads from and writes to", "sync, JDBC")Rel(identity_provider, user, "Provides authentication for")
UpdateRelStyle(identity_provider, user, $offsetX="-45")
Rel(api, identity_provider, "Uses", "async, OAuth2/OpenID Connect")
UpdateRelStyle(api, identity_provider, $offsetY="-60")

脚本渲染后图片为:

image

C4Component视图

提供Mermaid官网的demo后,就可以提示:

请按照上面给的案例,输出我们我们要处理账号系统C4Component的Mermaid脚本,用markdown输出

ChatGPT输出代码渲染后图片为:

image

C4Dynamic 视图

提供Mermaid官网的demo后,就可以提示:

请按照上面给的案例,输出我们我们要处理账号系统C4Component的Mermaid脚本,用markdown输出

ChatGPT输出代码渲染后图片为:

image

C4Deployment视图

提供Mermaid官网的demo后,就可以提示:

请按照上面给的案例,输出我们我们要处理账号系统C4Deployment的Mermaid脚本,用markdown输出

ChatGPT输出代码渲染后图片为:

image

备注:在ChatGPT熟悉了2-3次过程后,只要输入模版,其就会自动给出结果啦,连提示都可以省略了,重复工作完全自动化啦。

复杂状态试图

在今天的实验中,最后尝试做了一个负责的系统状态转化图,具体如下:

提示:在账号系统中的EmailVerification,PhoneVerification,ThirdPartyBinding的状态发生变化时,Account中对应信息变化的 Mermaid 脚本

ChatGPT:

以下是在账号系统中的EmailVerification,PhoneVerification,ThirdPartyBinding的状态发生变化时,Account中对应信息变化的Mermaid脚本:

给出的代码如下:

stateDiagram-v2state "Account" as account {state "EmailVerified" as emailVerifiedstate "PhoneVerified" as phoneVerifiedstate "ThirdPartyBound" as thirdPartyBound[*] --> emailVerified : initialize[*] --> phoneVerified : initialize[*] --> thirdPartyBound : initializeemailVerified --> phoneVerified : Email verifiedemailVerified --> thirdPartyBound : Third-party boundphoneVerified --> thirdPartyBound : Third-party boundemailVerified --> emailVerified : Re-verify emailphoneVerified --> phoneVerified : Re-verify phonethirdPartyBound --> thirdPartyBound : Unbind third-partyemailVerified --> * : Email unverifiedphoneVerified --> * : Phone unverifiedthirdPartyBound --> * : No third-party}

这个脚本包含了四个节点,分别表示账户,电子邮件验证,电话验证和第三方绑定。每个节点有对应的状态,包括已验证,无效,已绑定和未绑定。节点之间的关系用箭头表示,例如账户有电子邮件验证,电话验证和第三方绑定。在状态发生变化时,节点的颜色也会相应地改变。

代码渲染图片:

image

继续尝试,输出以上变化的序列图,提示:

ChatGPT:

以下是在账号系统中的EmailVerification,PhoneVerification,ThirdPartyBinding的状态发生变化时,Account中对应信息变化的序列图的Mermaid脚本:

sequenceDiagramparticipant Accountparticipant EmailVerificationparticipant PhoneVerificationparticipant ThirdPartyBindingAccount ->> EmailVerification: VerifyEmail(email, code)activate EmailVerificationEmailVerification -->> Account: EmailVerified(email)deactivate EmailVerificationAccount ->> PhoneVerification: VerifyPhone(phone, code)activate PhoneVerificationPhoneVerification -->> Account: PhoneVerified(phone)deactivate PhoneVerificationAccount ->> ThirdPartyBinding: BindThirdParty(thirdPartyAccount)activate ThirdPartyBindingThirdPartyBinding -->> Account: ThirdPartyBound(thirdPartyAccount)deactivate ThirdPartyBindingAccount ->> ThirdPartyBinding: UnbindThirdParty(thirdPartyAccount)activate ThirdPartyBindingThirdPartyBinding -->> Account: ThirdPartyUnbound(thirdPartyAccount)deactivate ThirdPartyBinding

上面的序列图描述了Account对象和三个相关对象(EmailVerification,PhoneVerification和ThirdPartyBinding)之间的交互,以处理EmailVerification,PhoneVerification和ThirdPartyBinding状态变化的情况。

在这个序列图中,Account对象向EmailVerification,PhoneVerification和ThirdPartyBinding发送请求,以更新与它们关联的信息。每个参与者在收到请求后执行其操作,并通过消息传递结果将结果返回给Account对象,以通知其信息已被更新。

渲染后的图片为:

image

写在最后

今天的实验,就这么多啦,希望对你有启发哦。

在日常的系统设计中,创造系统图表是一件不太容易,也非常繁琐的事情,而ChatGPT则可以很好的帮我们处理这些问题,让我们可以节省不少的时间和精力哦。

在实验的过程中,也可以发现ChatGPT存在这个各种可能性,只要我们能给出不错的提示,提供有效的上下文,他就可以快速的学习,并将此结果有效的利用在接下来的任务之中。

ChatGPT还有很多未知的能力,值得每一个人去探索,保持好奇心吧。

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

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

相关文章

针对近日ChatGPT账号大批量封禁的理性分析

文 / 高扬&#xff08;微信公众号&#xff1a;量子论&#xff09; 这两天不太平。 3月31号&#xff0c;不少技术圈的朋友和我闲聊说&#xff0c;ChatGPT账号不能注册了。 我不以为然&#xff0c;自己有一个号足够了&#xff0c;并不关注账号注册的事情。 后面又有不少朋友和我说…

ChatGPT 账号被封?推荐 5 款国外网站,完美替代!

ChatGPT 由于某些原因&#xff0c;导致亚洲地区大面积封号&#xff0c;自己的账号也没有幸免。而官网又停止了注册&#xff0c;所以想重新申请是不可能了。但仍然有这方面比较成熟的网站&#xff0c;推荐给大家。 ​注&#xff1a;​以下国外网站访问可能需要会 “魔法"​…

被封了?教你如何解封chatgpt账号,中英版都有

近日,不管你是普通账号还是plus账号,都会面临被封的风险,大家不要慌,要是你的号也被封了,下面紧急启动了一个解封攻略,帮助大家快速解封 第一步:写一封英文邮件进行申诉: 告诉官方这是误会 1. 把邮箱账号和姓名复制到中英文模板 2. 登录其他的邮箱,利用这个邮箱…

在线可玩的 ChatGPT

这段时间发布了很多AI产品&#xff0c;包括GPT4&#xff0c;MidjourneyV5 &#xff0c;文心一言&#xff0c;Microsoft 365 Copilot&#xff0c;ai产品要百花齐放了&#xff0c;这里就分享几个基于chatgpt的网站&#xff0c;在线可玩。 ChatGPT prompts 这个网站收集了各种 Cha…

ChatGPT中文使用手册

简要介绍&#xff1a; First&#xff1a;什么是ChatGPT? ChatGPT是由OpenAI训练的一款大型语言模型&#xff0c;最新版为GPT3.5&#xff08;公开版&#xff09;和GPT4.0&#xff08;PLUS会员版本&#xff09; 它能够生成类似于人类写作的文本。您只需要给出提示或提出问题&…

chatgpt 中文版 日常使用教程

之前的很多文章相信很多小伙伴都看了&#xff0c;今天就把我日常的使用分享给大家希望可以帮助到大家。 1.写代码 在我们需要写代码的时候一定要发出指令否则会让它误会&#xff0c;例子&#xff1a;帮我写个俄罗斯方块的代码&#xff0c;一定要有帮忙和请求的感觉 如果写的代…

开源项目ChatGPT-website再次更新,累计下载使用1600+

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

FastChat-Vicuna开放,媲美ChatGPT的90%能力——从下载到安装、部署

FastChat-Vicuna开放&#xff0c;媲美ChatGPT的90%能力——从下载到安装、部署 前言两个前置软件创建FastChat虚拟环境安装PyTorch安装 FastChat下载 LLaMA&#xff0c;并转换为HF格式生成FastChat对应的模型Vicuna启动FastChat的命令行交互将模型部署为一个服务&#xff0c;提…

ChatGPT的使用

目录 一、ChatGPT介绍 二、使用实例 三、怎么使用&#xff1f; 一、ChatGPT介绍 ChatGPT是一种由OpenAI训练的大型语言模型。它的原理是基于Transformer架构&#xff0c;通过预训练大量文本数据来学习如何生成人类可读的文本&#xff0c;然后通过接受输入并生成输出来实现对…

用 ChatGPT 写了篇文章!

阅读本文大概需要1.66 分钟。 这几天大家应该看到很多人&#xff0c;尤其做技术的&#xff0c;互联网圈子的人都在刷屏一个ai玩意&#xff0c;叫 ChatGPT。在写这篇之前&#xff0c;我也试了试&#xff0c;感觉还挺好玩。看到很多人在问这是个啥&#xff0c;今天就来简单说说。…

如何用ChatGPT制作PPT

如何用ChatGPT制作PPT 目录 如何用ChatGPT制作PPT 一、简介 二、前提 三、步骤 1、打开OpenAi页面 ​编辑 2、输入文本&#xff0c;作者上传了文本样式 3、从ChatGPT获取文本复制到闪击PPT页面 4、修改相关样式&#xff0c;使PPT更加精美——当然懒的话只需要检查PPT是…

两分钟成为 ChatGPT 国内高手【不要再拿ChatGPT当百度用了】

不要再问ChatGPT那些问百度的问题了&#xff0c;有更进阶的用法 更高效的编写prompts&#xff0c;以便ChatGPT给出更精准的回答 但是需要注意的是&#xff1a;国内现在根本没有GPT-4使用&#xff0c;但凡是说有GPT-4的都是骗子。 GPT 可以写文章&#xff0c;可以写诗&#x…

ChatGPT怎么用,搞懂ChatGPT到底是个啥?

我怎么才能使用ChatGPT&#xff0c;下面就来谈谈我的方法。ChatGPT到底是个啥? “ChatGPT是一次产品和市场上的突破&#xff0c;而不是AI基础理论的突破。”一位行业资深投资人对虎嗅表示&#xff0c;AIGC的大规模商用&#xff0c;需要三个条件&#xff0c;首先是基于技术积累…

ChatGPT详解

导读&#xff1a;ChatGPT出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型&#xff08;LLM,Large Language Model&#xff09;效果能好成这样&#xff1b;惊醒是顿悟到我们对LLM的认知及发展理念&#xff0c;距离世界最先进的想法&#xff0c;差得有点远。我属于既惊喜…

ChatGPT 有哪些神奇的使用方式?

在遇到 ChatGPT之前&#xff0c;我很难想象&#xff0c;仅仅不到30s就能做出一个PPT。 而且对于小白来说&#xff0c;这个PPT绝对是「有水准、能拿得出手」的那种。 下面就是我用ChatGPTMindShow做的一套以分享短视频玩法为主题的 PPT&#xff0c;我挑几页大家看一下。 上面这…

用Python+ChatGPT

前言 近来chatGPT挺火的&#xff0c;也试玩了一下&#xff0c;确实挺有意思。这里记录一下在Python中如何去使用chatGPT。 本篇文章的实现100%基于 chatGPT&#xff0c;我是搬运工无疑了&#xff01;&#xff01;&#xff01; 本片文章比较简单&#xff0c;下一篇基于本文章来写…

如何用ChatGPT高效完成工作

如何用ChatGPT高效完成工作 过完年刚开工&#xff0c;很多人还没有从假期综合症中走出来&#xff0c;不想上班&#xff0c;总想摸鱼&#xff0c;可是手上的工作还是要完成的。都2023年了&#xff0c;是时候让ChatGPT来帮我们完成工作了&#xff01;本文将教你如何用ChatGPT高效…

[持续更新]使用chatgpt的几种方法~

1. monica 使用edge浏览器或者chrome浏览器&#xff0c;直接在官网下载即可&#xff0c;网址直通&#xff1a; bing: https://www.microsoft.com/zh-cn/edge/download?formMA13FJ google&#xff1a; Google Chrome 网络浏览器 备注&#xff1a;你需要先搭上梯子哈 安装打…

4个小技巧教你快速玩转ChatGPT

大家好&#xff0c;这个是我搜集的使用Chat GPT的时候的一些小技巧&#xff0c;简单的例举出来和大家分享下希望可以帮到您 技巧一&#xff1a; 大家都知道ChatGPT是国外的一款软件&#xff0c;所以有的时候如果我们在用中文提问的时候&#xff0c;它的回复可能会有些慢&#x…

chatgpt是什么?本文给您全面阐述!

ChatGPT是一种基于GPT-3.5架构的大型语言模型&#xff0c;由OpenAI开发。它是一种强大的对话生成模型&#xff0c;具备广泛的知识和理解能力。ChatGPT具有强大的自然语言处理能力&#xff0c;可以用于各种任务&#xff0c;如聊天机器人、智能助手、客户服务等。下面&#xff0c…