brunch

You can make anything
by writing

C.S.Lewis

by 류한석 Mar 01. 2024

무한한 맞춤형 출력을 생성하는 “무한 생성” 패턴

일관성 있는 출력 자동화 방법

(참고 사항: 브런치북이 최대 30화 글만 담을 수 있는데, 모두 차서 시즌2로 새롭게 시작합니다. 시즌1은 링크에서 확인하실 수 있습니다.)


무한의 여정에서 가장 중요한 것은 첫걸음이 아니라, 계속 걷는 것이다.


“무한 생성(Infinite Generation)” 패턴은 사용자가 같은 프롬프트를 반복해서 입력하지 않고도 계속해서 대형언어모델의 출력(Output)을 자동 생성하는 방법입니다. 이를 이용하면, 간단한 지시만으로 사용자의 요구사항과 조건에 맞는 결과물을 계속 출력할 수 있습니다.


프롬프트 예시로 살펴보죠.



프롬프트


#입력

[단위]= 10


#처리

당신은 “데이터 무한 생성 기계”로 행동합니다. 나의 요구사항에 맞는 데이터 형식과 내용을 세심하게 파악하여, 가장 적합하고 유용한 데이터를 무한 생성하는 것이 당신의 임무입니다. 당신의 광범위한 지식과 창의력을 활용하여, 나의 요청에 부합하는 맞춤형 데이터를 생성합니다. 코드 과정 없이 바로 답변해 주세요.

## 내가 “C”라고 요청하면, 앞서 생성한 것과 중복되지 않는 데이터를 계속 생성합니다.

## 내가 “E”라고 요청하면, 데이터 생성을 종료합니다.

## 지금부터 하단의 출력에 맞는 데이터를 한 번에 [단위]개씩 출력해 주세요.


#출력

[국가명], [전통 음식명]: [설명]=50자 이내


챗GPT(GPT-4)


1. 대한민국, 김치: 발효된 배추와 고추가루로 만든 전통 음식

2. 일본, 스시: 신선한 생선과 밥을 식초로 맛을 낸 음식

3. 이탈리아, 피자: 토마토 소스와 치즈가 올라간 오븐에 구운 빵

4. 프랑스, 크레페: 얇게 부친 밀가루 반죽에 다양한 토핑을 더한 간식

5. 멕시코, 타코: 옥수수 또는 밀가루 토르티야에 고기와 야채를 넣은 음식

6. 인도, 커리: 다양한 향신료를 사용해 만든 진한 맛의 요리

7. 태국, 팟타이: 쌀국수에 새우, 땅콩, 채소 등을 넣고 볶은 태국 음식

8. 스페인, 파에야: 해산물, 고기, 쌀을 사프란과 함께 조리한 전통 요리

9. 중국, 짜장면: 면에 콩고기 소스를 얹은 중국식 요리

10. 러시아, 보르쉬: 비트와 소고기로 만든 러시아 전통 스프


사용자


C


챗GPT(GPT-4)


11. 그리스, 무사카: 가지, 감자, 고기 소스를 겹겹이 쌓아 오븐에 구운 요리

12. 터키, 케밥: 고기를 꼬치에 꽂아 불에 구워낸 중동 지역의 전통 음식

13. 베트남, 쌀국수: 얇은 쌀국수에 소고기나 닭고기를 넣고 허브와 함께 끓인 국물 요리

14. 독일, 소시지: 다양한 종류의 고기를 갈아 소금, 향신료와 섞어 만든 음식

15. 브라질, 페조아다: 콩, 돼지고기, 소고기 등을 함께 끓여 만든 전통적인 스튜

16. 아르헨티나, 아사도: 대형 그릴에서 소고기를 천천히 구워내는 바베큐 요리

17. 모로코, 타진: 독특한 모양의 그릇에서 만들어진 스튜, 다양한 향신료 사용

18. 이집트, 쿠슈리: 렌즈콩, 쌀, 파스타를 섞어 만든, 소스로 맛을 낸 요리

19. 캐나다, 푸틴: 감자튀김 위에 치즈 커드와 그레이비 소스를 얹은 음식

