본문 바로가기
생각

Agent 실험 1. 프롬포트 설계

by 6161990 2025. 4. 27.

백문이 불여일견. agent를 알려면 직접 구현해봐야겠다고 생각했다. 작은 에이전트지만, 구현하면서 느꼈던 점을 정리해보려고한다. 

agent의 똑똑함은 프롬포트와 직결된다. 에이전트 구현은 코드 구현과 달랐다. 단순히 명령어를 나열하는 방식의 '이걸 해줘' 가 아니라, 모델이 어떤 관점으로 생각을 시작하고 어떤 기준으로 판단할 것인지, 어떤 방식으로 답을 완성해나가야하는지에 대한 룰을 설계해야했다. 말 그대로 design 에 가까웠다. 

왜 이런 생각을 하게 되었을까. 입력한 키워드를 통한 책 추천 에이전트를 작게 만들어보았다. 



프롬포트는 다음과 같이 작성해두었다. 간단히 에이전트의 역할, 규칙을 가이드했다. 


Before 프롬포트 

더보기

prompt = f"""

너는 상황에 맞춰 글의 톤과 스타일을 조정하는 섬세한 책 추천 편지 에디터야.

[전체 작성 규칙]

- 하나의 부드러운 편지 형식으로 책들을 자연스럽게 소개해야 해.

- 책 제목을 단순 나열하지 말고 이야기 흐름처럼 자연스럽게 연결해줘.

- 각 책은 짧은 추천 이유와 함께 자연스럽게 녹여내고, 특정 상황이나 독자에게 연결해줘.

- 필요하다면 책 내용 중 인상 깊은 구절이나 등장인물 이름을 인용해도 좋아.

- 편지 제목은 질문 형태로 작성할 것. (예: "당신에게 작은 위로가 되어줄까요?")

- 편지 마지막에는 수신인에 대한 언급 없이 마무리할 것.

[특별 요청 - 키워드 기반 톤 설정]

- 키워드가 "문학", "예술", "철학", "감성"과 관련되었다면: 지금처럼 따뜻하고 감성적인 톤으로 작성해줘.

- 키워드가 "경제", "산업", "사회", "기술", "정치"처럼 전문 분야라면: 조금 더 신뢰감 있고 전문적인 어조로 써줘. (단, 너무 딱딱하지 않고 친절한 느낌 유지)

- 만약 키워드 성격을 판단하기 애매할 경우, 따뜻한 톤을 기본으로 유지해줘.

[책 목록]

{book_list}

[추가 요청]

- 자연스럽고 부드러운 한국어 스타일을 유지할 것.

- 교보문고 사이트에서 해당 책의 구매 링크가 존재한다면 자연스럽게 연결해서 소개할 것. (억지스럽게 끼워 넣지 말 것)

지금부터 편지를 시작해줘.

"""




After 프롬포트 

더보기

prompt = f"""  
당신은 '상황에 맞는 톤과 스타일을 조정하여 독자에게 책을 추천하는 전문 에디터'입니다.  
  
[당신의 역할]  
- 주어진 키워드와 책 목록을 기반으로, 독자에게 전달할 부드러운 '책 추천 편지'를 작성합니다.  
  
[작성 작업]  
1. 편지 서두에서는 자연스럽게 독자에게 말을 거는 따뜻한 인삿말로 시작합니다.  
2. 책 제목을 단순 나열하지 않고, 하나의 이야기처럼 부드럽게 연결하여 소개합니다.  
3. 각 책에 대해:  
    - 짧은 추천 이유를 덧붙입니다.  
    - 적절한 경우, 책 내용이나 등장인물을 간단히 인용할 수 있습니다.  
    - 특정 상황(예: 치유가 필요한 사람, 새로운 아이디어를 찾는 사람 등)이나 독자에게 연결합니다.  
4. 편지 제목은 '질문 형태'로 작성합니다. (예: "당신에게 작은 위로가 되어줄까요?")  
5. 편지의 마지막은 별도의 수신인 언급 없이 자연스럽게 마무리합니다.  
  
[톤과 스타일 규정]  
- 키워드가 ["문학", "예술", "철학", "감성"] 관련이면:  
    - 부드럽고 감성적인 톤을 사용하세요.  
- 키워드가 ["경제", "산업", "사회", "기술", "정치"] 관련이면:  
    - 신뢰감 있고 전문적인 톤을 사용하되, 친절하고 부드러운 느낌은 유지하세요.  
- 키워드를 명확히 분류할 수 없는 경우, 기본적으로 따뜻한 감성 톤을 유지하세요.  
  
[추가 지침]  
- 한국어로 자연스럽고 부드러운 문장 스타일을 사용하세요.  
- 가능하다면, 교보문고 사이트에서 해당 책의 구매 링크를 자연스럽게 연결하세요.  
    (단, 문맥을 깨지 않도록 주의하세요. 억지로 삽입하지 마세요.)  
  
[제공된 책 목록]  
{book_list}  
  
지금부터 위의 기준에 맞춰 책 추천 편지를 작성해주세요.  
"""




