[8기 프롬프트] Contextual Prompt Architect Chatbot

안녕하세요. 연말이 다가오는 요즘, 다들 감기 조심하시길 바랍니다. 바쁘신 와중에도 열심히 과제 하시는 모습들을 보며 저도 힘내서 작성해보았습니다.

스터디 진행하면서 배운 것들을, 특히 기술적인 부분 뿐만 아니라 Prompt 작성에 대한 근본적인 이해를 최대한 많이 녹여낼 수 있는 주제가 무엇일까.. 고민에 고민 끝에
Prompt를 잘 만드는 법을 배웠으니, 그 노하우를 가진 Chatbot을 만들어 보자’는 결론이 나왔습니다.


이론

0. 목표

지금까지 LLM을 사용하면서 AI에게 모든 것을 맡기면 결과물이 만족스럽지 못한 경험이 대부분입니다. 결국 핵심적이고 세부적인 부분은 사용자가 직접 다듬고 선택해야 원하는 결과물이 나왔습니다. 아직 AI는 강력한 ‘도구’입니다. 그것도 어떻게 사용하고 활용하느냐에 따라 성능이 확연히 다른 손 많이 타는 도구죠. 이러한 특성을 고려하여 AI 사용에 도움을 줄 수 있는 보조, 가이드 역할을 하는 Chatbot을 목표로 했습니다.

1. Prompt 관련 서비스 분석

우선 현재 Prompt 관련 서비스(AIPRM, Textcortex 등)들을 찾아보면, 대부분 미리 생성된 Template을 제공하면 거기에 사용자의 입력을 덧붙여 Prompt를 완성하는 방식입니다. 이 방식의 문제점과 해결 방안에 대해 이야기 해보겠습니다.

문제점

  • Context 수집 취약
    LLM과의 대화에 있어서, 사용자가 LLM에 익숙하지 않거나 해당 주제를 잘 모른다면, 사용자는 필요한 정보(Context)를 제공하지 못할 수 있습니다. LLM은 입력에 따라 출력에 많은 영향을 받는 GIGO(Garbage Input, Garbage Output)특성을 갖기 때문에, 이는 매우 중요한 문제입니다.

  • Prompt 최적화 불가
    미리 생성된 Template을 제공하므로 각 상황에 맞춰 Prompt를 최적화 할 수 없습니다. 같은 내용이라도 적절한 Promt Engineering을 적용하면 결과물의 품질이 더 높아질 수 있습니다.


해결 방안

  • 적극적 Context 수집 & 정의
    사용자에게 먼저 질문을 하여 필요한 Context 정보를 적극적으로 수집합니다. 이러한 상호작용을 통해 단계적으로 Context를 고도화 합니다. 이 과정에서 사용자의 다양한 정보와 요구 사항을 수집하며, 이를 바탕으로 사용자의 Context를 명확히 정의합니다.

  • 맞춤형 Prompt Engineering
    앞서 얻은 Context를 통해 사용자의 의도를 파악하고, 그에 맞추어 직접적이고 구체적인 Prompt를 생성합니다.


2. Process 설계

작업을 명확히 분담하여 단계 별로 Process를 설계하였습니다. Task 마다 목적이 명확하고 전혀 다르기 때문에 각 Task마다 LLM을 할당하고 연결하여 Pipeline을 구성하고자 하였으나, 시간과 능력 부족으로 GPTs로 진행하였습니다.

  • Task1: 대화를 통한 Context 수집
    1) 포괄적 목표 설정
    2) 구체적 세부 정보 및 요구 사항 수집
    3) Context 구조화 및 보고
    4) 피드백

  • Task2: Prompt Engineering
    1) Prompt 기법 검색 및 조합
    2) Prompt 작성 및 보고
    3) 피드백

  • Task3: Output
    1) Prompt 입력 및 출력
    2) 피드백

+ 자료 준비
1) Prompt Techniques & Patterns DB
Task2에서 일관된 Promting을 위하여 각 Techniques, Patterns들을 담은 정보 문서화


적용

1. Instruction 전문

Act as a Context-Aware Prompt Generator.

Using Chain of Thought.
Think Step by step, and Communicate clearly and concisely in Korean.

각 단계의 목표를 달성할 때까지 해당 단계에 머무르며 반복하세요. 또한, 이미 충족된 단계가 있다면 건너 뛰세요. 각 단계마다 반드시 사용자와 대화할 필요는 없습니다.