20. 호주, 비트마이트: 효모 추출물로 만든 짙은 갈색의 스프레드, 주로 토스트에 발라 먹음


사용자


E


챗GPT(GPT-4)


데이터 생성을 종료합니다. 요청하신 국가별 전통 음식에 대한 정보를 제공해 드렸습니다. 다른 요청이 있으시면 언제든지 말씀해 주세요.


이번 프롬프트는 GPT-3.5, 클로바, 제미나이에서도 작동하긴 합니다만, 추론 능력이 부족한 모델의 경우에는 이런 함수형 프롬프트 실행을 어려워하는 경향이 있습니다. 결과가 제대로 나오지 않을 때는, 서술형 프롬프트로 고쳐서 이용하도록 합니다. 응답 무작위성으로 인해 원치 않은 답변이 나올 경우에는 Regenerate 해서 이용하세요.


이처럼 무한 생성 패턴을 이용하면, 매번 프롬프트를 다시 입력하는 번거로움 없이, 일련의 출력을 효율적으로 생성할 수 있습니다. 이 패턴의 기본 문구는 다음과 같습니다.


[출력]을 한 번에 [단위]개씩 무한 생성해 주세요.


이러한 기본 문구를 기반으로, 사용자의 필요에 따라 적절한 내용을 작성하면 됩니다. [출력]에는 원하는 데이터 형식과 내용을 지정하고, [단위]에는 모델이 한 번에 출력할 레코드 개수를 지정합니다. 한 번에 너무 많은 양의 데이터를 생성하려고 하면, 모델에 과부하가 걸릴 수 있습니다. 즉, 데이터의 품질이 떨어지거나 오류가 발생할 수 있으므로, 출력의 양을 제한함으로써 모델의 안정성을 유지하고 정확한 답변을 유도하는 게 좋습니다.


예시의 프롬프트에 포함된 “코드 과정 없이 바로 답변해 주세요.”라는 문구는 챗GPT가 데이터 생성 과정을 파이썬 코드로 작성하는 경향이 있는데, 이를 하지 말라는 요청입니다. 클로바나 제미나이에서는 굳이 필요 없는 문구입니다.


예시에서 “C”를 입력하는 경우의 조건부 처리도 꼭 필요한 것은 아닙니다. 해당 지시가 없어도 “계속”을 입력하면 출력을 계속 진행하는데, C라고 하면 더 간편하기 때문에 삽입한 겁니다. “E”의 경우도 마찬가지입니다. 이처럼 필요에 따라 적절한 지시를 포함하여 모델을 효율적으로 제어하면 편합니다.


무한 생성 패턴은 다양한 자동화 작업에 적용할 수 있는데, 특히 데이터나 콘텐츠 생성 시의 반복적인 작업을 줄여 시간을 절약하고 작업의 효율성을 높여줍니다. 또한 특정 포맷이나 템플릿을 유지하면서 사용자 맞춤형으로 일관된 출력을 생성할 수 있다는 것도 장점입니다.


그렇지만 유의할 사항이 있습니다. 출력을 계속 생성하게 되면, 시간이 지남에 따라 비슷비슷한 결과물을 반복적으로 생성하기 시작하고 출력 결과가 사용자의 기대와 점점 멀어질 수 있습니다. 또한 대형언어모델의 특성상 환각에 의해 정확하지 않은 결과를 생성할 위험도 있습니다. 그러므로 데이터 성격과 사용자 용도에 따라서 생성 결과를 검증해야 할 수도 있습니다.


이러한 무한 생성 패턴의 한계를 인식하고 모델의 출력을 주의 깊게 모니터링하면서, 필요한 경우 적절한 피드백과 조정을 통해 최적의 결과를 얻을 수 있도록 해야 합니다. 언제나처럼 AI 응답의 품질은 사용자의 프롬프트 작성 및 튜닝 역량에 달려 있다고 볼 수 있겠습니다.


AI는 데이터의 무한한 바다를 항해하는 거대한 배다;
우리는 그 배에 탑승해 새로운 세계를 발견한다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari