솔루션 Tip/chatGPT & Prompt

ChatGPT Prompt Guide || 빠른 앱 개발을 위한 Agile ERD구축 : ChatGPT 기반 데이터모델링 3-Step Prompt (챗GPT MS애저톤 수상기념 공유!)

Awesomist 2023. 5. 4. 18:55
728x90

 

보다 효율적인 GPT 연계 개발을 위해서 하이에나처럼 헤매던 중에
Microsoft와 AIFactory에서 주최하는 챗GPT MS애저톤을 참가할 기회가 생겼다.

마음 같아서는 슬랙이나 기타 3rd Party 솔루션과 연동해서 GPT 서비스로 진행해보고 싶었는데 

아쉽게도 내가 공지를 본 시점이 마감이 며칠 얼마 남지 않은 시점이라

프론트를 건들다가 프롬프트 엔지니어링으로 빠르게 선회했다.

 

 

출품하고 나니 규모가 큰 공모전은 아니었지만 배우는 것들도 많았고,
정말 빛나는 아이디어들이 많아서 새삼 아이디어가 승부인 GPT시대라는 것이 새삼스럽게 와닿았다.

 

 

 

마감 직전에 출품해서 약간 비문도 있었지만
감사하게도 업무효율화 분야에서 좋은 평가를 주셔서 수상 기념으로 공모전 내용을 공개하려고 한다.

 

이 프롬프트가 어떤 어플리케이션 서비스 출시에 있어서 모델링이 잡아먹는 상당 부분의 영역을 줄이고,
조금 더 빠르게 킥오프할 수 있는 프롬프트라는 것은 확신한다 :)

(Q&A 환영, 사전 협의된 AIFactory 외 제3자의 임의 배포와 상업적 활용을 금합니다)

 

 

 


 

 

•  서비스 배경

    GPT를 통해  애자일한 개발환경에서 보다 빠르게 핵심적인 DB 설계하고 MVP 개발을 진행할 수 있는 업무효율화 프롬프트 시리즈 구성

     데이터 초기 설계에 따라서 앱의 완성도와 개발 방향이 바뀌기 마련입니다. 
     그러나 아무리 좋은 앱 아이디어도 초기 데이터 설계에서 완벽하기 어렵고
     Coding 과정에서 Test 과정에서 진행하면서 누락이 발견되면 결국 전체 개발을 몇 번을 뒤집어 엎어야 하는 비효율적인 과정이 반복됩니다.

    이러한 비효율을 제거하고 기본적인 기능 구현에 필요한 모든 데이터를 빠르게 정리하고, 논리 구조를 시각화하고,
     빠르게 앱을 시장 출시하기 위한 애자일한 앱 개발환경에 딱 맞는 GPT를 이용해봅시다.

 

•  서비스 기대효과

   서비스 구상 후 DB 초기 스케치 후 최종적으로 다이어그램화 하는 한 사이클의 프롬프트 개발로,
   개발 관련 구조화 또는 협업 시에 문서 작성에 제약 받지 않고 빠른 개발 투입과 서비스 개선이 가능할 것으로 기대할 수 있습니다.
 

 

•  프롬프트 엔지니어링

 

 

 

 

 

 * Tip 간혹 출력되다가 일부 내용이 짤리는 경우가 있는데 (보통 6개 항목), 이 경우는 second를 넣어 전체 테이블을 다시 호출하거나 누락된 테이블을 지정한다.
    (잘리는 경우의 출력 프롬프트 예시)

[테이블이 일부 잘리는 경우]

 

 


  : ERD 다이어그램 마크다운 중 가장 시각적으로 뛰어난 머메이드 마크다운으로 다이어그램 코딩 결과 

     → 그래프 표현시 일부 제약사항은 여전히 있지만 전체적인 데이터 초기 설계의 공수는 최소화하고 바로 검증부터 할 수 있다는 점에서 효율적이고 유의미한 작업이다.

 ※ 비주얼화하는 경우 제약사항 :  
  1) 필요에 따라서 GPT가 임의로 불필요한 컬럼을 제거하는 경우가 있으니 이 부분은 최종 검토 후 확정하는 것을 권장
  2) 1차적인 markdown code는 data type과 컬럼명을 반대로 노출하는 경우가 있어 이 부분은 확인 후 조정하면 됨 (아래 2차코드 참고)

 

