실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
practice-implementing-chat-service-with-conversation-id
✅ 1. ChatService 구현
- 이전 시간에 구현한 Advisor들을 Chat Service에 등록하기
ChatService.java
package com.jscode.chat.service;
@Service
public class ChatService {
private final ChatClient chatClient;
public ChatService(ChatClient.Builder chatClientBuilder, Advisor[] advisors) {
this.chatClient = chatClientBuilder.defaultAdvisors(advisors).build();
}
}
✅ 2. CONVERSATION_ID 파라미터로 넘기기
- 해당 ID를 넘겨줘야 정확한 기록을 가져올 수 있음
- 따라서 요청 전에 해당 ID를 넘겨줄 수 있는 prepareRequest 메서드 작성
public Flux<String> stream(Prompt prompt, String conversationId) {
// 응답을 받아오는 코드 추가
return prepareRequest(prompt, conversationId)
.stream()
.content();
}
private ChatClient.ChatClientRequestSpec prepareRequest(Prompt prompt, String conversationId){
return chatClient.prompt(prompt)
.advisors(advisorSpec ->
advisorSpec.param(ChatMemory.CONVERSATION_ID, conversationId));
}
💁♀️
유저의 질문을 넘길 때는 일반 String 보다는 Prompt 타입으로 받는 것이 더 좋습니다. System Prompt를 넘겨 페르소나를 설정하거나 더 디테일한 Prompt 객체를 생성할 수 있습니다.