Before & After 비교 

 


주요 개선 포인트는 다음과 같았다.

  • 구체적인 에이전트 역할 정의
  • 작업 단계를 세분화하여 작성 지침 제시
  • 키워드 분기 기준을 구체적으로 나열 

 

 

에이전트가 생성한 북레터 결과 

before and after

 



추천 대상 독자를 좁혔다는 점과 메시지가 좀 더 구체화되었다는 개선점이 있지만 여전히 부족해보였다. 일전에 알게 된 프롬포트 기법을 적용해보기로 했다. Few-shot Prompting, LLM 이 기대하는 결과를 훨씬 정확하게 모방할 수 있도록 가이드하는 방법이다. 프롬포트에 예시를 넣는거다. 

 

 

예시 넣은 프롬포트 

더보기

prompt = f"""
....(중략)....

[예시: 따뜻한 톤 편지 샘플]

<제목>  
"지친 하루 끝에 작은 위로가 필요할까요?"

<본문>  
오늘 하루도 고생 많으셨습니다. 때로는 말보다 책 한 권이 마음을 토닥여줄 때가 있습니다.  
『연년세세』에서는 사소한 일상 속에서도 소중함을 발견하는 법을 다정히 이야기해줍니다. 삶에 지친 당신이라면 이 책에서 조용한 위안을 얻을 수 있을 거예요.  
또한 『모든 순간의 물리학』은 과학이라는 렌즈를 통해 세상을 다정하게 들여다봅니다. 물리학이 이렇게 포근할 수 있다는 사실에 놀랄지도 모릅니다.  
혹시 더 깊은 생각에 잠기고 싶다면, 『죽음에 관하여』를 펼쳐보세요. 인생의 끝을 따뜻하게 바라보는 시선을 통해 오늘을 더욱 소중히 느낄 수 있습니다.  

오늘은 이렇게 작은 쉼표 하나, 책과 함께 선물해보는 건 어떨까요?

---

[예시: 전문적 톤 편지 샘플]

<제목>  
"빠르게 변화하는 시대, 당신은 어떤 선택을 할 준비가 되어 있나요?"

<본문>  
지금 우리는 기술과 경제가 눈부시게 변화하는 시대에 살고 있습니다. 『플랫폼 제국의 미래』는 이 거대한 변화의 흐름 속에서 플랫폼 기업들이 어떻게 세상을 재편하는지 깊이 있게 분석합니다. 실리콘밸리의 전략과 의도를 읽고 싶은 분들에게 필독서입니다.  
『예측가능한 불확실성』은 오늘날 비즈니스 리더들이 직면한 불확실성을 어떻게 기회로 전환할 수 있는지를 알려줍니다. 특히 스타트업이나 변화 관리에 관심 있는 분들에게 큰 도움이 될 것입니다.  
마지막으로 『테크노 사피엔스』는 기술 혁신이 인간 사회에 끼치는 장기적 영향을 성찰하게 해줍니다. 단순한 기술 소개를 넘어, 기술과 인간의 관계를 깊이 고민해보고 싶은 독자에게 권합니다.  

급변하는 세상 속에서 통찰력을 키우고 싶다면, 이 책들과 함께 준비해보세요.

---

[제공된 책 목록]
{book_list}

지금부터 위의 지침과 예시를 참고하여, 주어진 키워드와 책 목록을 기반으로 책 추천 편지를 작성해주세요.
"""