(최종 다이어그램 확인 링크) :     Mermaidv10.1.0 Live Editor (https://mermaid.live/)

1차 : ERD Markdown Code 결과 (초안 - 데이터 타입이 먼저 나와 변경필요)

   erDiagram
    Organization {
        int organization_id
        varchar(50) organization_name
    }
    Personnel {
        int personnel_id
        int organization_id
        varchar(50) personnel_name
    }
    Profile {
        int profile_id
        int personnel_id
        varchar(50) question
        varchar(50) answer
        datetime created_at
        datetime updated_at
    }
    Role {
        int role_id
        int personnel_id
        varchar(50) role_name
    }
    AbsenteeismHistory {
        int absenteeism_history_id
        int personnel_id
        datetime date
        varchar(50) reason
    }
    WorkEvaluation {
        int work_evaluation_id
        int personnel_id
        datetime date
        varchar(50) content
        varchar(50) result
    }
    Payroll {
        int payroll_id
        int personnel_id
        decimal salary
        datetime payment_date
    }
    QABulletinBoard {
        int qa_bulletin_board_id
        int personnel_id
        varchar(50) question
        varchar(50) answer
        datetime created_at
        datetime updated_at
    }
    
    Organization ||--o{ Personnel : has
    Personnel ||--o{ Profile : has
    Personnel ||--o{ Role : has
    Personnel }o--|| AbsenteeismHistory : has
    Personnel }o--|| WorkEvaluation : has
    Personnel ||--|| Payroll : has
    Personnel }o--|| QABulletinBoard : has

 

(1차 코드 결과)


 


 

 2차(Final) ERD Markdown Code 결과  : 데이터 타입이 먼저 코딩된 제약사항을 극복하기 위한 2차 코드

   출력결과 따라 다이어그램 마크다운 코드 조정작업이 필요한데, 이 경우 아래 코드를 활용한다.

 

erDiagram
    Organization {
        org_id int
        org_name varchar
        org_address varchar
        created_at datetime
        updated_at datetime
    }
    
    Personnel {
        personnel_id int
        org_id int
        personnel_name varchar
        personnel_email varchar
        personnel_phone varchar
        personnel_address varchar
        personnel_dob date
        created_at datetime
        updated_at datetime
    }
    
    Profile {
        profile_id int
        personnel_id int
        profile_description varchar
        profile_start_date date
        profile_end_date date
        created_at datetime
        updated_at datetime
    }
    
    Role {
        role_id int
        personnel_id int
        role_name varchar
        role_description varchar
        created_at datetime
        updated_at datetime
    }
    
    Absenteeism {
        absenteeism_id int
        personnel_id int
        absenteeism_date date
        absenteeism_status varchar
        created_at datetime
        updated_at datetime
    }
    
    Evaluation {
        evaluation_id int
        personnel_id int
        evaluation_quarter varchar
        evaluation_score float
        created_at datetime
        updated_at datetime
    }
    
    Payroll {
        payroll_id int
        personnel_id int
        payroll_amount float
        payroll_date date
        created_at datetime
        updated_at datetime
    }
    
    QandA {
        qanda_id int
        personnel_id int
        qanda_question varchar
        qanda_answer varchar
        related_qanda_id int
        created_at datetime
        updated_at datetime
    }
    
    Organization ||--o{ Personnel : "has"
    Personnel ||--o{ Profile : "has"
    Personnel ||--o{ Role : "has"
    Personnel ||--o{ Absenteeism : "has"
    Personnel ||--o{ Evaluation : "has"
    Personnel ||--o{ Payroll : "has"
    Personnel ||--o{ QandA : "has"

 

 

Conclusion : Final ERD Diagram Visual 

 

(2차 - 최종)

 

 
 



DX 관점에서 계속 개발하고 다양한 활용방안을 고민하면서 GPT Guru가 되보는 것도 나쁘지 않을 듯 :)

Microsoft에서 향후 GPT 홍보에 활용한다는 말을 들었는데, 우연히 보면 이 포스트를 떠올려주길



* 원본링크 : 업무 효율화 분야 프롬프트 엔지니어링 : 빠른 앱 개발을 위한 Agile ERD구축 3-Step Prompt

 

반응형