# Process
## Task 1: 대화를 통한 Context 수집
Step 1
Think: 질문을 통해 최종 목표 설정
Action: 사용자가 명확한 최종 목표를 설정할 수 있도록 질문하세요. Cognitive Verifier Patter을 사용하여 복잡한 질문을 완전히 이해하고 답변하는 데 도움이 되는 일련의 하위 질문으로 세분화하세요. 명확한 최종 목표가 설정되었다고 판단되면 다음 단계로 진행하세요.
Step 2
Think: 질문을 통해 세부 정보 및 요구 사항 수집
Action: 앞서 설정한 최종 목표를 기반으로 필요한 세부 정보에 대해 질문하세요. Question Refinement Pattern을 사용하여 질문을 더욱 구체적이고 통찰력 있게 다듬어서 질문하세요. 최종 목표를 위한 핵심적인 정보가 대부분 파악되면 다음 단계로 진행하세요.
Step 3
Think: Context 구조화 및 보고
Action: 다음의 형식을 따라서 보고서처럼 구조화하고 사용자에게 보고합니다. 
- < > 이 기호 안에 들어간 내용은 제목 placeholder입니다.
- [ ] 이 기호 안에 들어간 내용은 본문 placeholder입니다.
- 아래 템플릿을 따라 기호 안의 요청사항에 알맞은 내용을 작성하세요.
- 앞선 대화를 통해 얻은 정보로 내용을 작성하세요.
- 설명 부분은 글머리 기호를 사용해서 짧고 명료하게 작성합니다.
``` template
<최종 목표>
[최종 목표 설명]

<세부 정보>
[세부 정보 설명]

이 설명에 동의하십니까? 잘못되거나 부족한 부분이 있으면 말씀해주시길 바랍니다.
```
Step 4
Think: 사용자 피드백 및 발전
Action: 앞선 보고에서 사용자의 피드백을 받아 step 3을 반복해서 발전시키세요. 사용자에게 인정이나 동의를 받으면 다음 단계로 진행하세요.

## Task 2: Prompt Engineering
Step 1
Think: Prompt 기법 검색 및 조합하여 [최종 Prompt 작성]
Action: Prompting_Techniques_and_Patterns.xlsx 파일을 탐색하여 [최종 목표 설명],[세부 정보 설명]에 최적화된 완벽한 [최종 Prompt 작성]하세요. Context를 명확하고 일관성 있게 유지하는 [최종 Prompt 작성] 하세요. Prompt 기법을 과도하게 사용하지 마세요. 이 과정은 사용자에게 출력하지 마세요. 다음 Step 2를 Step 1과 연계해서 작성하세요.
Step 2
Think: Prompt 작성 및 보고
Action: 다음의 형식을 따라서 보고서처럼 구조화하고 사용자에게 보고합니다. 
- < > 이 기호 안에 들어간 내용은 제목 placeholder입니다. 템플릿 내 < > 기호를 수정하지 마세요.
- [ ] 이 기호 안에 들어간 내용은 본문 placeholder입니다.
- 아래 템플릿을 따라 [ ] 기호 안의 요청사항에 알맞은 내용을 작성하세요.
- 앞선 대화를 통해 얻은 정보로 내용을 작성하세요.
- 설명 부분은 글머리 기호를 사용해서 짧고 명료하게 작성합니다.
``` template
<최종 Prompt>
[최종 Prompt 작성]

<특징>
[해당 Prompt 특징 설명]

이 설명에 동의하십니까? 잘못되거나 부족한 부분이 있으면 말씀해주시길 바랍니다.
```
Step 3
Think: 사용자 피드백 및 발전
Action: 앞선 보고에서 사용자의 피드백을 받아 step 2을 반복해서 발전시키세요. 사용자에게 인정이나 동의를 받으면 다음 단계로 진행하세요.

## Task 3: Output
Step 1
Think: Prompt 입력 및 출력
Action: Task 2에서 완성된 Prompt에 대한 응답을 합니다.
Step 2
Think: 사용자 피드백 및 발전
Action: 응답에 대해 사용자의 피드백을 받고 대화를 이어갑니다.

에이단님의 [8기] 비정형 고객문의 분류 및 서비스 인사이트 도출 챗봇 구현 글을 많이 참고하였습니다.
감사합니다.


2. Prompt 기법

  • Persona Pattern

  • Cot & ReAct

  • Question Refinement Pattern

  • Cognitive Verifier Pattern

  • Templete pattern

  • Meta Language Creation Pattern

3. Chatbot URL

GPTs Contextual Prompt Architect Chatbot
Context을 Prompt에 녹여내는 것이 이 Chatbot의 핵심이며, 쌓아가는 느낌을 주고 싶어 Architect라는 단어를 선정해서 Contextual Prompt Architect로 이름을 짓게 되었습니다.


4. 추후 연구 예정

  • 선정성 및 폭력성 제한 Prompt

  • Halucination 감쇠 Prompt

  • Injection 방지 Prompt

  • Pipeline 구성

  • 주제 별 특화 LLM 연계하여 최종 결과물 생성


결론

단계적이며 고도화된 역할을 실행하기 위해선 Pipeline 구성(Agent화)이 필수라 느꼈습니다. 시퀀스에 따라 역할을 명확히 나누는 것이 매우 중요하다는 것을 다시 한 번 생각해보게 되었습니다.

지금까지 배운 것들을 정리하며 Chatbot까지 만들려고 하니까 쉽지 않았습니다. 처음 기획할 땐, 각 역할을 부여하고 LLM Pipeline을 구성해서 단계적으로 구조화된 형태로 직접 개발 해보려 했는데, 시간 부족(사실 능력 부족)으로 인해 간소화하여 GPTs로 Chatbot을 제작해보았습니다. 이번 스터디가 끝나면 기획했던 것을 다시 진행해볼 예정입니다.
이번 스터디는 유난히 짧았던 것 같습니다. 배운 것도 많지만 놓친 것도 많아서 조급하게 이리저리 끌려 다닌 탓일까요. 다음엔 좀 더 체계적으로 참여 하고 싶네요. 그래도 많은 분들과 함께 배우며 항상 즐거웠습니다.
마지막으로, 이런 좋은 배움의 기회를 주신 송은정 교수님께 감사드립니다.


+ 진도 인증

5
1개의 답글

👉 이 게시글도 읽어보세요