-
Spring AI 시리즈 5화 – Prompt Template과 Prompt Engineering 전략기술과 산업/언어 및 프레임워크 2025. 6. 3. 11:47728x90
Spring AI에서 제공하는 PromptTemplate 기능을 바탕으로, LLM 응답을 더 정밀하게 제어할 수 있는 프롬프트 설계 전략을 살펴봅니다. 다양한 실전 예시와 함께 Prompt Engineering의 핵심 개념을 정리합니다.
우리가 GPT나 Hugging Face 모델을 쓸 때 가장 많이 하는 실수 중 하나는 이겁니다.
그냥 질문만 던지고 결과가 별로면 모델 탓을 한다는 거죠.
사실 LLM의 성능은 모델의 파라미터 수나 학습 데이터만으로 결정되지 않습니다.
**어떻게 질문하느냐(Prompting)**도 그 못지않게 중요합니다.
프롬프트 엔지니어링(Prompt Engineering)은 이 “질문 설계”를 통해 원하는 출력을 이끌어내는 기술입니다.Spring AI는 이걸 위한 도구로 PromptTemplate을 제공합니다.
이름 그대로, 프롬프트를 템플릿처럼 구성하고 변수만 바꿔서 사용할 수 있는 유용한 기능입니다.
PromptTemplate 기본 구조
Spring AI의 PromptTemplate은 단순한 문자열 포맷팅이 아닙니다.
구조화된 프롬프트 설계를 가능하게 해줍니다.PromptTemplate template = new PromptTemplate("당신은 전문 마케터입니다. 다음 제품을 소개하는 이메일을 작성해주세요.\n제품: {product}"); template.add("product", "AI 스마트 스피커");
위 템플릿은 다음과 같은 프롬프트로 변환됩니다:
당신은 전문 마케터입니다. 다음 제품을 소개하는 이메일을 작성해주세요. 제품: AI 스마트 스피커
이렇게 구조화된 프롬프트는 특히 반복적인 LLM 호출이 필요한 상황에서 유용합니다.
실전 예시 1 – 요약 템플릿
PromptTemplate template = new PromptTemplate( "다음 글을 한 문단으로 요약해주세요.\n\n{article}" ); template.add("article", 사용자로부터 입력받은 긴 텍스트);
요약 요청 시마다 매번 "요약해줘"를 직접 쓰는 대신, 템플릿화된 구조로 프롬프트를 유지할 수 있습니다.
실전 예시 2 – 비교 분석
PromptTemplate template = new PromptTemplate( "{topicA}와 {topicB}를 비교해서 장단점을 알려줘." ); template.add("topicA", "Java"); template.add("topicB", "Python");
이런 방식으로 구성하면 웹에서 선택된 항목을 바로 변수로 넣어 프롬프트를 동적으로 생성할 수 있습니다.
실전 예시 3 – 역할 부여 (Role Prompting)
PromptTemplate template = new PromptTemplate( "너는 숙련된 법률 자문가야. 아래 계약서를 분석하고 주요 리스크를 조목조목 설명해줘.\n\n{document}" ); template.add("document", 계약서 원문);
이 방식은 "LLM이 어떤 역할을 수행해야 하는가"를 명시하는 Role Prompting 기법입니다.
단순한 Q&A보다 훨씬 정밀하고 맥락 있는 응답을 유도할 수 있습니다.
Prompt Engineering – 꼭 기억해야 할 4가지 팁
- 역할(Role)을 먼저 지정하자.
예: “너는 변호사야”, “너는 베테랑 의사야”
→ 맥락을 잡아주는 것이 중요합니다. - 출력 형식을 명시하자.
예: “표 형식으로 요약해줘”, “JSON으로 반환해줘”
→ 파싱/응답의 안정성이 올라갑니다. - 예시(Few-shot)를 넣으면 정밀도가 올라간다.
예: 질문-답변 쌍을 2~3개 먼저 넣고, 마지막에 실제 질문을 붙이는 방식 - 너무 짧은 프롬프트는 지양하자.
“요약해줘”만 던지면 모델은 애매하게 동작합니다.
지시 + 입력 + 출력 형식이 모두 들어가야 안정적입니다.
PromptTemplate vs 직접 문자열?
Spring AI를 쓰면서 "굳이 PromptTemplate을 써야 하나?"라는 생각이 들 수도 있습니다.
사실 단순한 경우엔 문자열만으로도 충분합니다.
하지만 다음과 같은 상황에서는 템플릿 사용이 거의 필수에 가깝습니다.- 사용자 입력 기반으로 다양한 프롬프트를 생성해야 할 때
- 프롬프트를 재사용하거나, 관리형 시스템에 저장할 때
- 여러 프롬프트 버전을 실험할 때 (A/B 테스트 등)
정리하자면
항목 설명
핵심 기능 변수 바인딩 기반 프롬프트 템플릿 생성 장점 반복 구조 관리, 역할 기반 프롬프트 설계 용이 사용 예 요약, 설명, 비교, 역할 지시, 분석 요청 등 주의점 너무 단순한 프롬프트엔 오히려 비효율적일 수 있음 728x90'기술과 산업 > 언어 및 프레임워크' 카테고리의 다른 글
- 역할(Role)을 먼저 지정하자.