JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] Chat Service 구현 - Advisor, CONVERSATION_ID

JSCODE 시니
JSCODE 시니
2026. 06. 13.
author
JSCODE 시니
category
Spring AI
createdAt
Jun 13, 2026 09:52 AM
isPublic
isPublic
series
실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
practice-implementing-chat-service-with-conversation-id
type
post
updatedAt

✅ 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 파라미터로 넘기기

notion image
  • 각 방마다 고유한 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 객체를 생성할 수 있습니다.