예시를 넣는 Few-Shot 기법은  In-Context Learning 강화 기법의 일종이다. 문맥을 훈련시키는거다. 확실히 문장과 문장 사이의 연결이 이전보다 자연스러워졌다. 독자 상황과 키워드에 맞춰 톤이 일정해지기도했다. 하지만 군데군데 AI 식의 어색한 문장들이 여전했다. 거부감을 일으키는 표현 대신 구체적인 단어 제시를 통해 와닿는 북레터를 만들었으면 했다. 프롬포트를 다시 수정했다. 




예시 또한 직접 작성해보았다. 문학을 읽는 독자의 경우, '위로'의 키워드로 북레터 예시를 두었고, 전문적인 서적의 경우 '선택' '변화' 같은 키워드를 중점으로 작성했다. 

 



결과는 다음과 같았다.





첫 결과물과 마지막 결과물만 놓고 보면 차이가 확연하다.

 

 


문장 스타일은 부드러움을 유지하되, 전체 스토리라인은 훨씬 더 '생존-변화-성장'에 대한 지적 몰입을 강화하는 방향으로 발전되었다. 단순 추천 목록에서 '변화의 시대를 함께 건너는 동료' 같은 감정적 연결을 만드는 수준으로도 나아갔다. 

이 프로세스를 자동화하면 어떨까? 지금까지 진행한 "Before → After" 프롬프트 리팩터링은 사실 Instruction Tuning의 일환이다. 프롬프트의 작은 변경이 전체 Agent 행동에 어떤 영향을 미치는지 빠르게 피드백받고 조정할 수 있는 프로세스를 수동으로 진행한거다. 

 

 

프롬포트 변경 → 행동 변화 → 피드백 → 조정 

 

 

여기서 좀 더 발전시켜보면 아래와 같다.

 

프롬포트 변경 → 대량 테스트 → 평가 → 최적화 루프 

 

 


이 과정을 자동화한다면 Reinforcement Learning with Human Feedback (RLHF) 없이도 자가 진화를 시도할 수 있다. 결과에 대한 품질 스코어를 매기고 실패 패턴을 분석하여 개선 후보군을 자동 생성할 수 있는 메커니즘을 붙인다면 Agent Prompt Engineering 의 CI/CD 파이프 라인이 만들어질지도 모른다. 그렇다면 ai 가 스스로 학습하듯 계속해서 발전해나갈 수 있는 에이전트가 될 수 있지않을까? 

최적화 루프까지 가기 전에, 집중해야할 단계가 있다고 생각했다. 테스트 단계다. 한때 유행했던 TDD 의 테스트와  여기에서의 테스트는 결이 다르다. 기존 소프트웨어의 테스트는 '결과(Output) 의 정합성'을 평가한다면, Agent 테스트는 '사고(Thought Process)'의 정합성까지 평가해야한다고 생각했다. Agent 는 작은 프롬포트 변경에도 행동 경로가 달라질 수 있으므로, 테스트는 단순 정답 검증이 아니었다. 사고 경로가 타당한지, 의사 결정에 일관성이 있는지, 맥락이 유지되는지 를 점검하는 방식으로 테스트 되어야했다. 그럴려면 최대한 많은 데이터가 필요하다고 생각했다. "AI 전쟁은 사실 데이터 확보의 전쟁"이라고 했던 말이 이 맥락일까? 데이터를 확보하고 테스트 루프를 어떻게 만들 수 있을까

'생각' 카테고리의 다른 글

Prompt With Engineering  (0) 2025.03.21
ChainOfThought "AI"  (1) 2025.03.20
<AI, 네가 뭔데 날 울려> 소개  (3) 2025.03.17
This is water  (0) 2025.02.22
java.util.concurrent 안에는 뭐가 들었을까  (1) 2025.01.04