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

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

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

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

Spring AI 응답의 형태 - ChatClient Responses

JSCODE 시니
JSCODE 시니
2026. 06. 13.
author
JSCODE 시니
category
Spring AI
createdAt
Jun 13, 2026 09:50 AM
isPublic
isPublic
series
실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
understanding-chat-client-responses
type
post
updatedAt
우리가 AI에게 질문을 던진 후, AI의 대답을 어떤 형태로 꺼내서 쓰는 것이 좋을까? 이전까지는 .content() 를 통해 단순한 텍스트로 받았지만, 프론트엔드에 바로 내려주기 위해 JSON 형태의 자바 객체로 받아야 하는 상황이 생길 수도 있다.
 

✅ 1. chatResponse()

  • AI의 응답은 단순히 대답 문자열로만 이루어지지는 않음.
  • 응답안에는 해당 대답을 만들기 위해 토큰을 몇 개 썼는지, 어떤 모델이 대답했는지 등 중요한 메타데이터가 포함되어 있다.
  • 해당 메타데이터를 가지고 있는 것이 바로 ChatResponse라는 객체이다.
 
ChatController.java
@GetMapping(value = "/cr", produces = MediaType.APPLICATION_JSON_VALUE) public @Nullable ChatResponse chatResponse(String userPrompt){ return chatClient.prompt() .user(userPrompt) .call() .chatResponse(); }
notion image
 
 
 

✅ 2. 자바 객체(엔티티)로 바로 받기

notion image
 
 
 

✅ 3. Streaming으로 받기

  • 우리가 일반적인 ChatGPT를 사용해보면, 답변이 한 글자씩 타다닥 찍히는 걸 볼 수 있음.
  • 백엔드에서 이걸 구현하려면 비동기 스트리밍 기술인 Flux를 사용해야 함.
01. 스프링 WebFlux와 Reactive Streams의 개념
## 01\. 스프링 WebFlux와 Reactive Streams의 개념 03장과 06장에서 우리는 스프링 부트 MVC와 톰캣(Tomcat)의 '1 요청-1 스레드' 모델의 …
01. 스프링 WebFlux와 Reactive Streams의 개념
https://wikidocs.net/298679
01. 스프링 WebFlux와 Reactive Streams의 개념
// 응답이 모이는 대로 하나씩 방출하는 Flux 스트림 객체 반환 Flux<String> output = chatClient.prompt() .user("재미있는 농담 하나 해줘") .stream() .content(); // .chatResponse()로도 스트리밍을 받을 수 있음