백엔드에서 ChatGPT 가 보낸 응답 메세지를 받아 프론트엔드로 전송해 봅시다~
1. Service : ChatGPT 응답 메세지 반환받기
2. DTO : ChatGPT → 백 & 백 → 프론트 서버로 전송할 메세지 데이터 세팅
[ Service ]
🤖 ChatGPT 에서 백엔드 서버로 전송하는 응답 메세지 처리
0. ChatGPT 로 메세지 전송
1. 응답 메세지 처리
@Service
@RequiredArgsConstructor
@Transactional
@Slf4j
public class ChatGptServiceImpl implements ChatGptService {
private static RestTemplate restTemplate = new RestTemplate();
// ChatGPT API 응답 반환 받기
@Transactional
public ChatGptResponseDTO getResponse(HttpEntity<ChatGptRequestDTO> chatGptRequestDTOHttpEntity) {
// 답변 길어질 시 Timeout Error : 1분 설정 60sec * 10000ms
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(60000);
requestFactory.setReadTimeout(60 * 1000);
restTemplate.setRequestFactory(requestFactory);
ResponseEntity<ChatGptResponseDTO> responseEntity = restTemplate.postForEntity(
ChatGptConfig.URL,
chatGptRequestDTOHttpEntity,
ChatGptResponseDTO.class
);
return responseEntity.getBody();
}
// ChatGPT API 요청하기 - 일반 대화
@Override
public ChatGptResponseDTO askQuestion(String question) {
// ChatGPT API 사용 시 지켜야 할 DTO 맞추기
...
// 응답 반환
return this.getResponse(
this.buildHttpEntity(
new ChatGptRequestDTO(messages, ChatGptConfig.MODEL)
)
);
}
}
[ DTO ]
🤖 반환하는 메세지 데이터 세팅
1. ChatGPT → 백엔드
@Getter
@NoArgsConstructor
public class ChatGptResponseDTO implements Serializable {
private String id;
private String object;
private LocalDate created;
private String model;
private List<Choice> choices;
@Getter
@Setter
public static class Choice {
private ChatGptMessageDto message;
@JsonProperty("finish_reason")
private String finishReason;
private int index;
}
}
2. 백엔드 → 프론트엔드
public class UserChatGptResponseDTO {
@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class UserGptResponseDTO{
private String gptResponse;
}
}
'Spring > [P] AI 챗봇 기반 맞춤형 레시피 서비스' 카테고리의 다른 글
[SpringBoot/Pagination] Review 10개씩 조회하기 (0) | 2024.02.29 |
---|---|
[SpringBoot/ChatGPT] ChatGPT API (5) DB 기반 질문 요청 (2) | 2024.02.28 |
[SpringBoot/ChatGPT] ChatGPT API (3) 일반 대화 - 메세지 전송 (0) | 2024.02.26 |
[SpringBoot/ChatGPT] ChatGPT API (2) 프로젝트 설정 (0) | 2024.02.22 |
[SpringBoot/ChatGPT] ChatGPT API (1) API Key 발급 (0) | 2024.02.21 |