GPT API를 쓴다는 건 ChatGPT 채팅창 대신 내 프로그램이 직접 모델에 질문을 보내고 답을 받는다는 뜻이에요. 챗봇, 자동 요약, 글 분류, 사내 도구처럼 코드 안에 AI를 넣고 싶을 때 API를 써요.
처음 시작하면 계정을 만들고 키를 발급받아 결제 수단을 등록한 뒤 첫 요청을 보내는 순서로 진행돼요. 이 순서대로 하나씩 따라가면 되도록 정리했어요. 모델 이름과 요금은 자주 바뀌므로 그 부분은 공식 문서를 기준으로 확인해야 해요.
ChatGPT 구독과 API는 별개예요
가장 먼저 헷갈리는 부분이에요. ChatGPT Plus 같은 구독은 웹이나 앱에서 채팅으로 쓰는 서비스의 월정액이에요. API는 프로그램이 호출하는 별도의 서비스라서 결제도 따로 이루어져요. 구독을 하고 있다고 해서 API를 공짜로 쓸 수 있는 게 아니에요.
API 요금은 정액이 아니라 쓴 만큼 내는 종량제예요. 기준은 요청 횟수가 아니라 토큰이라는 단위예요. 모델에 보내는 입력과 모델이 돌려주는 출력의 길이를 토큰으로 세서 금액을 매겨요. 그래서 긴 문서를 통째로 넣거나 긴 답변을 받으면 그만큼 비용이 늘어나요.
계정도 구분돼요. ChatGPT 계정과 API를 관리하는 개발자 플랫폼(platform.openai.com)은 같은 로그인 정보로 들어가지만 결제와 사용량 관리 화면은 서로 달라요. API 사용량은 플랫폼 화면의 사용량 메뉴에서 볼 수 있어요.
API 키 발급하는 순서
OpenAI 개발자 플랫폼에 로그인해서 API keys 메뉴로 들어가요. 여기서 새 시크릿 키를 만들면 sk-로 시작하는 긴 문자열이 나와요. 이 키가 내 계정으로 요청을 보낼 수 있다는 증표예요.
중요한 점은 키가 만들어진 직후 한 번만 전체 값이 보인다는 거예요. 창을 닫으면 다시 볼 수 없어서, 발급받는 즉시 비밀번호 관리자나 안전한 곳에 복사해 저장해야 해요. 잃어버렸다면 새 키를 만들고 이전 키는 삭제하면 돼요.
- 키 이름 붙이기: 어떤 프로젝트에 쓰는 키인지 알아볼 수 있게 이름을 붙여 두면 나중에 관리하기 편해요.
- 프로젝트별로 나누기: 프로젝트마다 키를 따로 만들면 문제가 생겼을 때 그 키만 폐기하면 돼요.
- 키 삭제: 더 쓰지 않는 키는 바로 삭제해서 악용될 여지를 없애요.
결제 수단과 사용 한도 설정
키만 있다고 바로 호출이 되는 건 아니에요. 결제 설정 메뉴에서 결제 수단을 등록하고 크레딧을 충전해야 요청이 처리돼요. 크레딧을 미리 충전해 두고 그 안에서 차감하는 방식이라서 예상치 못한 큰 금액이 청구될 위험이 줄어요.
크레딧 잔액이 없거나 한도를 넘으면 요청이 거절돼요. 처음에는 소액만 충전해서 테스트하고, 실제 서비스에 연결할 때 충전 금액을 늘리는 방식이 안전해요.
사용 한도도 설정해 두는 것이 좋아요. 월 사용 한도를 정해 두면 코드 오류로 요청이 무한 반복되거나 키가 유출돼도 피해 금액이 한도에서 멈춰요. 개발 초반에 가장 흔한 사고가 반복문 실수로 요청이 폭주하는 것이라서 이 설정은 꼭 해 두는 것이 좋아요.
파이썬으로 첫 호출 해보기
파이썬 환경에서는 OpenAI 공식 라이브러리를 설치해서 써요. 터미널에서 pip install openai를 실행하면 설치돼요. 그다음 발급받은 키를 환경 변수에 저장해요. 맥이나 리눅스는 export OPENAI_API_KEY="발급받은 키"를, 윈도우는 시스템 환경 변수 설정에서 같은 이름으로 등록해요.
코드는 아주 짧아요. 라이브러리를 불러와 클라이언트를 만들고 요청을 보내면 돼요. 환경 변수 OPENAI_API_KEY가 설정돼 있으면 클라이언트가 자동으로 그 값을 읽어요.
from openai import OpenAI로 라이브러리를 불러와요.client = OpenAI()로 클라이언트를 만들어요. 키는 환경 변수에서 자동으로 읽혀요.response = client.responses.create(model="사용할 모델 이름", input="질문 내용")으로 요청을 보내요.print(response.output_text)로 모델의 답변 텍스트를 출력해요.
모델 이름은 공식 모델 문서에서 현재 제공되는 것 중에서 골라야 해요. 저렴하고 빠른 소형 모델로 시작해서 품질이 부족할 때만 큰 모델로 올리는 것이 비용 면에서 유리해요. 코드를 쓰지 않고 확인만 하고 싶다면 curl로 https://api.openai.com/v1/responses 주소에 Authorization 헤더로 키를 실어 보내는 방법도 있어요.
요청을 더 잘 다루는 기본 개념
모델에게 어떤 역할로 답할지 지시하려면 지시문(instructions)이나 시스템 메시지를 넣어요. 예를 들어 “고객 문의에 친절한 존댓말로 답해요”처럼 톤과 규칙을 지시문에 두고, 사용자 질문은 입력에 넣는 식으로 나눠서 보내요.
답변 길이를 제한하려면 최대 출력 토큰 값을 지정해요. 이 값을 정해 두면 예상보다 길게 답해서 비용이 커지는 일을 막을 수 있어요. 답변의 무작위성을 조절하는 옵션도 모델에 따라 제공되는데, 지원 여부가 모델마다 달라서 공식 문서의 파라미터 설명을 확인해야 해요.
이 밖에 응답을 한 글자씩 받는 스트리밍, 모델이 정해진 형식의 JSON으로 답하게 하는 구조화 출력, 모델이 내 함수를 호출하게 하는 도구 호출 기능이 있어요. 처음에는 기본 호출만으로 시작하고 필요할 때 하나씩 붙이는 것이 좋아요.
자주 만나는 오류와 해결
처음 호출할 때 가장 흔한 오류는 401이에요. 키가 잘못됐거나 앞뒤에 공백이 붙었거나 환경 변수가 설정되지 않은 경우에 나와요. 키를 다시 복사해 붙이고, 터미널을 새로 열어서 환경 변수가 반영됐는지 확인해요.
429 오류는 두 가지 원인이 있어요. 짧은 시간에 요청을 너무 많이 보내서 속도 제한에 걸린 경우와, 크레딧이 소진되거나 한도에 걸려 할당량이 부족한 경우예요. 메시지 내용을 읽어 보면 어느 쪽인지 구분되는데, 속도 제한이면 잠시 기다렸다가 다시 시도하고 할당량 문제라면 결제 화면에서 크레딧을 확인해요.
서버 쪽 오류(5xx)는 일시적인 경우가 많아서 재시도로 해결돼요. 코드에서는 실패했을 때 바로 다시 보내는 대신 기다리는 시간을 조금씩 늘려 가며 재시도하는 방식을 쓰면 안정적이에요.
키를 안전하게 지키는 법
API 키가 유출되면 다른 사람이 내 크레딧으로 요청을 보낼 수 있어요. 가장 위험한 경우가 키를 코드에 직접 적어서 깃허브 같은 공개 저장소에 올리는 거예요. 키는 코드에 넣지 말고 환경 변수나 .env 파일에 보관하고, .env 파일은 저장소에 올라가지 않도록 .gitignore에 등록해요.
웹페이지의 자바스크립트나 모바일 앱 안에 키를 넣는 것도 피해야 해요. 사용자가 브라우저 개발자 도구로 키를 볼 수 있기 때문이에요. 사용자에게 보이는 화면이 직접 API를 호출하게 하지 말고, 내가 관리하는 서버를 거쳐서 호출하도록 만들어요.
키가 유출된 것 같으면 플랫폼에서 즉시 해당 키를 삭제하고 새로 만들어요. 사용량 화면에서 이상한 요청이 없었는지도 함께 확인해요.
정리하면
GPT API는 플랫폼 계정을 만들고, 키를 발급받고, 결제 수단과 크레딧을 설정한 뒤, 공식 라이브러리로 호출하는 순서로 시작해요. ChatGPT 구독과는 별도로 결제되고 토큰 단위 종량제라는 점을 먼저 이해해야 해요.
월 사용 한도를 설정하고 키를 코드 밖에 보관하는 것만 지켜도 초보 단계의 큰 사고는 대부분 막을 수 있어요. 모델 이름과 요금은 바뀌므로 공식 문서에서 현재 정보를 확인하고 시작해요.