LLM 모델 활용: O1 프롬프트 작성 가이드

O1 프롬프트, 어떻게 작성하는 것이 좋을까요? 최근 DeepSeek의 여파로 추론이 가능한 LLM 모델에 대한 관심이 높아졌습니다.
그러나 정작 기존에 OpenAI사에서 발표된 O1과 같은 고성능 LLM 모델을 어떻게 효율적으로 사용할 지에 대해서는 논의가 부족한 것 같습니다.
최근 Deeplearning 사가 OpenAI사와 공동으로 준비한 O1 교육내에서 공유된 O1 프롬프트 를 잘 작성하기 위한 기본 4가지 원칙에 관련된 포스팅입니다.
O1 프롬프트 를위한 4가지 원칙
O1 프롬프트를 작성하기 위해서는 크게 4가지 원칙을 지킬것을 제안합니다.

- 단순하고 직설적일 것.
- 직접적으로 해야 할 일을 지시하는 것이 O1 모델의 결과물을 좋게 만듭니다.
- 직접적인 CoT를 제안하지 말 것.
- CoT는 생각의 사슬로 LLM 모델에게 원하는 출력을 생성하기 위하여 사람이 수행해야 할 일들을 자세하게 분해하고 각 일들의 선 후 관계및 입력과 산출물을 명시하여 LLM이 업무를 지시한 사람의 의도 대로 답을 만들도록 하는 프롬프팅 방법입니다.
- O1 모델의 경우는 CoT를 자체적으로 생성할 수 있도록 강화학습을 한 모델인 만큼 해당 단계를 LLM자체에 맞겨야 합니다.
- 프롬프트 문장을 구조화 할 것.
- 일반적인 문장형태의 프롬프트 대신, 보고서나 논문과 같이 구조화된 프롬프트 입력이 더 효과적으로 동작합니다.
- 프롬프트를 구조화 하는방식은 XML이나 Markdown문서와 같이 별도의 포맷을 사용하는 것이 효과적입니다.
- 원하는 출력형식이 있다면 설명하지 말고 예를 들것.
- 이 방식은 사람에게도 잘 동작하는 업무 지시 방식입니다.
단순하고 직설적인 프롬프트

강의에서 예제로 보여주는 아미노산의 분자구조를 캐릭터로 표현해 주는 파이썬 코드를 출력하는 작업의 경우, 사람이 직접 단계별로 수행해야 하는 일의 지시사항과 출력사항을 상세하게 기술한 프롬프트를 사용하면 필요없는 추가적이고 반복적인 정보를 제공합니다.
그러나, 단순히 원하는 출력만 기술한 프롬프트로 업무를 지시하면 중간 생각과정을 스스로 생성합니다.
각 단계별 출력을 보여 주며 원하는 결과를 훨씬 빠르고 단순하게 얻을 수 있습니다.
물론 필요한 경우 지시를 해야 하는 업무의 특성상 세밀하고 원하는 생성물에 대해 자세히 설명하는 것이 필요할 수도 있습니다.
그러나 항상 가장 단순한 형태의 지시 프롬프트로 시작을 해야 한다고 강조합니다.
구조화된 프롬프트

구조화된 프롬프트를 예로 보여 주기 위해 O1으로 하여금 고객대응 직원의 입장에서 이메일을 작성하는 예를 설명합니다.
고객대응 직원 역할을 수행하도록 지시하는 프롬프트를 보는 순간 의아한 생각이 들었습니다.
문장이 길었기 때문에 단순하지 않았고 여러 단계로 나뉘어져 있었기 때문에 직접적인 CoT를 제안하지 말라고 한 앞의 원칙에 어긋난다는 생각이 들었습니다.
하지만 프롬프트를 자세히 살펴보니 위의 원칙들과 어긋나지 않다는 생각을 하게 되었습니다.
이유는 고객대응 직원으로서의 규정, 환불 규칙, 대응 자세 등등 모든 필요한 정보들이 서로 겹치지 않도록 항목별로 군더더기 없이 정리되어 있던 프롬프트 였습니다.
아울러 작업을 세분화하고 각 작업간의 상관관계등에 대해 명시한 프롬프트가 아니라 모든 항목들이 서로 독립적인 정보 들이었습니다.
위와 같은 업무 규칙 프롬프트를 기본으로 하고 거기에 각 고객별 불만 접수 사항을 추가 프롬프트로 입력하니 효과적인 고객 대응 이메일이 완성되었습니다.
문제는 이러한 구조화된 정보를 서술하는 프롬프트를 XML이나 Markdown형식으로 작성해야 하는데 이 부분이 XML등 전자문서 구조를 잘 알지 못하시는 분들에게는 다소 까다로운 작업일 수 있다는 점입니다.
그러나 우리에게는 LLM 모델이 있습니다. 위와 같은 단순 번역은 평범한 프롬프트를 사용하여 ChatGPT 일반 모델에게 작업 지시하면 빠른시간안에 변환이 가능합니다.
원하는 출력형식에 대해 설명하지 말고 예를 들것

