안녕하세요. 저번 게시글을 쓰고 발표를 하면서, 스스로 부족한 점을 많이 느꼈습니다. 이번엔 이론적인 부분에 대해 더 진지하게 고민하며 정리해보았습니다.
각설하고, 이번 진도에서는 실전에서 사용할 수 있는 실용적인 기법과 패턴에 대해 배웠습니다.
Prompting Technique(프롬프팅 기법)
Prompt Pattern(프롬프트 패턴)
우선 기법과 패턴의 차이를 알아보고, 다양한 기법과 패턴의 원리와 그 예시들을 살펴보겠습니다. 그리고 이러한 이해를 통해 새로운 프롬프팅 기법과 프 롬프트 패턴을 만들어 보겠습니다. 이 과정을 통해 Prompt Engineering에 대해 좀 더 근본적인 이해력을 높이는 것을 목표로 합니다.
이론
1. Prompting Techniques VS Prompt Patterns
앞서 말씀드린 대로, 프롬프팅 기법과 프롬프트 패턴을 나누는 기준이 무엇인지 알아보겠습니다.
Prompting Techniques
프롬프팅 기법은 AI 모델에서 특정 유형의 반응이나 행동을 도출하는 데 사용되는 다양한 방법을 의미합니다. 이러한 기술은 원하는 출력을 얻기 위해 모델과 상호 작용하는 방법에 관한 것입니다.
Prompt Patterns
반면에 프롬프트 패턴은 프롬프트 자체의 구조나 형식에 관한 것입니다. 이는 모델이 특정 스타일이나 형식으로 응답을 생성하도록 안내하는 데 사용할 수 있는 특정 template 또는 framework를 나타냅니다.
주요 차이점은 프롬프팅 기법은 특정 유형의 정보나 응답을 추출하기 위한 AI와의 상호 작용 전략에 관한 반면, 프롬프트 패턴은 프롬프트 자체의 구조적 설계에 관한 것이며 형식과 스타일을 형성합니다.
“기법 = AI에 접근하는 다양하고 광범위한 방법들”
“패턴 = 프롬프트에 대해 정해진 틀, template, framework”
2. 다양한 기법과 패턴
하지만 결국 두 가지의 목표는 같습니다. 그것은 바로 더 효율적이고 효과적으로 LLM과 상호 작용하는 것입니다. 이를 실현 위한 핵심 원리는 다음과 같습니다.
핵심 원리
명확한 Context
: Promt의 의미와 목적이 완전히 이해되도록 적절한 맥락을 제공해야 합니다. 다시 말해, 사용자의 의도를 명확히 반영하기 위해 직관적이고 명료하며 MECE하여 다른 해석의 여지를 줄여야 합니다.다양한 접근 방식
: 때로는 유연하게 사용자가 새로운 법칙이나 단어를 정의하거나 게임을 진행 하듯 AI와 상호작용 합니다. 때로는 딱딱하게 내용을 구조화하여 단계를 나누고 인과관계를 파악하며 대화를 이어갑니다. 각 상황에 맞게 다양한 접근 방식을 취하는 것이 중요합니다.
이러한 원리를 만족하는 검증된 Prompting Techniques, Prompt Patterns 예시들은 아래와 같습니다.
Prompting Techniques
Few-shot Prompting
: 유사한 작업을 수행하도록 요청하기 전에 모델에 현재 작업에 대한 몇 가지 예를 제공합니다. 이는 모델이 예상되는 응답의 상황과 유형을 이해하는 데 도움이 됩니다.
Chain of Thought Prompting
: 답변으로 이어질 수 있는 중간 단계나 추론을 작성하는 것입니다. 이 기술은 복잡한 문제 해결이나 추론 프로세스를 설명하기 위해 모델이 필요한 경우에 특히 유용합니다.ReAct Prompting
: 이전 응답을 수정하거나 개선하기 위해 모델에 이전 응답을 재고하거나 재평가하라는 메시지를 표시하는 기술입니다. 여기에는 모델의 출력을 비판적으로 분석한 다음 후속 프롬프트를 개선하는 데 사용하는 피드백 루프가 포함됩니다.
Prompt Patterns
Game Play Pattern
: 게임 구조를 모방한 프롬프트를 사용합니다. 이는 대화형 시나리오를 만들거나 교육 환경에서 유용할 수 있습니다.Template Pattern
: 모델이 관련 정보로 채울 수 있는 고정 또는 반고정 형식을 사용합니다. 이는 보고서, 요약 또는 데이터 항목과 같은 구조화된 데이터를 생성하는 데 자주 사용됩니다.Meta Language Creation Pattern
: 모델이 특정 방식으로 인식하고 반응하는 일종의 메타 언어 또는 특정 용어를 개발합니다. 이는 보다 미묘하거나 복잡한 상호 작용을 만드는 데 유용할 수 있습니다.Recipe Pattern
: 요리 레시피나 사용법 가이드와 같은 절차적 또는 단계별 지침에 특히 적합한 형식입니다.Alternative Approaches Pattern
: 문제나 주제를 다루기 위한 다양한 방법이나 관점을 모델에 제시하여 다양하고 창의적인 결과물을 장려합니다.
활용 예시
이렇게 배운 다양한 Prompting Techniques과 Prompt Patterns을 활용해서 새로운 Prompting Techniques과 Prompt Patterns을 만들었습니다.
1. [Few-shot + CoT] 활용한 새로운 Prompting Technique (링크)
▲ 앞서 언급한 Prompt Technique 정의와 핵심 내용 CoT
▲ Few-shot, CoT, ReAct Prompting 이름과 설명으로 분류하여 Few-shot
▲ 새로 만들어진 Prompting Technique
2. [Few-shot + CoT + Alternative Approaches] 활용 새로운 Prompt Pattern [실패] (링크)
(중략)
▲ 대안을 제시하고 각 대안의 장단점을 알려주는 Alternative Approaches Pattern을 사용하여 1번과 비슷하게 구성한 Prompt를 발전시키고자 했습니다. 이때, 백틱(`)을 활용해서 발전시킬 Prompt와 입력하는 Pattern을 확실히 구분했습니다.
(중략)
▲ 백틱(`)을 구분하지 못하고 전체 Prompt에 대한 결과를 내준다. 내가 원하는 건 백틱(`)내에 있는 Prompt를 발전시키고 싶었는데.. 생각대로 안되는 것 같습니다.
결론
“좋은 거 + 좋은 거 = 더 좋은 거” 는 아닌 것 같습니다. 아직 여러 조합을 더 찾아서 도전해봐야겠지만 지금까진 만족스러운 결과는 나오지 않았네요. 오히려 무리하게 연계를 하면 기본 원칙 ‘명료한 맥락 전달’에 문제가 생기는 것 같습니다.
그리고 만들어진 기법과 패턴을 살펴보니 다 짬뽕이 되고 독특한 방향성이 부족한 것을 느꼈습니다. 그래서 접근 방식에 효과적일 뿐 아니라, ‘확실한 컨셉’을 갖는 것이 기법화, 패턴화 하는 데 중요하다는 걸 다시 한 번 느꼈습니다.
오늘도 이론 부분을 쓰느라 시간이 다 가버려서, 활용 예시에서 고찰이 부족했습니다. 다음엔 좀 더 활용쪽에 힘을 쏟아 눈에 보이는 성과를 만들고 싶네요. 읽어 주셔서 감사합니다.
+ 추후 연구 예정
새로운 Prompting Techniques, Prompt Patterns을 만들기 위해 필요한 질문 확장
: Question Refinement Pattern, Cognitive Verifier Pattern
각 기법과 패턴의 정의, 특성 구조화
: Template Pattern
구조화된 정보 참고하여 여러 기법과 패턴 연계 방안 모색
: Recipe Pattern, Alternative Approaches Pattern