요즘 핫한 ai chat를 이용해서 chat gpt 3.5 api 입니다.
갑자기 하고 싶어서 만들었습니다.
백엔드는 완성했고 내일 프론트엔드쪽도 완성할 예정입니다.
spring에서 데이터를 받아서 vue에서 랜더링 해주는건데요.
코드는 아래와 같습니다.
P.S
Chat gpt API-KEY를 구하는것은 다른 블로그에서 참고 하시면됩니다.
그리고 이건 3.5 버전이고 4.0 버전으로 변경하고싶시면 공식문서 참고해주세요 가격도 달라요
service
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.HttpHeaders;
@Service
public class ChatGptService {
private RestTemplate restTemplate;
private final String chatGptApiUrl = "https://api.openai.com/v1/chat/completions";
public ChatGptService() {
this.restTemplate = new RestTemplate();
}
public String getChatResponse(String userInput,String apiKey ) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(apiKey);
String requestBody = "{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"system\",\"content\":\"" + userInput + "\"}]}";
HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);
// ChatGPT API 호출
ResponseEntity<String> responseEntity=null;
try{
responseEntity = restTemplate.exchange(chatGptApiUrl, HttpMethod.POST, requestEntity, String.class);
}catch (Exception e){
e.printStackTrace();
}
// ChatGPT API 응답 처리
String chatResponse = responseEntity.getBody();
return chatResponse;
}
}
controller
import kr.co.kshproject.webDemo.Applicaiton.ChatGptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@RestController
public class ChatGptController {
private static final String CHATGPT_API_KEY = "APIKEY"
@Autowired
private ChatGptService chatGptService;
@PostMapping("/api/ChatGptApi")
public ResponseEntity<String> ChatGptsPost(@RequestBody String input, HttpServletRequest request) {
HttpSession session = request.getSession(false);
String answer="연결을 실패하였습니다.";
if (session == null || session.getAttribute("user") == null) {
// 세션에 사용자 정보가 없으면 로그인 페이지로 리다이렉트
return ResponseEntity.ok(answer);
}
try{
answer=chatGptService.getChatResponse(input,CHATGPT_API_KEY);
}catch (Exception e){
return ResponseEntity.ok(answer);
}
return ResponseEntity.ok(answer);
}
}
'웹 > Spring vue 웹 개발' 카테고리의 다른 글
spring vue 장바구니 05 (0) | 2023.06.12 |
---|---|
spring vue chat gpt api 이용하기 완료 (0) | 2023.06.11 |
spring vue 장바구니 04 (0) | 2023.06.10 |
spring vue 장바구니 03 (0) | 2023.06.08 |
spring vue 게시판 수정 오류, 문자열 사이즈 문제 해결 (0) | 2023.06.07 |