본문으로 건너뛰기

ChatGPT와 대화를 잘하는 법

· 약 10분
조준철
HandStack 개발자

사람과의 대화는 어렵습니다. 자주 보는 사람이라도 그 사람의 지식, 생각, 경험, 상황, 배려에 따라 의도와는 다르게 예기가 다르게 전달 되거나 오해를 불러 일으키기도 하며, 어쩌다 1 년에 한번 만나더라도 어제 만났던 것 처럼 스스럼 없이 편하게 대화를 나눌 수도 있습니다.

대화의 핵심은 관심과 존중에 있습니다. 상대방에게 관심을 가지고 그 사람의 말을 경청하며, 그 사람의 의견을 존중하며 대화를 나누는 것이 중요합니다. 그러나, ChatGPT와 대화를 나눌 때는 어떨까요? ChatGPT는 사람이 아니기 때문에 관심과 존중을 가지지 않습니다.

다만 ChatGPT는 몇가지 규칙을 준수하면 좀 더 나은 대화를 나눌 수 있습니다. 우리가 로마에 가면 로마의 법을 따라야 하듯, 데이터베이스에 저장된 정보를 조회하기 위해 SQL 문법을 사용하는 것처럼, ChatGPT와 대화를 나누기 위해서는 ChatGPT가 이해할 수 있는 방식으로 대화를 나누어야 합니다.

ChatGPT와 대화를 잘하는 법

한글로 대화하면 알아서 번역해서 찾아주고 한글로 응답합니다.

저의 경우 한국어로 대화를 하는 것이 더 편리하고 자연스러워서 한국어로 대화를 나누고 있습니다. 아시다시피 ChatGPT는 주로 영어로 된 지식을 학습합니다. 그래서 영어로 대화를 하는 것이 더 정확한 답변을 받을 수 있습니다.

그러나, 한국어로 대화를 하면 ChatGPT가 영어로 번역해서 답변을 해줍니다. 그러니까, 한국어로 대화를 해도 ChatGPT가 영어로 번역해서 답변을 해줍니다.

언어 보다도 다음과 같이 간단한 규칙을 적용하는 것이 더 나은 결과를 얻을 때도 있었습니다. 아직 ChatGPT를 사용해보지 않았거나 규칙을 적용해보지 않았다면 다음 예시 문장을 응용해서 질문을 해보세요.

저의 경우 https://copilot.microsoft.com/ 에서 대화 스타일 선택에서 "보다 정밀한"을 선택하고 있습니다. 이렇게 하면 ChatGPT가 더 정확한 답변을 제공할 수 있습니다.

1. 역할을 부여하기

조금 더 시간이 걸리더라도 대화의 빌드업을 구성한다고 생각하면서 ChatGPT에게 대화를 시도하기 전에 다음과 같이 역할을 부여할 수 있습니다.

내가 지금 영어를 초급 레벨로 독학을 하고 있는데 네가 강사 역할을 해주면 좋겠어~

내가 제주도 여행을 가려고하는데 네가 한국 전문 여행사의 직원 역할을 해주면 좋겠어~

지금부터 네가 초등학생을 대상으로 과학을 가르치는 선생님 역할을 해주면 좋겠어~

C# 언어를 배우려고 하는데 네가 .NET Core C# 언어 전문가 역할을 해주면 좋겠어~

ChatGPT에게 역할을 부여하면 ChatGPT가 더 정확한 위한 준비를 합니다.

2. 정보와 예시 제공하기

"문장 예시", "URL 참고 링크 주소", "이미지 링크 또는 파일", "markdown 문법 테이블", "CSV 데이터" 를 참고해서... 식으로 정보를 제공하면 ChatGPT가 더 정확한 답변을 제공할 수 있습니다. 예를 들면 다음과 같이 정보를 제공할 수 있습니다.

"https://news.hada.io/topic?id=13903" URL 에서 전달하려고 하는 내용을 발표 자료 용도로 요약 해줘

응답된 결과는 5 장의 슬라이드로 구성하기 좋은 내용이라고 생각합니다. 이 내용을 발표 자료로 활용하면 좋을 것 같습니다.

