springboot 에서 chatGPT API를 연동해보겠습니다.
생각보다 어렵지 않으니 순서대로 따라오시면 됩니다.
우선 chatGPT API 를 이용하기 위해 API-KEY가 필요합니다.
https://platform.openai.com/account/api-keys
링크를 따라 들어가면, 로그인 해야할겁니다.
로그인 후 위에 링크를 다시 들어가면,
아래에 + Create new secret key 를 발급 받으실 수 있습니다.
추후에 api 사용을 위한 api-key 이니, 알고계셔야 합니다.
이제 프로젝트를 생성해봅시다.
id 'org.springframework.boot' version '3.0.6'
저는 스프링부트 버전 3.0.6v 으로 생성하였습니다.
chatGPT-API 를 이용하기 위해 의존성 주입을 해야합니다.
implementation 'io.github.flashvayne:chatgpt-spring-boot-starter:1.0.4'
위의 라이브러리를 추가해 줍시다.
[application.yml]
chatgpt:
api-key: #your chatgpt-api-key
아까 전에 발급 받은 api-key를 yml 파일에 적어줍시다.
이제 chatGPT를 연동하기 위한 준비가 끝났습니다.
[testController.java]
@RequiredArgsConstructor
@RestController
@Slf4j
@RequestMapping("/api/v1/chat-gpt")
public class testController {
private final ChatService chatService;
private final ChatgptService chatgptService;
//chat-gpt 와 간단한 채팅 서비스 소스
@PostMapping("")
public String test(@RequestBody String question){
return chatService.getChatResponse(question);
//\n\nAs an AI language model, I don't have feelings, but I'm functioning well. Thank you for asking. How can I assist you today?
}
ChatgptService는 라이브러리에서 제공해주는 핵심 chatgpt 서비스입니다. 우리는 이걸 활용할겁니다.
chatService는 저희가 만든 ChatgptService를 담기위한 서비스 파일 입니다.
[chatService.java]
@Service
@RequiredArgsConstructor
public class ChatService{
private final ChatgptService chatgptService;
public String getChatResponse(String prompt) {
// ChatGPT 에게 질문을 던집니다.
return chatgptService.sendMessage(prompt);
}
라이브러리에서 제공하는 chatgptService안에 sendMessage라는 메소드가 있습니다.
이 메소드는 chatGPT에게 질문을 던지는 메소드입니다.
파라미터는 질문할 String 값을 작성해주면됩니다.
결과 화면 봅시다.
질문에 대한 응답값으로 chatgpt가 적절한 답변을 주는것을 확인 하실 수 있습니다.
주의 할점
발급받은 api-key는 유효기간이 24시간 입니다.
하루지날때마다 api-key를 새로 발급 받아줘야합니다.
발급받은 사이트에서 api-key를 발급받기 위해서는 로그인 계정이 필요한대,
로그인 한계정으로 18달러가 무료로 지급되며,
api-key를 한번 발급받을 때마다 0.03 달러가 차감됩니다.
끝
'Spring' 카테고리의 다른 글
SpringBoot + WebSocket server 간단하게 구현해보기 (18) | 2023.05.26 |
---|---|
SpringBoot Paging(페이징)에서 제공하는 변수 커스터마이징 하기. (1) | 2023.05.11 |
spring 에서 @Async 어노테이션 사용하기(비동기) (1) | 2023.04.20 |
List -> Page 변환 (0) | 2023.03.20 |
Could not write JSON: Infinite recursion (stackOverflowError) (0) | 2023.03.16 |