프로젝트에서 요즘 핫하다는 AI를 사용해보자는 마음에 openAI api를 사용해보려고 했다.
어떻게 세팅하는가...! 그리고 왜 그렇게 세팅하는지 회고하고자 한다.
--> 이 부분에서 미스를 하게 되면 이후에 상당한 고생을 하게 된다.
추후에 설명하겠음
config에는 OpenAI를 이루는 구성요소, http 클라이언트 템플릿 빈을 이용하여 호출하므로
'''
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
'''
이런 식으로 구성하면 http 통신을 시킬 수 있겠지.
다음은 dto와 service를 한꺼번에 설명하겠다.
dto는 데이터 전송 객체들을 정의하는 단락이다.
openAI api의 경우 request(요청),과 response(응답)이 있다.
먼저 request의 경우 응답할 데이터의 구조를 설명하고 있습니다.
모델명은 뭔지, 역할은 어떻게 설정했는지
해당 모두의 객체들을 적절히 구성해주어야 한다.
그리고 response의 경우, 반환된 내용들을 가져옵니다.
어떠한 내용들을 가져올지 또한 구조체 내에서 구성할 수 있습니다.
그리고 service 단에서 해당 service를 구현하는 것이다.
먼저 모델의 요청 구조를 세팅한다. 응답 구조 또한 원하면 세팅할 수 있다.
예를들어서 model은 davinci-003을 사용하고 프롬포트는 받아오고, 토큰의 최대 갯수는 150개, 창의성은 0.7정도로 조정하자면,
코드는 이렇게 짤 수 있는 것이다.
'''
OpenAIRequest request = new OpenAIRequest(); // 요청 데이터를 담는 dto
request.setModel("text-davinci-003"); // 사용 모델 설정
request.setPrompt(prompt); // 사용 프롬포트 설정
request.setMaxTokens(150);
request.setTemperature(0.7);
'''
이러한 서비스의 작성으로 유추할 수 있듯이 controller는 쉽게 작성 가능하다.
그냥 prompt에 맞춰서 작성해달라고 controller에 쓰면 되는것이다.