Skip to main content

ChatGPT 활용 가이드

ChatGPT 효과적 사용법

복잡한 문제는 명확하고 구체적인 요청하기

  • 필요한 정보, 맥락, 예시를 제공하세요.
  • 요청을 짧고, 명확하며 구체적으로 하세요.
  • 복잡한 문제는 단계별로 나눠서 접근하세요.
  • 답변 형태나 조건을 명시적으로 요청하세요.
  • 영어로 질문하면 더 정확한 답변을 얻을 수 있습니다.
  • AI의 역할을 명확히 정하세요.
    • "네 스스로를 고객으로 생각하고.."처럼 구체적인 역할을 주면 해당 관점에 대한 답변이 작성될 확률이 높아집니다.

정보 탐색과 질문 전략

  • 목표와 재료를 알고 있을 때, 조립 방법이나 프로세스만 질문하세요.
    • Code1을 참고해서 Code2를 완성해줘.
  • 답변의 근거를 요구하여 정확도를 높이세요.
  • 답변의 제한 사항을 확인하세요.
    • 지식의 시점: AI 모델은 특정 시점까지의 데이터로 훈련됩니다. 따라서 최신 정보나 이후에 발생한 사건에 대해서는 알지 못할 수 있습니다.
    • 주관적 질문: 주관적이거나 의견을 요구하는 질문에 대한 답변은 모델의 훈련 데이터에 기반한 일반적인 응답일 뿐, 전문가의 조언이나 개인적인 의견을 대체할 수 없습니다.
    • 복잡한 문제 해결 능력: AI는 복잡한 문제나 매우 전문적인 주제에 대해 제한된 답변을 제공할 수 있습니다. 특히, 세부적인 전문 지식이나 맥락을 요구하는 질문에서는 한계를 보일 수 있습니다.
    • 창의성과 상상력: AI는 창의적인 생산물을 만들어낼 수 있지만, 인간의 창의성과 동일한 수준의 독창성이나 감성을 기대하기 어렵습니다.
  • 불확실한 경우 AI에게 질문하게 하세요.
    • 추가 정보 요청: AI가 제공한 답변이 불확실하거나 모호할 때, 추가 설명이나 정보를 요청하세요.
    • 질문 재구성: 답변이 만족스럽지 않은 경우, 질문을 다르게 표현하거나 다른 관점에서 질문을 시도해 보세요.
    • 대안적 해석 요구: AI가 제시한 해결책이나 답변에 대해 다른 해석이나 대안적인 관점이 있는지 물어보세요.
    • 확인 질문: AI가 제공한 정보의 정확성이나 신뢰성에 대해 확신이 서지 않는다면, 그 근거나 출처를 물어봄으로써 정보의 정확성을 검증하세요.
    • 대화의 깊이 증가: 단순히 '예'나 '아니오'로 대답할 수 있는 질문보다는, 더 많은 설명을 요구하는 개방형 질문을 사용하여 대화의 깊이를 높이세요.

글쓰기에 활용하기

GPT-4를 활용한 문서 생성 어플리케이션 소스

  1. 소재가 될만한 재료를 GPT에게 "이 내용을 상세하게 정리해줘"
  2. 소재를 모두 입력하면, 지금까지 내용을 목차로 만들어줘
  3. 목차를 자신이 마음에 드는 형태로 수정
  4. 목차의 세부 제목마다 상세하게 작성해달라고 요청

언어학습에 활용하기

영어 학습을 위한 프롬프트

You ask questions in English, and I'll answer in English.
Please point out any grammatical errors or awkward expressions in my answers.
Based on my answers, proceed with the next question.
If I respond in Korean, translate it into English for me.
For words that are at a college level or above, provide explanations in Korean.
Continue this process.

---

질문할 때는 다음과 같은 형식을 사용해줘.

### 질문

질문내용

### 단어해설
* 단어1 (발음기호): 한국어 해설
* 단어2 (발음기호): 한국어 해설

---

내 답변에 대해서 지적할 때는 다음과 같은 형식을 사용해줘.

### 문법 및 표현 수정

### 단어해설 (문법 및 표현 수정에서 사용한 단어들)
* 단어1 (발음기호): 한국어 해설
* 단어2 (발음기호): 한국어 해설

일본어 학습을 위한 프롬프트

너는 일본어 선생님이야.
너는 일본어로 질문을 하고 나는 일본어로 답변해.
내 답변에서 문법적으로 문제 있는 부분을 지적해주고.
내 답변을 근거로 다음 질문을 진행해.
내가 한글로 답변한 부분이 있으면 일본어로 번역해서 알려줘.
단어 중에 중학생 이상의 레밸이 있으면 단어 해설도 해줘.
이것을 계속 반복해.