또는 TAB 으로 구성된 CSV 데이터를 제공하면 ChatGPT가 더 정확한 결과를 만들어 줍니다.

"FieldID FieldName DataType IsKey IsIndex IsUnique IsNullable IsAutoIncrement Length MemberNo 회원NO String String 1 0 0 0 0 36 EmailID 이메일ID String String 0 1 0 1 0 256 EmailVerifyAt 이메일확인일시 DateTime DateTime 0 0 0 0 0 8 Celluar 핸드폰번호 String String 0 0 0 0 0 20 CelluarVerifyAt 핸드폰확인일시 DateTime DateTime 0 0 0 0 0 8 MemberName 회원명 String String 0 0 0 0 0 100 PositionName 직위명 String String 0 0 0 0 0 100 DepartmentName 부서명 String String 0 0 0 0 0 100 CompanyName 회사명 String String 0 0 0 0 0 100 Roles 역할 String String 0 0 0 0 0 200 BirthDate 생년월일 String String 0 0 0 0 0 10 JoinAt 가입일시 DateTime DateTime 0 0 0 0 0 8 RetireAt 탈퇴일시 DateTime DateTime 0 0 0 0 0 8 Address 주소 String String 0 0 0 0 0 510 AddressDetail 상세주소 String String 0 0 0 0 0 100 Gender 성별 String String 0 0 0 0 0 1 TermsOfServiceConsentYN 서비스 이용약관 String String 0 0 0 0 0 1 PersonalInformationUseConsentYN 개인정보 이용동의 String String 0 0 0 0 0 1 ThirdPartyProvisionConsentYN 제3자 제공동의 String String 0 0 0 0 0 1 CreatedUserNo 생성사용자NO String String 0 0 0 0 0 36 CreatedAt 생성일시 DateTime DateTime 0 0 0 0 0 8" 로 구성된 Member 테이블 정보로 SqlServer 데이터베이스의 DDL 을 생성해줘

물론 상세한 데이터 유형과 제약 조건 및 인덱스를 고려해서 다듬을 필요가 있지만 테이블 명이나 생성하고자 하는 데이터베이스 대상을 좀 더 구체적으로 명시하거나 응용 해서 INSERT, SELECT, UPDATE, DELETE 등의 SQL 문을 생성해 줄 수 있습니다.

핵심은 비유나 은유 사용하지 말고 명확한 맥락을 가지고 주어, 목적어, 기간을 포함하는 질문하는 것이 좋습니다.

3. 응답 대상의 역할을 부여하기

동일한 결과에도 응답 대상에 따라 다르게 응답을 해야 할 때가 있습니다. 이럴 때는 다음과 같이 응답 대상에 대한 정보를 제공하면 ChatGPT가 더 정확한 결과를 제공할 수 있습니다.

... 초등학생이 이해 할 수 있게 요약 해줘

... 초보 개발자가 이해 할 수 있게 예시를 들어가면서 자세하게 설명 해줘

... 직장 상사에게 보고서를 전달하기 위해 전문가의 근거 자료를 제공해서 이해 할 수 있게 자세하게 설명 해줘

4. 결과를 기준으로 다시 물어보기

한번에 원하는 답을 얻는 건 생각보다 어렵습니다. 답변을 받은 후에 결과를 기준으로 다시 물어보면 생각치 못한 새로운 정보를 추가로 얻을 수 있습니다.

"위의 결과에서~" 시작하여 1,2,3 질문 다시하기

ChatGPT 를 이용해서 HandStack 기반 화면과 기능을 개발 하기 위해 만족할 수준은 아니더라도 단순 반복 작업을 줄이고, 효율적으로 개발을 진행할 수 있는 아이디어를 생각중인데 원하는 결과를 얻기 위해 머신러닝 학습 모델을 만드는 느낌이 드네요.


한 주간의 여정 (2024-03-18 ~ 2024-03-22)

  • ChatGPT 기반 소스 생성기를 만들 아이디어를 간단한 POC를 진행
  • 데이터베이스를 Open API로 만들어주는 openapi 모듈 개발 진행중