배우에게 대사와 동작을 알려주거나 강연자에게 연설문을 보여주는 것을 프롬프트(Prompt)라고 한다. 또는 컴퓨터와 대화를 위하여 터미널의 셀(Shell) 상태에서 사용자의 명령을 기다리며 화면에 보여주는 작은 기호나 짧은 메시지를 또한 프롬프트라고 한다.
그런데 이러한 프롬프트와 엔지니어링이란 단어가 결합하여 요즘 인공지능의 핫 키워드가 되었다. 컴퓨터에서 C, Java, Python 등의 프로그램 언어를 이용하여 오류 없는 코드를 만들어 실행하고 의도했던 결과를 얻게 되는 과정을 프로그래밍 또는 코딩이라고 한다. 여기에 사용되는 프로그램 언어는 엄격한 문법이 있고, 그 문법에 맞지 않게 작성된다면 오류 메시지와 함께 실행이 멈추게 된다.
이러한 소프트웨어 프로그램 언어들은 인공어(人工語)에 속한다. 그런데 모국어와 같은 일상의 언어도 나름 엄격한 규칙을 갖고 있지만 비문법적으로 대화를 해도, 화자의 의도를 파악하는 데는 큰 어려움을 느끼지 못한다. 이러한 언어를 자연어(自然語)라고 한다. 그렇다면 철저한 문법 기반의 인공어인 컴퓨터 프로그램 언어와 컨텍스트에 의미를 둔 문법적 자유도가 높은 자연어와의 대화가 가능한 것인가?
ChatGPT가 의미 있는 결과를 보여주기 전까지는 분명 불가능했으나, 지금은 충분히 가능성을 보여주고 있고, 그 수단의 한 방법으로 ‘프롬프트’가 있는 것이다. ChatGPT 즉 생성형 AI는 신경망 모형, 기계학습, 딥러닝, 트랜스포머, 강화학습, 대용량 디지털 데이터, GPU 기반의 클라우드 컴퓨팅 등 현존하는 컴퓨팅 기술의 총합체로 인공지능 서비스를 상상의 영역에서 현실의 공간으로 끌어냈다.
ChatGPT의 언어 모델인 LLM은 챗봇을 이용한 고객지원, 다국어 번역, 콘텐츠 제작, 법률 자문, 소프트웨어 개발, 데이터분석 등 너무나 많은 서비스를 만들어 낼 수 있는 발판의 역할을 하고 있다. 그런데 이러한 AI 서비스들은 LLM 이전에는 프로그램 언어를 이용하여 로직을 구현하거나, 데이터 기반의 기계학습으로 가능했지만, 이제는 프롬프트의 도움을 받아, 또는 프롬프트만으로 서비스를 구현할 수도 있게 되었다.
자연어로 프롬프트를 구성하여 ChatGPT와 채팅을 하면 나름대로 의미 있는 결과를 보여주지만, 인간 간의 대화처럼 눈을 마주하거나 제스처를 활용한 대화가 아니기에 의도를 명확하게 파악하는 데는 분명 한계가 있다. 바로 이 부분에 엔지니어링이 들어가는 것이다.
프롬프트 엔지니어링의 방법에는, 첫째, 제로샷 러닝 프롬프트가 있다. 아무런 데이터나 예시를 주지 않고 서치 엔진을 이용한 키워드 검색과 같은 방식으로, 검색 결과의 정확도가 낮고 부정확한 응답을 얻을 수 있다. 두 번째는 원샷과 퓨샷 러닝 프롬프트로 한 개 이상의 예시를 제시하면서 ChatGPT에 명령하는 것으로, 나름 의미 있는 결과를 가져올 수 있다. 세 번째는 CoT(Chain Of Thought) 프롬프트이다. 마치 수학 문제를 풀 때 단계적으로 식을 전개하여 결과를 얻는 것처럼 질문과 답변이 짝을 이루게 하고 마지막에 최종 질문을 하는 방법으로 앞의 두 방법보다 좀 더 명확한 결과를 얻게 된다.
그리고 프롬프트 형식은 다양하지만 기본적으로는 다음과 같은 프롬프트 구성을 통해 의미 있는 결과를 얻을 수 있다. ① 명확한 역할과 지시문, ② 상황에 맞는 예시, ③ 처리해야 할 작업의 단계 제시, ④ 출력 결과물의 형식이 그것들이다.
소프트웨어를 개발하기 위해 프로그램 언어로 논리적·문법적 오류가 없는 코딩을 해야 하지만, 프롬프트 엔지니어링이 더욱 발전하면, 프롬프트 자체가 소프트웨어를 개발하는 수단이 될 수도 있다. 현재 PromptBase, PromptHero 등에서는 자연어로 작성된 프롬프트가 거래되고 있고, 프롬프트 엔지니어를 찾는 구인 광고를 쉽게 찾아볼 수 있다.
기업은 보안상의 이유로 ChatGPT, Claude, Gemini 등의 서비스를 사내에서 자유롭게 사용할 수 없는 곳이 많다. 그러나 오픈되어 있는 LLM의 파인튜닝, LangChain 프레임워크, Vector DB 등을 이용하여 사내 인프라를 만들어 Chat 서비스를 구축한다면, 보안 이슈 없이 사내에서 도메인에 특화된 서비스를 만들어 활용할 수도 있다.
이제 생성형 AI는 이미지나 음악을 만들어 보는 흥미 위주를 넘어, 될까 말까 하는 가능성의 의심을 넘어, 사내에 어떤 서비스를 만들어 적용할 것인가를 생각해야 할 단계이고, 그 시작이 바로 프롬프트 엔지니어링이라고 할 수 있다.