나는 일본어 답변을 할 때 한글로 발음을 사용할 예정이야.

---

질문할 때는 다음과 같은 형식을 사용해줘.

### 질문
> あなたはどうして日本語を勉強し始めたんですか?
> 일본어를 공부하게 된 계기는 무엇인가요?
> 아나타와 도우시테 니혼고오 벤쿄우시하지메탄데스까?

### 단어해설
* 단어1 (발음 한국어 표기): 한국어 해설
* 단어2 (발음 한국어 표기): 한국어 해설

---

답변할 때는 다음과 같은 형식을 사용해줘.

### 문법 및 표현 수정
### 일본어로 번역 (만약에 필요하면)
* 일본어 번역 부분
* 일본어 발음을 한글로 표기한 부분
### 단어해설
* 단어1 (발음 한국어 표기): 한국어 해설
* 단어2 (발음 한국어 표기): 한국어 해설

예습을 위한 단어 및 문장 골라내기

원문에서 고등학생 수준 이상의 단어와 표현을 찾아서
다음과 같은 형식으로 번역해줘.

### 단어해설
* 단어1 (발음기호): 한국어 해설
* 단어2 (발금기호): 한국어 해설

### 유용한 표현
* 표현1: 한국어 번역
* 표현2: 한국어 번역

--- 원문 시작

원문 내용

프로젝트 전체 코드를 분석하기

질문과 예제 등의 영역을 확실하게 구분하기

질문과 코드 그리고 예제 등을 확연하게 구별해주면 좀 더 나은 결과를 얻게 됩니다.

code1을 코드를 code2의 포멧에 맞도록 수정해서 code2에 넣어줘.

*** code1
소스코드1
***

*** code2
소스코드2
***

질문 답변 자료를 한 번에 정리하기

질문이나 문제에 대한 참고 자료를 찾았지만 내가 원하는 것이 바로 보이지 않는 경우 GPT에게 요약하거나 정리하도록 요청하면 좋은 결과를 얻을 수 있습니다.

아래 글에서 "Could not load file or assembly System.Diagnostics.DiagnosticSource" 오류에 대한 해결방법이 아래 글에 있는가?

- https://stackoverflow.com/questions/42674661/could-not-load-file-or-assembly-system-diagnostics-diagnosticsource-on-asp-net
- https://github.com/open-telemetry/opentelemetry-dotnet/issues/4047

코드에서 내가 원하는 자료 찾기

골격만 만들고 코드 작성 요청하기

"필요하다고 판단되는 것들"처럼 애매하게 말해도 맥락을 이해하고 코드를 작성해줍니다. 물론 최대한 구체적인 요구사항으로 작성하는 것이 좋습니다.

다이어그램을 제시하고 코드를 작성해달라고 요청할 수도 있습니다. 클래스의 구조를 이해하기 쉽도록 빈 메소드를 함께 제공하는 것이 효과적입니다.

기능 트리 또는 Navagation Diagram을 통해서 초기 프로젝트 생성

"다이어그램을 만족하는 Vue.js 프로젝트를 생성해줘."

State Diagram을 통한 초기 프로젝트 생성

stateDiagram-v2
direction LR
[*] --> SigninView : not logined
[*] --> HomeView : logined
SigninView --> TermsView : signin
TermsView --> SignupView : agree
SignupView --> SignupView : error
SignupView --> HomeView
SigninView --> SigninView : error
SigninView --> HomeView : logined

이벤트 기반 설계를 통한 초기 프로젝트 생성

Pinia 코드 생성

다음 요구사항을 pinia 코드로 만들어줘.

- user.js
- 속성
- username
- userlevel
- token
- getter
- isLoggedIn
- setter
- 필요하다고 판단되는 것들

API 호출 코드 생성

다음 요구사항을 axios 코드로 만들어줘.

- user.js
- login
- logout
- signup

Vue 파일 생성

지금까지 요구사항을 토대로 필요한 SigninView.vue 코드를 작성해줘.

유사 반복 처리

아래의 코드를 보면 DebugLogs.Instance.Log를 통해서 메소드 시작 위치에서 로그를 남기도록 되어 있습니다. 로그는 상당히 유사한 형태로 반복되지만, 메소드의 파라메터에 따라 변경되어 단순한 붙여 넣기는 되지 않습니다. 이러한 작업도 미리 예를 하나 던져주고 GPT에게 부탁하면 상당히 잘 만들어주는 편입니다.

