본문 바로가기

GPT 활용법

ChatGPT로 원하는 함수 생성하기

GPT로 원하는 함수 생성하기

 

ChatGPT로 원하는 함수를 어떻게 생성할까?

안녕하세요 앱지식나눔입니다. 오늘은 코딩에서 가장 많이 생성하는 함수를 ChatGPT를 통해 만들어보겠습니다. 함수는 목적성이 뚜렸한 만큼 패턴화되어 있거나 단순 반복적이지 않습니다. 그래서 제가 직접 함수를 프롬프트를 통해 만들어보면서 감을 익히셨으면 좋겠습니다. 그러면 오늘도 시작해보겠습니다~~!

 

이전에 ChatGPT를 통해 코드 에러를 수정하는 팁에 대해서 살펴보았습니다. 오늘은 수정이 아닌 생성을 해보겠습니다.

[GPT 활용법] - ChatGPT를 활용하여 에러 코드 수정하기

 

ChatGPT를 활용하여 에러 코드 수정하기

에러 코드를 ChatGPT로 잡을 수 있을까? 오늘은 ChatGPT를 사용해서 에러 코드를 잡는 방법에 대해서 설명하겠습니다. 전문적인 기술이 아닌 저만의 팁이니 간단하게 보셔도 될거 같습니다. 자신의

app-developement-sharing-forum.tistory.com

 


 

이번 챕터는 퀴즈로 먼저 시작하겠습니다.

 

 

Step1

 

<질문>

랜덤한 수의 자릿수에 맞게 10부터 1000까지 차이 나는 수를 나열하는 배열을 리턴하는 함수 작성한다.

(ex: random = 549 이면 0, 100, 200, 300 … 900,1000 이 생성되는 배열)

 

 

문제에 대한 설명을 먼저 하겠습니다. 0부터 만까지 범위 중에서 하나의 랜덤한 수를 선정합니다. 그 수가 예를 들어 549이면 100의 자리 수입니다. 549는 0부터 1000사이에 있는 수이지요. 그러면 0,100,200,300…1000까지 11개의 인덱스를 가지는 배열 리턴되어야합니다. 그럼 7777은 어떨까요? 1000 자리 수이니 0부터 만 사이에 속합니다. 따라서 배열에는  0, 1000, 2000부터 10000까지 11개가 속해야하죠. 이번 챕터에서는 어떤 시행착오를 가지고 원하는 답을 GPT로부터 얻을 수 있을지 집중해서 보시면 될거 같습니다.

 

<대답>

100개 미만의 랜덤한 숫자가 있으면 0부터 100까지 10씩 차이나는 배열 만들어주고 1000개 미만이면 100씩 차이, 10000개이면 1000개씩 차이나는 배열을 만들어주는 함수를 swift 코드로 구성해줘.

 

질문에서 100, 1000, 10000일때 10, 100, 1000씩 차이가 나는 배열을 만들어달라고 요청했습니다. 그럼 GPT가 보여준 답을 보겠습니다.

 

GPT가 제공한 코드

 

1부터 10000까지 수 중에서 랜덤한 수를 randomNumberCount라는 변수로 설정하는 것까지 잘 했습니다. 그리고 각 자리 수에 따라 difference 변수에 얼마씩 차이가 나는지도 잘 명시했습니다. 또한 차이난 수를 배열에 저장하는 것까지 잘 했습니다.

 

 

Step2

<질문>

그러면 이것과 비슷한 함수를 생성할 거야.  1부터 10000까지가 아니라 1부터 무한대에 가까운 수를 랜덤하게 10개 생성하고 그 자릿수에 따라서 10, 100, 1000처럼 차이가 나는 10개의 인덱스를 가지는 배열을 리턴하는 함수를 swift로 작성해줘.

 

질문을 읽어보면 약간 이상한 점이 있습니다. 어디가 잘못되었을까요? 1부터 무한대 수 10개를 생성해달라고 했습니다. 우리는 랜덤한 수 한 개만 뽑고 그 수의 자리값을 판단해야하는데 조건부터 잘못된 질문이였습니다. 제가 예전부터 계속 말하던 것이 있습니다. Garbage In, Garbage Out. 잘못된 질문에 대한 GPT 대답은 어떨까요?

 

