Search

#097 #OpenAI Api 사용하기

구매하기

위 북마크 클릭해서 들어간다.
API 서비스 클릭

결제 수단 등록하기

설정 >> Billing >> 카드등록
자동 충전 설정을 해야된다. 사용된 만큼 차감되고 다시 충전해서 사용되는 스타벅스 충전금 채우고 쓰는 거랑 비슷한 개념
일단 테스트 하는 거니 최소 세팅만 하고 가보자.

프로젝트 생성

왼쪽위를 클릭해서 프로젝트를 하나 생성한다.
이름 설정! 나는 현재 프로젝트 이름인 ohflix로 설정

키 생성 하기

Your Profile >> User API keys >> view project API kes 이렇게 선택하면, 프로젝트 마다 발급된 API 키들을 확인할 수 있고, 또 여기서 생성을 하면된다.
새로운 API키를 생성할려면 여길 클릭!
키를 생성하는 이 두가지 메뉴에서 You를 선택하면 내 개인키를 발급받는데, 이건 탈취가 되면 다 털릴 수 있다. 그러므로 나혼자만 사용하는 경우에는 이걸 사용 하지만 팀으로 프로젝트할때는 제한된 권한을 부여할 수 있는 service account로 키를 발급받으면 키가 탈취당하면 버리면 된다. 그래서 좀 더 보안이 좀 더 좋기 때문에 나는 Service account 선택
키 생성이 되었다!

요청 메소드 형태

// 요청 end point 와 필수 헤더 정보 curl https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY" -H "OpenAI-Organization: org-1wAxMEYJB7TZZeqQMjsI0xCF" \ -H "OpenAI-Project: $PROJECT_ID"
Java
복사
만약에 프로젝트가 여러개이고 그중 기본 프로젝트가 있다고 가정할 때 기본 프로젝트에 접근할때는 “OpenAI-Project:” 란을 생략 가능하고 다른 프로젝트에 접근할 때는 Project-ID를 꼭 명시해줘야 된다.
프로젝트 아이디는 왼쪽 상단에 프로젝트를 선택 후 General을 선택하면 확인 가능

Postman으로 요청 해보기

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": "user", "content": "Say this is a test!"}], "temperature": 0.7 }'
Java
복사
위의 형식이 요청 형식이다. 그리고 endpoint 주소가 약간 달라졌는데, 저게 openAI모델을 지정하는 주소라고 생각하면된다. /chat/completions은 대화형을 위한 모델 /images/generations 이건 DallE같은 이미지 생성을 위한 모델 /codex/completions 이건 코드 완성을 위한 모델

시범 요청

문서대로 1. 엔드 포인트 선택 2. 발급받은 시크릿키 헤더에 토큰으로 실어주고 3. 바디 데이터로 보내니까 POST 요청으로 위의 형태에 맞춰서 보내보자. 아! 그리고 여기서 temperature는 창의성 정도라고 생각하면되고 0에 가까울수록 정확한 사실에 가까운 대답을 하고 1에 가까울수록 창의적인 대답을 한다. 기본 세팅은 0.7이다.

응답이 옴

무엇을 도와드릴까요 하고 응답이 왔다.
{ "id": "chatcmpl-9ePT5nCG54RQ6wstQBNz3naC3MC7W", "object": "chat.completion", "created": 1719418047, "model": "gpt-3.5-turbo-0125", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "안녕하세요! 테스트에요. 무엇을 도와드릴까요?" }, "logprobs": null, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 19, "completion_tokens": 27, "total_tokens": 46 }, "system_fingerprint": null }
Java
복사
이제 이 응답 데이터의 형태를 보고 메시지를 추려서 자바 객체로 만들면 프로젝트에 사용가능할것. 만약 응답이 response라면 response.choices[0].message.content가 우리가 원하는 데이터가 될거 같다.