[NonEvent]
public void UnknownErrorProcessingEvent(string handlerName, string eventName, Exception ex)
{
DebugLogs.Instance.Log($"UnknownErrorProcessingEvent: {handlerName}, {eventName} - {ex}");

if (this.IsEnabled(EventLevel.Error, EventKeywords.All))
{
this.UnknownErrorProcessingEvent(handlerName, eventName, ex.ToInvariantString());
}
}

[Event(1, Message = "Payload is NULL, span will not be recorded. HandlerName: '{0}', EventName: '{1}', OperationName: '{2}'.", Level = EventLevel.Warning)]
public void NullPayload(string handlerName, string eventName, string operationName)
{
DebugLogs.Instance.Log($"NullPayload: {handlerName}, {eventName}, {operationName}");

this.WriteEvent(1, handlerName, eventName, operationName);
}

데이터베이스 설계 활용

요구사항 토대로 기초 자료 생성

  • 녹음 파일을 통한 요구사항 생성
  • ERD
  • 테이블 정의서
  • 기능 트리
  • 정규화 및 설계 오류 점검
  • SQL 코드 생성

CRUD 분석

전체 CRUD 분석

ProcessTableCRUD
주문 생성주문목록C
주문 수정주문목록U
주문 삭제주문목록D
주문 상세 조회주문목록R
주문 상태별 조회주문목록R
상품 등록상품목록C
상품 수정상품목록U
상품 삭제상품목록D
상품 조회상품목록R
재고 관리상품목록U
고객 정보 등록고객목록C
고객 정보 수정고객목록U
고객 정보 삭제고객목록D
고객 정보 조회고객목록R
배송 업체 관리배송목록CU
배송 상태 추적배송목록R
결제 방법 설정결제목록CU
결제 내역 조회결제목록R
문의사항 처리문의목록CRU
환불 요청 처리환불목록CRU
사용자 등록사용자목록C
사용자 수정사용자목록U
사용자 삭제사용자목록D
권한 설정권한목록CU

주문 관련 CRUD 분석

ProcessTableCRUD
주문 생성주문목록C
주문 수정주문목록U
주문 삭제주문목록D
주문 상세 조회주문목록R
주문 상태별 조회주문목록R

실습 사례

파인튜닝 시행 착오

튜닝 결과 - 변동성이 있는 학습

  • 모델의 학습 손실이 시간에 따라 변동하면서 감소하는 추세를 보임
  • 학습 과정에서 일정한 불안정성이나 과적합 가능성이 있음을 나타냄
  • 학습률 조정이나 모델 구조의 변경을 통한 최적화가 필요할 수 있음

튜닝 결과 - 이상치를 보이는 학습

  • 훈련 손실이 매우 빠르게 0에 근접하여 오버피팅이나 데이터 누수 가능성이 있음
  • 검증 손실(validation loss)의 부재로 인해 모델의 일반화 능력 평가가 어려움
  • 검증 손실 데이터를 제공하고 오버피팅 여부를 확인할 필요가 있음

튜닝 결과 - 점진적인 개선을 보이는 학습

  • 훈련 손실이 시간에 따라 서서히 감소하는 경향을 보임
  • 큰 변동 없이 비교적 안정적인 손실을 유지, 과소적합 가능성도 고려해야 함
  • 학습률 조정이나 추가적인 특성 공학을 통해 모델의 학습 성능 개선

튜닝 방향

height:400px

기타

기타 프로그래밍 활용의 예

  • 페어 프로그래밍
    • 프로젝트 시작하기 전 막연한 상태에서 시작할 때
    • 토이 프로젝트를 시작할 때
    • 프로토타입을 만들 때
  • 에러 메시지 해석
    • 에러 메시지와 해당 메시지에 표시된 위치의 코드만 복사해서 붙여 넣으면 됩니다.
  • 코드에 대한 문서/주석 자동 생성
  • 리팩토링
    • 오류 및 위험 요소를 찾아내고 수정
    • 효율적인 코드로 변경
  • 코드 해석
    • 코드에 대한 다이어그램 요청
    • 코드에 대한 개요 요청
    • 코드를 초보자 수준으로 해설 (익숙하지 않은 용어 등을 한 번에 처리할 수 있습니다)
  • 로그 해석
    • 실패 로그 + 성공 로그 + 소스 코드 --> 의심되는 소스 코드의 위치 및 해설
  • 테스트 케이스 자동 생성
    • xUnit, E2E
  • 복잡한 콘솔 스크립트 작성
  • C++, node.js 프로젝트에 대한 .gitignore를 작성해줘.
  • 작명 요청
  • 매직넘버 제거하기
  • 프로토타입의 CSS 등 디자인 자동화
  • 언어 변환
  • 단순작업 자동화
  • 구체적이며 잘 알려진 알고리즘 문제는 꽤 잘 처리합니다.