전문성 활용으로 ChatGPT 프롬프트 만드는 법과 비전문 분야에의 적용

개발자분들이 ChatGPT를 사용하기란 쉽지않습니다. 정확하게는 사용할곳은 많은데 정확하지 않아서 두번 세번 손을 거쳐야하기 때문에 효율이 떨어지기 마련입니다. 하지만 개발이 아닌 전혀 다른 곳에 ChatGPT를 사용할때는 전문분야가 아니기 때문에 큰 효용을 얻을수있습니다. 그러나 문제는 내 전문분야가 아닐때 좋은 결과를 내는 프롬프트를 작성하기가 쉽지않습니다. 이 문제를 해결할 작은 실마리를 드리고자 사례를 공유합니다.

먼저 좋은 결과를 내주는 프롬프트를 작성하기 위한 여러가지 기법을 어떻게 활용해야 하는지를 아는것이 중요합니다. 그러나 내 전문분야가 아닌곳에 여러 기법을 적용한다 한들 이 결과물이 좋은 결과물인지 알기 힘듭니다. 그렇기 때문에 다른 분야에 사용하기 전에 먼저 내 전문분야를 통해 연습하는 것을 추천드립니다.

제가 공부중인 42서울은 C와 C++을 중심으로 CS를 공부합니다. 이 과정에서 많은 제약을 주고 코딩을 하게되는데요 그중 MinilibX라는 그래픽 라이브러리가 있습니다. 극단적으로 기능을 제한한 그래픽 라이브러리로 윈도우창을 띄우고 픽셀을 배열을 이용해 하나하나 찍고 png나 xpm정도의 이미지파일만 가져올수있는 라이브러리 입니다. 이를 이용해 ChatGPT에게 간단한 오목게임을 구현하도록 해보겠습니다. 이 과정을 통해 여러 프롬프트 기법을 연습하고 다른 전문분야에 적용해 좋은 결과를 얻어보겠습니다.

Step1 : 단순하게 요청해보기 아무런 정보없이 그냥 원하는 것을 요청하고 결과물을 보겠습니다.

컴파일을 하기 전에 확인해봐도 이 코드는 MiniLibX가 무엇인지는 알지만 사용은 하지않았습니다.

Step2. 다양한 프롬프트 기법을 사용해보기 (ex. CoT, ToT, Few-Shot Prompting 등등)

Few-Shot Prompting -



CoT(Chain-of-Thought Prompting) -

ToT(Tree of Thoughts) -


이렇게 하나의 주제와 원하는 결과를 내 전문분야를 활용해 정해두고 원하는 결과에 맞는 결과가 나오는 프롬프트 작성법을 연습해 볼수있습니다. 이렇게 하면 프롬프트를 통해 생성된 결과가 좋은 결과인지 아닌지 판단하기 쉽기 때문에 상황에 따라 내게 더 맞는 프롬프트 작성법을 연습하기에 좋습니다.

Step3 - 내 전문분야가 아닌곳에 연습한 작성법을 적용하기위해 분석하기

앞에서 작성된 내용을 바탕으로 ToT가 좋은 결과를 얻었다는것은 알수있었습니다. 하지만 다른 분야에 적용하기 위해 단순화해서 내용을 바라보고 작성된 요소를 뽑아내야합니다

제가 작성한 프롬프트를 단순화하여 작성된 요소가 무엇이었는지 보겠습니다.

첫번째 - 목표(요구사항)

[목표]
MiniLIbX를 이용해서 C언어로 오목게임을 만들어줘.

간결하고 명확한 목표는 프롬프트의 성능을 향상시킵니다.

두번째 - 프롬프트 기법에 따라 달라지는 Ai가 결과를 생성하는 방향성

ToT
아래 제시한 내용을 바탕으로 전문가의 입장에서 작성해줘.
첫번째 전문가는 C언어 그래픽 개발자로 코드를 작성해줘.
두번째 전문가는 C언어 게임 개발자로 첫번째 전문가의 코드가 동작하도록 수정해줘.
세번째 전문가는 C언어 컴파일러로 작성한 코드가 컴파일이 가능한지 확인하고 오류를 알려줘.
세명의 전문가는 내가 제시한 [목표]를 달성하기위해 오류가 발생할때마다 코드를 다시 작성하고 부가 설명은 하지마.
CoT(ZoT)
아래 제시한 내용을 바탕으로 차근차근 작성해.

세번째 - 추가 정보(예시)

오목 게임을 MiniLibX를 이용해 만들기 위해 필요한 것들을 나열하자면 다음과 같습니다:

1. 15x15 크기의 보드를 그리는 것. 이는 **`mlx_pixel_put`** 함수를 사용하여 수행될 수 있습니다.
2. 사용자의 마우스 클릭 이벤트를 처리하는 것. 이는 **`mlx_mouse_hook`** 함수를 사용하여 수행될 수 있습니다.
3. 사용자가 클릭한 곳에 돌을 그리는 것. 이 또한 **`mlx_pixel_put`** 함수를 사용하여 수행될 수 있습니다.
4. 돌이 가로, 세로, 대각선 방향으로 5개가 연속되었는지 확인하는 것. 이는 별도의 함수를 작성하여 수행될 수 있습니다.
5. 오목이 완성되었을 때 승리 메시지를 출력하는 것. 이는 **`mlx_string_put`** 함수를 사용하여 수행될 수 있습니다.

