지난 시간에 이어서 면접 질문을 메일로 전달해주는 서비스를 만들어본다.
면접 질문 목록으로는 인터넷에 떠돌아 다니는 것을 크롤링하는 것보다 요즘 핫한 Chat GPT를 활용하면 더 재밌을 것 같아 이를 활용한다.
지난 시간에 소개한 프로젝트 진행 흐름이다.
이 중에서 오늘은 2-1 을 진행한다.
면접 질문을 Chat GPT(Open AI)로부터 가져와야 한다. 이를 위해 Open AI API를 사용한다.
1. Open AI API 키 발급 받기
- API 키 발급 링크를 통해 API 키를 발급 받을 수 있다.
- 발급 받은 API 키를 yaml 파일에 적용시킨다.
- yaml 파일 예시
openai:
api-key: ***********OPEN-AI-API-KEY***********
2. API 호출하기
- API 호출을 위해 다양한 라이브러리가 있지만 OpenFeignClient를 사용한다.
- RestTemplate을 과거에 사용했었지만 그보다 더 간결한 코드를 작성하도록 도와주고 무엇보다 RestTemplate은 Deprecate된다고 하니 그에 대한 대안으로 OpenFeignClient를 사용하자.
- 버전에 맞는 OpenFeignClient를 import 해준다.
- 테스트 호출로 어떤 식으로 데이터가 오고 가는지 확인해보자.
- 위의 정보들을 바탕으로 Feign Client에서 호출할 수 있도록 인터페이스를 만들어 요청 상세 내용을 완성해보자
- Feign Client는 호출 대상마다 인터페이스를 통해 선언적으로 코드를 작성할 수 있다.
@FeignClient(name = "OpenAIChatCompletionFeignClient", url = "${openai.url}", configuration = OpenAIChatCompletionFeignClientConfig.class)
public interface OpenAIChatCompletionFeignClient {
@PostMapping(value = "${openai.chat-completion-uri}")
ChatGPTResponse sendQuestion(@RequestBody ChatGPTRequest chatGPTRequest);
}
- Feign Client의 메서드를 호출해 요청을 Open AI API로 전송하자
@Component
public class OpenAIQuestionGenerator implements QuestionGenerator{
private final OpenAIChatCompletionFeignClient feignClient;
private final OpenAIChatCompletionFeignClientConfig feignClientConfig;
public OpenAIQuestionGenerator(OpenAIChatCompletionFeignClient feignClient,
OpenAIChatCompletionFeignClientConfig feignClientConfig) {
this.feignClient = feignClient;
this.feignClientConfig = feignClientConfig;
}
@Override
public List<String> generate() {
ChatGPTRequest chatGPTRequest = new ChatGPTRequest(
feignClientConfig.getModel(),
List.of(new Message(feignClientConfig.getRole(), Category.DB.toString())));
// sendQuestion 호출
ChatGPTResponse chatGPTResponse = feignClient.sendQuestion(chatGPTRequest);
return chatGPTResponse.choices().stream()
.map(choice -> choice.message().getContent()).collect(Collectors.toList());
}
}
- 아직 파싱 등의 단계가 남았지만 아래 이미지와 같이 chat gpt의 대답을 얻어내었다.
- 질문은 DB에 대한 면접 질문 10가지만 알려줘! 였다.
이렇게 해서, Open Feign Client와 Open AI API를 사용해 Chat GPT의 면접 질문 리스트를 받아왔다!
이제 남은 작업은 이 면접 질문 리스트를 키워드 분석하여 저장하고 메일링하는 작업이 남았다.
'프로젝트' 카테고리의 다른 글
Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기 (2) | 2023.05.05 |
---|---|
Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기 (0) | 2023.05.04 |
Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2. (0) | 2023.05.02 |
Chat GPT 활용 서비스 구현하기 - 1. 설계하기 (0) | 2023.04.29 |
당근마켓 클론코딩 - 1. 인접 동 조회 기능 구현하기 (0) | 2023.02.08 |