요즘 핫한 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);
    }
}

 

+ Recent posts