프롬프트는 어느 수준까지 AI가 자동으로 작성 가능할까?
- 좋은 질문과 틀린 질문의 차이를 논하며, 질문이나 프롬프트 작성 전 필요한 사전 작업의 중요성을 강조함.
- 프롬프트 작성 과정에서는 요구 사항 수집, 컨텍스트 조사, 로직 설계 등 다양한 단계가 필요함을 설명.
- 프롬프트의 자동 생성 기술 발전에도 불구하고 사용자의 상세한 요구 사항 파악을 위해 재질문 등이 필요하다는 점을 지적함.
좋은 질문 틀린 질문이란?
이 영상을 보고 당신이라면 어떻게 대답하셨을 것 같나요?
영상의 질문자는 질문을 던지면서도 어떤 결과를 기대하는지 명확히 알지 못하는 모습을 보였습니다.
이를 틀린 질문이라고 한 번 정의해보겠습니다.
GPT-4에게 물어봤지만 역시 마찬가지로 바로 계산해버리는 것을 볼 수 있습니다.
이는 인간의 단순한 질문이나 요구사항에 대해 AI가 어디까지 고민하여 답을 내놓을 수 있을지에 대한 근본적인 의문을 불러일으킵니다.
소프트웨어 개발 과정에서 코드 작성 전 필요한 작업들
그렇다면 정확히 프롬프트는 어느 수준까지 AI가 작성 가능할까?
이러한 문제의식을 바탕으로, 소프트웨어 개발 과정에서 코드 작성 전에 어떤 작업들이 필요한지 GPT에게 물어보았습니다. 아래처럼 요구사항 수집 및 분석, 시스템 설계, 프로토타이핑, 알고리즘 설계 및 흐름도 작성, Pseudocode 작성 등 다양한 단계가 코드 작성에 앞서 수행된다는 점을 확인할 수 있었습니다.
이는 프롬프트 작성 과정에서도 마찬가지입니다. Anthropic의 프롬프트 옵티마이저 (Prompt optimizer) 리뷰에서도 언급되었듯이, 프롬프트 자동 생성 기술의 발전으로 인해 머지않아 프롬프트 작성 자체가 필요 없어질 것이라는 전망이 제기되고 있습니다.
그러나 실제 프롬프트 작성에서도 코드 작성과 마찬가지로 다양한 사전 작업들이 필요할 것으로 보입니다.
요구 사항 수집 및 분석:
클라이언트 미팅, 설문지, 사용자 인터뷰를 통해 요구 사항을 파악합니다.
문제를 명확히 이해하고, 시스템이 해결해야 할 주요 기능과 목적을 정의합니다.
시스템 설계:
고수준의 소프트웨어 아키텍처를 설계합니다.
주요 구성 요소, 모듈, 인터페이스, 데이터 흐름도를 결정합니다.
프로토타이핑:
핵심 기능에 초점을 맞춘 초기 모델을 신속하게 개발하여 아이디어를 검증합니다.
알고리즘 설계 및 흐름도 작성:
각 기능에 대한 알고리즘을 구상합니다.
복잡한 로직에 대해 흐름도를 사용하여 시각적으로 표현합니다.
Pseudocode 작성:
실제 코드 작성 전, 각 알고리즘과 로직을 Pseudocode로 표현하여 구조를 명확하게 합니다.
Pseudocode는 프로그래밍 언어의 문법에 구애받지 않고 로직의 흐름을 설명합니다.
상세 설계 및 코드 작성:
Pseudocode를 기반으로 실제 프로그래밍 언어를 사용하여 코드를 작성합니다.
모듈별로 코드를 분리하고, 재사용 가능하며 유지보수가 용이한 코드를 작성합니다.
코드 리뷰:
동료 개발자와 코드 리뷰를 진행하여 코드 품질을 보증하고, 잠재적인 오류를 사전에 발견합니다.
테스트:
코드 테스트를 위해 유닛 테스트, 통합 테스트, 시스템 테스트 등을 진행합니다.
테스트 케이스를 작성하고, 자동화 도구를 사용하여 테스트를 반복적으로 수행합니다.
배포:
테스트를 통과한 코드를 생산 환경에 배포합니다.
배포 전에는 환경 설정, 데이터베이스 마이그레이션 등을 확인합니다.
유지보수 및 업데이트:
소프트웨어 운영 중 발생할 수 있는 문제를 수정하고, 사용자의 피드백을 바탕으로 기능을 개선하거나 추가합니다.
프롬프트 작성 전 필요한 작업들
그렇다면 프롬프트 작성에 앞서서는 어떤 세부 단계들이 필요할까요?
요구사항 파악은 최소한의 프롬프트이자 하나의 프롬프트 구성 요소로 정의해보겠습니다.
요구사항 파악, 컨텍스트 조사, 로직 설계, 플로우 작성, PseudoPrompt 생성 등이 프롬프트 작성 이전에 필요한 작업들로 꼽힙니다. 원하는 결과에 대한 내용을 더 세부적으로 쪼개어 프롬프트와 관련된 주제와 작업의 맥락을 제공하고, 로직 설계 단계에서는 최선의 출력 방식과 조건을 제시하는 것이 필요합니다.
요구 사항 파악:
요구사항 : 프롬프트를 통해 달성하고자 하는 구체적인 목표나 결과를 설정합니다.
컨텍스트 조사:
주제 연구: 프롬프트와 관련된 주제와 효과적인 방법론 등 필요한 내용을 파악합니다.
작업 맥락 : 작업의 구체적인 상황적 문맥을 파악합니다.
타깃 사용자 분석: 프롬프트의 소통 방식과 출력 방식 등 사용자의 기대와 필요를 파악합니다.
로직 설계:
출력 : 최선의 출력 결과와 방식을 정리합니다.
조건 설정: 하이퍼파라미터에 따른 조건을 설정합니다.
플로우 작성:
프롬프트 플로우: 프롬프트의 작동 흐름을 정리합니다.
사용자 상호작용 모델링: 사용자와의 상호작용 흐름을 흐름도로 모델링합니다.
프롬프트 생성기로 PseudoPrompt 생성
그러나 현실적으로 사용자들은 프롬프트 생성을 위해 필요한 정보를 매우 제한적으로만 제공하는 경향이 있습니다. 방대한 데이터를 바탕으로 한 학습을 통해 AI 스스로 프롬프트를 생성하더라도, 사용자의 진정한 요구사항과 기대에 부합하는 결과를 내기란 쉽지 않아 보입니다. 사람들 스스로도 자신이 진짜 원하는 바가 무엇인지 명확히 알지 못하는 경우가 많기 때문입니다.
재질문을 통한 점진적 개선
이러한 한계를 극복하기 위해서는 AI에게 프롬프트의 기대 결과를 간단히 제시하고, 필요한 내용을 재질문하도록 하는 방법이 효과적일 수 있습니다. 재질문을 통해 프롬프트 생성에 필요한 구체적인 정보들을 보완해 나간다면 보다 정확한 결과를 기대할 수 있을 것입니다. 다만 이 과정에서 사용자의 시간과 노력이 추가로 요구된다는 딜레마가 있습니다.
다시 위의 영상 질문으로 돌아와서 그렇다면, 재 질문을 하게 한다면 어디까지 현재로서는 가능할까요?
이렇게 재 질문을 하게 되면 예상한 결과를 얻기 위해 어떤 것에 대해 더 정보를 주어야 하는 지를 알 수 있습니다. 챗봇과 상호작용하며 이러한 질문에 답변을 하게 되면 처음 예상한 기대 값보다 좀 더 정확한 답을 얻게 될 수 있을 것입니다.
GPT의 성능이나 구조가 좀 더 발전하게 된다면 이 부분도 결국은 해결 할 수 있을까요?
제한적인 요구사항만으로는 완벽한 프롬프트 자동 생성이 어려움
결국 프롬프트 자동 생성 기술이 아무리 발전한다 하더라도, 사용자가 최초에 제공한 제한적인 요구사항만으로 완벽한 프롬프트를 작성하는 것은 당분간 어려울 것으로 보입니다. 제로샷이나 퓨샷 프롬프트를 활용하여 자동 초안을 생성하는 것은 가능하겠지만, 이를 통해 사용자의 진정한 의도를 정확히 반영하기란 쉽지 않습니다. AGI 수준의 AI가 등장하기 전까지는 프롬프트 제작의 완전 자동화는 요원해 보입니다.
지금도 제로샷이나 퓨삿으로 해당 부분을 채워넣게 하는 것으로 자동으로 작성하게 할 수 있습니다. 이런 식으로 말이죠.
"사과에 대한 책을 작성하는 프롬프트를 아래와 같은 형식에 맞게 만들어"
[Prompt output structure]
Role :
Goal :
Work flow :
음 저는 챗봇으로 자동 초안 작성까지만을 생각한 거였는데 말이죠?
3,4,5 번같은 질문은 제가 생각하는 결과와는 전혀 상관 없는 것들을 다시 묻고 있는 것입니다.
챗봇으로 초안을 작성하기 위한 프롬프트라는 것을 추가로 알려주고나니 이제 아직 많이 부족하지만 처음보다는 나은 프롬프트가 왼성되었습니다.
Anthropic의 프롬프트 옵티마이저 (Prompt optimizer) 리뷰 처럼 길게 프롬프트 작성 방법과 분야별 예시를 드는 방법을 쓴다면 더 효과적일 것입니다. 하지만, 이 프롬프트도 재 질문을 키워드로 요구하고 성능적인 한계가 있습니다. 결국 프롬프트 자동 생성 기술이 아무리 발전한다 하더라도, 사용자의 요구사항만으로 완벽한 프롬프트를 작성하는 것은 당분간 어려울 것으로 보입니다. 그리고 정확하고 유용한 프롬프트를 생성하기 위해서는 추가적인 질문을 하도록 하는 것이 좋습니다. 이러한 방법을 사용하면 더욱 정확하게 프롬프트를 작성할 수 있습니다.
+추가적인 생각) UI/UX를 통한 개선이 가능 할까?
재 질문 과정에서 다시 답변을 하는 것에서 다시 답변을 해야하고 시간이 늘어나는 것이 문제라면, 재 질문에 대한 답변을 입력 방식이 아니라 그 질문에 대한 답변 예시를 생성하여 그 부터 클릭하여 선택할 수 있도록 하면 불편이 조금 더 줄어들 수 있지 않을까 싶습니다.