MiniLibX :
MiniLibX는 macOS와 Linux에서 사용할 수 있는 단순한 그래픽 라이브러리로, 주로 C나 C++로 작성된 프로그램에서 그래픽 관련 작업을 수행할 때 사용됩니다. 이 라이브러리는 42 Paris (formerly 42 School)에서 개발되었습니다. 주로 유닉스 기반 시스템에서 그래픽 환경 없이 C 프로그래밍으로 그래픽 애플리케이션을 개발할 수 있도록 도와줍니다. MiniLibX는 X Window System의 간소화된 버전으로 볼 수 있으며, X Window System 라이브러리를 사용하여 그래픽 작업을 처리합니다.

MiniLibX는 간단하고 직관적인 API를 제공하여 다음과 같은 함수를 포함하고 있습니다:

1. **`mlx_init`**: MiniLibX 라이브러리를 초기화합니다.
2. **`mlx_new_window`**: 새로운 창을 생성합니다.
3. **`mlx_pixel_put`**: 지정된 좌표에 픽셀을 그립니다.
4. **`mlx_loop`**: 이벤트 루프를 시작합니다. 이벤트 루프는 창의 닫기 버튼 등의 이벤트를 감지하고 처리하는 역할을 합니다.
5. **`mlx_loop_hook`**: 루프를 실행하는 동안 호출될 함수를 등록합니다. 이 함수는 주기적으로 호출되어 애니메이션과 같은 반복 작업을 처리하는 데 사용됩니다.
6. **`mlx_key_hook`**: 키 이벤트(키보드 입력)를 처리하는 함수를 등록합니다.
7. **`mlx_mouse_hook`**: 마우스 이벤트를 처리하는 함수를 등록합니다.
8. **`mlx_hook`**: 다양한 이벤트를 처리하기 위한 범용 함수를 등록합니다.
9. **`mlx_clear_window`**: 창의 내용을 지웁니다.
10. **`mlx_destroy_window`**: 창을 닫고 관련된 자원을 해제합니다.

위의 함수들은 MiniLibX 라이브러리를 사용하여 간단한 그래픽 애플리케이션을 작성할 때 가장 자주 사용되는 함수들입니다. 그 외에도 몇 가지 추가적인 함수들이 더 있을 수 있습니다. 따라서 MiniLibX를 사용하려면 해당 라이브러리의 문서와 예제를 참조하는 것이 좋습니다.

오목:

오목은 전통적인 전략 보드 게임으로, 두 명의 플레이어가 번갈아가며 돌을 놓아 15x15 크기의 게임 보드에서 승리를 결정하는 게임입니다. 오목은 동방에서 기원한 게임으로 중국에서는 "고" 또는 "위지"라고도 불립니다.

규칙은 간단합니다. 흑과 백이라고 하는 두 가지 색상의 돌이 사용되며, 흑이 먼저 돌을 놓습니다. 각 플레이어는 돌을 놓을 위치를 선택하여 게임 보드에 둡니다. 돌은 가로, 세로, 또는 대각선 방향으로 연속된 5개의 돌을 놓으면 승리합니다. 이렇게 연속된 5개의 돌을 만드는 것을 '오목'이라고 합니다.

플레이어들은 자신의 돌을 놓음으로써 상대방이 연속된 5개의 돌을 만들지 못하도록 방해하는 전략을 사용해야 합니다. 경기는 두 플레이어가 돌을 놓을 수 없게 될 때까지 계속됩니다. 보드가 모두 차거나 오목이 만들어지면 게임이 종료됩니다.

오목은 단순한 규칙과 높은 전략성 때문에 수백 년 동안 사랑받고 있으며, 전 세계적으로 인기 있는 게임 중 하나입니다. 오목은 두 명의 플레이어 사이에서 진행되는 대국은 물론, 전문적인 경기나 기계 학습과 인공 지능을 테스트하는 분야에서도 활용되고 있습니다.

Step4. 분석한 내용을 다른 분야에 적용해보기.

최근 저는 취미로 자전거를 타기 시작했습니다. 고가의 로드바이크를 샀고 이후 대회도 나갈 예정이라 체계적인 훈련법으로 훈련을 하고싶습니다. 우리의 똑똑한 친구 ChatGPT를 제 개인 트레이너로 고용해 보겠습니다.

[목표]

나는 로드사이클을 지금보다 더 잘타고싶어. 앞으로 여러 대회도 참가할 예정이야. 이를 위해 실제 사이클리스트의 훈련법을 통해 실력을 향상시키고싶어. 나는 로드바이크를 타고있고 사이클컴퓨터와 파워미터를 가지고있어. 과학적이고 체계적인 방식을 이용한 실제 사이클리스트의 훈련법을 알려줘.

3명의 전문가의 입장에서 조언을 해줘.

  • 첫번째 전문가는 사이클리스트 트레이너야 뚜르드프랑스처럼 장거리 라이딩의 기록을 단축하고 지금보다 더 빠르게 탈수있는 훈련법을 알려줘

  • 두번째 전문가는 스트레칭 전문가야 부상을 방지하고 회복속도를 높이기위한 스트레칭을 알려줘.

  • 세번째 전문가는 스포츠 영양학자야 훈련후의 회복속도를 높이고 훈런 전후의 건상상태를 개선하기 위한 식품을 추천해줘.



이처럼 짧은 시간에 내 전문분야가 아닌곳에 프롬프트를 활용하는 법을 적용하는 가장 빠른 방법은 기존에 내 전문분야에서 먼저 연습하는 것이라고 생각합니다.


6
3개의 답글

👉 이 게시글도 읽어보세요