이 원칙을 설명하는 예를 들기 위해 사내 변호사로서 법률 자문을 하는 역할을 O1모델에 프롬프트로 입력합니다.
해당 프롬프트에는 위의 고객대응직원과 비슷한 근무규정과 사내 변호사라는 직무의 특성에 관련된 일반적인 서술입니다.
해당 프롬프트를 사용하여 공급사와 특별납품가격을 설정하는 것이 미국내 법률위반이 될 가능성이 있는지 묻는 질문에 그럴듯한 대답을 합니다.
그러나, 이 프롬프트를 입력한 사용자는 해당 문제가 법률 문제인만큼 법률적 근거에 대해 확인을 하고 싶어합니다.
이런 작업의 특성을 위해 이와 비슷한 법률적 구조를 가지고 있는 기존 마케팅 관련 법률뮨제의 판례 요약을 추가 프롬프트로 입력하며 여기에는 앞서 설명한 제 2원칙을 적용하여 판례요약을 구조화 합니다.
아울러 실제판례 사항이기 때문에 여기에서 사용된 법률 조항도 같이 명시된 프롬프트를 사용합니다.
O1 모델은 결과로 마케팅 관련 법률 문제가 아닌 납품가 계약 위반 사례도 제시된 논리구조와 그에 맞는 법률 근거를 들어가며 제시된 예에 맞도록 추론을 하는 과정을 살펴 볼 수 있었습니다.
마치며
O1 모델은 기타 일반적인 LLM 모델과 달리 주어진 프롬프트를 기반으로 추론을 할 수 있는 LLM 모델입니다.
LLM에서 추론이라고 하는 부분을 기술적으로 설명하면 주어진 단순한 프롬프트를 기반으로 발생할 수 있는 모든 가설들을 생성하고 (즉 생성이라고 하는 부분에서 LLM의 특성이 사용됩니다.) 이러한 각 가설들에 대해 답을 도출한 후, 최적의 답을 결정하는 확률적 계산의 연속입니다.
아울러 이러한 가설들의 생성및 최종 가장 확률이 높은 답을 계산해야 하는 만큼 하나의 윈도우에서 처리해야 하는 토큰의 양도 방대하고 기존에 학습된 지식의 양도 많아야 합니다.
따라서 계산에 시간이 걸릴 수 밖에 없고 사용할 때 드는 비용도 높습니다.
그러나 앞에 제시한 4가지 원칙을 사용하여 LLM을 통한 추론과정에 도움을 받을 수 있다면 내가 잘 알고 있는 부분에 대해서는 놓치고 있는 부분이 없는지 점검할 수 있으며 아울러 내가 잘 모르는 부분에 대해서는 쉽게 접근할 수 있는 방법을 제시할 수 있습니다.
이런 고성능의 O1과 같은 추론이 지원되는 LLM을 효과적으로 사용하기 위해서는 부지런히 프롬프트를 잘 쓰는 연습을 해야할 것 같습니다.
![A logo representing a calm, happy Sweden countryside village with only blue color palette [and has a minimalist and modern style] [incorporating elements of nature] [with a touch of Scandinavian design] [that reflects a sense of community]](https://i0.wp.com/raonstad.com/wp-content/uploads/2024/03/img-rsVXmvlyKd0umO7b2rMmaUnI.png?fit=1024%2C1024&ssl=1)