02. Controller와 Dto를 생성해보자!

2024. 1. 20. 22:13·Web/GPT 응답 API 서버

먼저 요청/응답을 어떤 형식으로 받을 것인지 생각해보았습니다.

도큐먼트를 읽어보니 사용하는 모델에 따라 요청해야하는 형식이 다른 것을 확인하였습니다.

 

# Text 응답 요청

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

# Audio 응답 요청
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "The quick brown fox jumped over the lazy dog.",
    "voice": "alloy"
  }' \
  --output speech.mp3
  
  ....

 

특히, 오디오 / 사진 / 파일 / 텍스트 등에 따라 모두 EndPoint도 달랐기 때문에 제 API 서버에서도 용도에 따라 각자 다른 Request와 EndPoint를 가지는 것으로 정하였습니다.

 

그래서 먼저 텍스트 요청에 대한 처리만을 처리하기 위한 RequsetDto와 Controller 를 생성하였습니다.

@RestController
@RequiredArgsConstructor
public class GptApiController {

    private final GptApiService gptApiService;

    @PostMapping("/text")
    @ResponseBody
    public String getAnswerForQuestion(@RequestBody TextReq req) {
        return gptApiService.getAnswerForQuestion(req).toString();
    }

}
@Data
public class TextReq {
    private String question;
}

 

위의 Text 응답 요청 curl을 보면, system과 user 2가지의 role이 있고 각각의 content가 있는 것을 볼 수 있습니다.

시스템에게 assistant, poetic assistant 등으로 설정하고 역할을 부여 할 수 있는 것 같은데 몇몇 테스트를 해보고 여러 포스팅들을 찾아보니 별다른 차이점을 느끼기 어렵다는 이야기가 많아 저는 system 역할을 제외하였습니다.

그리고, 이제 openai 에게 질문할 question을 Post 형식으로 받아 서비스에게 전달하도록 작성하였습니다.

저작자표시 비영리 변경금지 (새창열림)

'Web > GPT 응답 API 서버' 카테고리의 다른 글

04. 마무리!  (0) 2024.01.20
03. Service를 구현해보자!  (1) 2024.01.20
01. API 구조를 설계해보자!  (0) 2024.01.20
00. Chat GPT 응답을 반환해주는 API 서버를 만들어보자!  (0) 2024.01.20
'Web/GPT 응답 API 서버' 카테고리의 다른 글
  • 04. 마무리!
  • 03. Service를 구현해보자!
  • 01. API 구조를 설계해보자!
  • 00. Chat GPT 응답을 반환해주는 API 서버를 만들어보자!
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    Entity
    Java
    MSA
    OpenAI API
    오블완
    클러스터
    백준
    react
    chat GPT
    스프링부트
    스프링 부트
    리액트
    티스토리챌린지
    쿠버네티스
    mapstruct
    클론코딩
    예외
    spring boot
    REST API
    인스타그램
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
02. Controller와 Dto를 생성해보자!
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.