OpenAPI의 API Keys 발급하기
- OpenAPI에서 API keys 발급받기
- Create new secret key 클릭을 통해서 API Keys 발급하기
- 발급한 키의 Secret key값은 발급 후에 확인불가능하니 미리 키값을 복사해서 저장하기
OpenAI key를 환경변수에 저장하기
- 환경변수에 복사한 key값을 저장하기
application.yml에 OpenAI key 적용하기
- 발급받은 OpenAI Key를 환경변수에 저장해서 사용하기
- GitHub에 코드가 올라왔을 때, 키가 공개되는 것을 방지
chatgpt:
api-key: ${OPENAI_KEY} // OpenAI key
- 키값은 유출되면 OpenAI에서 자동으로 키를 만료시키므로 주의하기
build.gradle
- 의존성 추가하기
dependencies {
// OpenAI
implementation 'io.github.flashvayne:chatgpt-spring-boot-starter:1.0.1'
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}
코드 작성하기
- ChatGPTController : controller
import lombok.AllArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/chatGPT")
@AllArgsConstructor
public class ChatGPTController {
private final ChatGPTService chatGPTService;
@PostMapping("/question")
public ResponseEntity<ChatGpt.Res> askToChatGPT(@RequestBody ChatGpt.Req chatGpt){
String question = chatGpt.getQuestion();
ChatGpt.Res answer = chatGPTService.getChatGPTResponse(question);
return new ResponseEntity<>(answer, HttpStatus.OK);
}
}
- ChatGpt : response & request
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
public class ChatGpt {
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class Req {
String question;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class Res {
String answer;
}
}
- ChatGPTService : service
import io.github.flashvayne.chatgpt.service.ChatgptService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class ChatGPTService {
private ChatgptService chatgptService;
// ChatGPT 질문 던지고 답변받기
public ChatGpt.Res getChatGPTResponse(String question) {
String answer = chatgptService.sendMessage(question);
return new ChatGpt.Res(answer);
}
}
결과
- 참고자료
[SpringBoot] 스프링부트 애플리케이션에서 OpenAI 를 적용해 AI 채팅 서비스 개발하기 (feat. davinci-003 M
요즘 가장 핫하다는 ChatGPT, 스프링부트 프로젝트에 직접 적용해보고 싶지 않나요? 🧐 한번 개발해봅시다!
velog.io
'기타 기술' 카테고리의 다른 글
spring 백그라운드 실행 시 로그 남기기 (0) | 2023.06.07 |
---|---|
.gitignore 폴더에서 특정 파일만 추가하기 (0) | 2023.06.07 |
AWS 백그라운 서버 동작 (0) | 2023.06.07 |
Swagger 사용하기 (0) | 2023.04.14 |
연관관계에 있는 객체 생성에 관한 고찰 (0) | 2023.02.10 |