실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
understanding-spring-ai-prompts
type
post
updatedAt
✅ 1. Spring AI Prompts란 무엇일까?
흔히 AI에게 질문을 던질 때 하나의 긴 텍스트 문장만 보낸다고 생각하기 쉬움. 하지만 Spring AI에서 AI Model로 전달되는 최종 형태는 문자열이 아니라 Prompt 라는 전용 객체임.
Prompt 객체의 내부 구조
List<Message> : 대화의 맥락을 구성하는 여러 종류의 메시지 묶음
ChatOptions : 온도(Temperature), 사용할 모델명(GPT-4)와 같은 AI 실행 옵션
✅ 2. Message Type
Prompt 객체 안에 담기는 Message는 역할에 따라 4가지 타입으로 나뉨.
SYSTEM
AI의 성격, 직업, 행동 지침, 제약 사항 등을 세뇌시키는 메시지
예 :” 너는 10년 차 친구 같은 자바 개발자야. 모든 답변은 마크다운으로 해줘”
USER
실제 서비스를 이용하는 유저가 입력한 질문이나 지시 내용
예: "Spring AI에서 ChatClient가 뭐야?”
ASSISTANT
AI가 이전에 대답했던 응답 내용을 챗봇이 기억하고 이어가기 위해 (Chat Memory) 덧붙이는 메시지
TOOL
AI가 외부 API나 함수(예: 날씨 조회, 사내 DB 조회)를 호출하고 돌아온 결과값을 담는 특수 메시지
✅ 3. PromptTemplate
실무 비즈니스 로직에서는 질문이 고정되어 있지 않음.
유저의 입력값에 따라 질문 내용이 매번 바뀌어야 하므로 PromptTemplate을 필수적으로 사용함.
개념 : 자바 웹 개발의 타임리프(Thymeleaf)나 메일 템플릿처럼, 프롬프트 문장 중간에 구멍({변수명})을 뚫어놓고 실행 시점에 값을 쏙쏙 채워 넣는 기능
장점 : 비즈니스 로직(자바 코드)과 프롬프트 문구(텍스트)를 깔끔하게 분리할 수 있어 유지보수가 매우 편해짐.
// 1. 구멍({topic})이 뚫려 있는 템플릿 문자열 준비
String templateText = "초보자를 위해 {topic}의 핵심 개념을 3줄로 요약해 줘.";
PromptTemplate promptTemplate = new PromptTemplate(templateText);
// 2. 런타임에 변수 값을 Map으로 맵핑하여 완전한 Prompt 객체 생성
Map<String, Object> variables = Map.of("topic", "Spring AI의 PromptTemplate");
Prompt prompt = promptTemplate.create(variables);
// 3. AI 모델에 전달
ChatResponse response = chatModel.call(prompt);