잘못된 조건으로 잘못된 값이 생성됨

 

 

말 그대로 1부터 Integer가 가능한 최대 값 중에서 랜덤한 수 10개를 뽑아버렸습니다. 그리고 질문 중에 ‘이것과 비슷한 함수'라는 말 때문에 결국 100, 1000, 10000 자리수만 판단한 코드로 짜여졌습니다. 그럼 질문을 다시 해야할거 같습니다. 다음 질문을 보시죠.

 

 

<질문>

1부터 무한대에 가까운 랜덤한 값을 선택하여 자릿수를 계산한 후  아래 예시와 같은 방식으로 값을 리턴하는 함수를 swift로 만들어줘.

random아 50이면 [0,10,20,30,40...100] random이 58492이면 [0,10000, 20000, 30000, 40000, 90000, 100000]

 

위 질문은 아까의 질문과 다릅니다. ‘1부터 무한대까지 랜덤한 값을 선택하여’ 라는 말을 통해 랜덤한 수 하나를 선택할 겁니다. 그리고 ‘자리수 계산'을 통해 difference 변수가 구해질겁니다. 그리고 가장 다른 점은 예시 정답을 GPT에게 제공한 점입니다. 우리는 머리 속에 어떤 방식으로 값을 구해서 리턴할지 알고있지만 GPT는 아직 백지인 상태입니다. 따라서 우리가 원하는 조건을 적고 예시 정답 세트까지 제공하면 훨씬 정확하게 사용자의 의도를 파악하고 답을 해줍니다. 그러면 GPT의 답을 보겠습니다.

 

수정된 GPT의 코드

 

 

digits으로 매개변수로 받은 수의 자릿수를 구하고 수의 차이를 지수로 풀었습니다. 제가 생각한 코드 방식과 아예 다른 방식을 사용했습니다. 일단 digits 변수를 문자열로 바꾸고 문자 갯수를 세어서 자릿수를 구했습니다. 이 부분은 생각도 못한 부분이였습니다. 마지막으로 예시로 사용하는 코드도 제공하여 제가 원하는 답을 제공하는 함수인 것을 알 수 있었습니다. 하지만 약간 의도한 것과 다른 부분이 있었습니다. 저는 함수의 매개변수로 랜덤한 수를 받는 것을 생각하지 않았습니다. 함수 안에서 랜덤한 수 하나를 구하는 것을 원했습니다. 그래서 GPT에게 약간 조건을 추가했습니다.

 

 

Step3

<질문>

방금 대답한 코드에 random을 매개변수로 받지 말고 함수 안에서 1부터 무한한 수 중 하나를 선언해줘.

 

 

질문 그대로 매개 변수로 받지 말고 함수 안에서 랜덤한 수 하나를 만들라고 시켰습니다. 그리고 이미 GPT가 정답에 근접한 함수를 만들었기 때문에 굳히 함수 전체를 프롬프트에 입력하지 않고 ‘방금 대답한 코드'로 지칭하며 GPT의 가장 최신 대답을 가리켰습니다. 그럼 GPT는 추가된 요청을 받아들여 수정된 함수를 제작했을까요?

 

맥락을 이해하여 GPT가 코드를 작성

 

 

네, digits, difference 변수 뿐만 아니라 random 변수도 만들었습니다. 그리고 함수의 매개변수도 삭제되었습니다. 질문에 의도한대로 잘 만든 것을 확인할 수 있었습니다.

 

이번 장의 핵심이자 가장 중요한 포인트는 이미 내가 원하는 답 즉 정답 세트를 GPT에게 제공하면 원하는 답을 얻을 확률이 올라간다는 점입니다.  마지막으로 ‘방금 대답한 코드' 처럼 최근 GPT 답을 이용할 때 쓰는 문법이니 이것도 숙지하면 좋을 것 같습니다. 이상 오늘 글을 마치겠습니다.