Intelligent Conversational Software Development – Prompt (3/)
프롬프트 작성은 중요하다. 너무 완벽하게 하려고 하면 시작도 못 할 수 있다. 시작은 해라. 간단하게. Start Simple
중요하니까 시간과 노력을 들여라. 한 방에 끝낼 수 있다면 설계라는 것 까지 하겠나? 반복해야 한다. 반복 효과가 잘 나오려면 잘 다듬는 과정을 따라야 한다. 잘 다듬는 과정이 제시되어야 겠네. prompt engineering에서 해야 하는 거.
llm은 언어 모델로 기본적으로 앞의 문장이 주어지고 다음 단어가 나올 확률을 예측하는 것이다. 프롬프트는 llm에게 주어지는 입력 문장이니 llm에겐 이건 자신이 해야 할 일의 가이드와 같다.
일반적으로 질의하거나 지시하면 일반적으로 답하거나 수행하는 게 맞지. 답이나 수행이 구체적이길 원한다면 구체적으로 질의하거나 지시해야 한다. Specificity
답변이나 수행이 구체적이길 원하면 llm의 유일한 입력인 프롬프트를 구체적으로 작성해라.
llm은 엄청나게 많은 문장으로 훈련했기 때문에 패턴이 있다고 할 수 있다. 어떤 단어가 나오면 어떤 단어나 문장이 나올 지 예측해 볼 수
있다. 원하는 응답이 나오게 하려면 어떤 단어를 어떻게 작성하면 좋을 지를 생각해야 한다.
있다. 원하는 응답이 나오게 하려면 어떤 단어를 어떻게 작성하면 좋을 지를 생각해야 한다.
대단히 많은 데이터로 훈련 했으니, 필요하면 컨텍스트를 주어 좀 더 구체화할 수 있다.
context, outcome, length, format, style에 대해, specific, descriptive detailed하게
응답이 어떠해야 하는지를 구체적으로 원하는게 있을 수 있다. llm의 유일한 입력이 프롬프트니 응답이 어떠해야 하는지(스타일 포함)도 여기에 작성해야 한다. 예시가 있다는 것은 구체적이라는 거지. 원하는 결과가 분명하다면 당연 예시를 포함해야겠지. 응답도 그렇고.
구조화된 응답을 원할 경우 많이 사용하는 형식은 json이다. 응답의 경우 복잡하다면, 예시가 있는 처리 과정을 작성하는게 효과적일 경우도 있다.
돈 들어가는게 없고 기다릴 만한 시간이 충분하다면 프롬프트나 응답이 길어도 상관이 없겠지만 현실적으로 이건 비용이니 불필요한 것(부정확하고 불명확한 것)을 제거하는 최적화 과정 필요하다.
질의 응답은 질의를 잘 작성하면 된다. 지시의 경우는 동사를 잘 작성해야 하고, llm이 잘 할 수 있는 일이어야겠지. llm은 언어모델이 nlp 태스크는 잘 한다고 보고. 요즘 llm은 generated에 집중하고 있으니 text, image, audio, video를 생성하는 일을 시키는 게 주가 되겠지.
뭔가 생성하는 구체적인 일은 llm이 어떤 데이터로 훈련 되었는지에 따라 응답 수준이 달라지겠지. 구체적인 지시에 사용되는 단어들을 바꿔가면서 반복적으로 해야 겠네.
### 나 “””를 사용해서 지시와 컨텍스트를 구분해 준다. 이건 chatgpt 사용의 경험에서 나온 거 겠지만, 후발주자들은 선발주자를 따라하니 이런 것은 다른 llm에도 반영될 거니 기억해 두는 것이다.
물어보는거나 시키는 일이 정확하지 않다는 것은 없을 것 같지만, 절차나 내용이 어렵고 복잡하면 그럴 수 있다. 마지막 단계에서 체크리스트를 가지고 체크해 나가도록 하는게 좋다. Avoid Impreciseness
이것도 chatgpt에서 나온 경험이겠지만 앞으로 llm들도 그럴거니 기억해 두자. 하지 말아야 할 일보다 해야 할 일로 작성하라는거. To do or not to do?
컴퓨터에게 명령을 내리고 컴퓨터가 시킨 일을 실행했다면, 지금의 ai는 llm에게 명령을 내리고 llm이 시킨 일을 실행하도록 하는 것이다.
자연 언어를 사용해서 대화형 명령과 실행이 되니 특별한 프로그래밍 언어가 필요하지 않다. llm이 일을 잘 하도록 하게 하는 방법을 프롬프트 엔지니어링이라고 하고 정리해 나가는 중이다. 대표적인 알고리즘들을 정리해가고 있다고 할 수 있다.
llm이 수행의 기본 요소가 된다면, 프로그래밍은 프롬프트 작성이 되고, 프로그래머들은 배울 것이 llm의 특성, 프롬프트 작성 관련 절차와 알고리즘이 될 것 같다. 도구 또한 플레이 그라운드와 같은 반복 점증으로 프롬프트를 작성하기 위한 것과 프롬프트 작성 과정을 지원하고 알고리즘 적용을 돕는 도구 정도면 충분할 것 같다.
이건 반 자동화 단계에서 이고, 프롬프트 생성도 생성이니, 생성 llm을 사용하면 프로그램 작성이 완전 자동화되겠다.