OpenAI 가입하고 첫 API 호출 — Codex가 짜고 Codex가 실행
OpenAI 콘솔에서 API 키 받고, Codex한테 부탁해서 터미널 안에서 GPT랑 첫 대화를 해봐요. 코드는 한 줄도 외우지 않아요.
이 챕터를 끝내면 OpenAI API 키가 손에 있고, Codex가 짜준 가벼운 코드로 "안녕"이라고 묻고 GPT가 답하는" 첫 대화를 한 번 검증한 상태가 돼요. 진짜 챗봇 모양(웹 UI)은 ch15에서. 이번엔 "내가 만든 게 GPT랑 정말 통한다"를 확인하는 단계예요.
Codex 앱 안 터미널 영역에 > 안녕 한 줄 입력하니 GPT: 안녕하세요! 무엇을 도와드릴까요? 같은 답이 돌아오는 흐름. 이게 ch15 웹 챗봇의 심장 부분이에요.
OpenAI API 콘솔 들어가기
ChatGPT나 Codex를 쓰던 그 OpenAI 계정이 그대로 통해요. 다만 개발자용 API는 별도 콘솔(platform.openai.com)에서 결제 수단·키를 따로 셋업해야 해요.
- platform.openai.com 접속
브라우저로 platform.openai.com 열기. ChatGPT·Codex 쓰던 계정이 있으면 같은 이메일로 로그인하면 돼요. 없으면 새로 가입(이메일 인증 또는 Google).
- 조직(Organization) 진입 / 약관 동의
첫 진입 시 조직(organization) 이름을 정하라는 화면이 떠요. 본인 이름이나 "personal"처럼 아무거나 OK. 약관 동의 후 콘솔 메인.
- 결제 수단 등록 + 소액 충전
OpenAI API는 선불 충전 방식이에요. 콘솔 좌측 Settings → Billing에서 카드 등록하고, 학습용으로 $5~10 정도만 충전. ch14·15·16 실습은 이 정도면 충분히 끝나요. ch17 배포 단계에 가서 친구한테 공유할 때 한도를 걸어두면 폭주 위험 없이 안심하고 쓸 수 있어요.
ChatGPT Plus/Pro 구독하고 있어도 API는 별도 결제예요. ChatGPT 구독 = 사람이 chatgpt.com에서 쓰는 비용, API = 내가 만든 챗봇이 GPT 모델 호출할 때 드는 비용. 이번엔 후자.
API 키 발급
- Dashboard → API keys
콘솔 좌측 메뉴에서 Dashboard → API keys로 이동. "Create new secret key" 버튼 클릭.
- 휴대폰 SMS 인증 (계정당 한 번)
첫 키 발급 때만 휴대폰 SMS 인증 창이 떠요. 두 번째 키부턴 안 물어봐요. 일반 이동통신사 번호로 인증되고, Google Voice·VoIP·고정전화 번호는 거절돼요. 한국 번호로도 잘 통과하지만 SMS가 가끔 늦게 오니 1~2분 기다려보고 재시도.
- 이름 정하고 생성
키에 이름을 붙여요 (예:
vibe-coding-curriculum). 어디에 쓰는 키인지 나중에 알아볼 수 있게 알아보기 쉽게. 권한·프로젝트 옵션은 기본값 그대로 OK. - 키 복사 — 이때 한 번만 보여요
생성 직후 키가 한 번 표시돼요. 형태는
sk-...로 시작하는 긴 문자열. 이 화면을 닫으면 다시 못 봐요. 잠시 다른 곳에 임시로 붙여넣어 두세요(메모장 등).
- 남한테 보여주지 마세요. 이 키를 가진 사람은 내 계정 비용으로 GPT를 쓸 수 있어요.
- GitHub·Slack·이메일에 붙여넣지 마세요. ch17에서 안전하게 관리하는 방법을 다뤄요.
- 잃어버리면 재발급. 같은 키를 다시 보여주는 방법은 없어요. 분실 시 새로 만들고 옛 키는 폐기.
지금 해야 할 일은 단 하나 — Codex한테 잠깐 알려줄 자리에 붙여놓기. 자세한 보안 방법은 ch15·ch17에서.
Codex한테 첫 챗봇 코드 부탁하기
이제 Codex 차례. 새 프로젝트 폴더를 하나 만들고 거기서 Codex가 코드를 짜고 실행하게 해요.
작업 폴더 준비
Part 2에서 만든 흐름 그대로예요.
- 바탕화면이나 문서 폴더에 빈 폴더 하나 만들기 (예:
coach-bot) - Codex 앱 실행 → "프로젝트 열기" → 방금 만든 폴더 선택
작업 폴더가 열렸으면 새 스레드에서 이렇게 말해봐요.
이 폴더 안에 가벼운 챗봇 스크립트 하나 만들어줘.
요구사항:
- OpenAI API를 써서 사용자 입력에 답해
- 모델은 gpt-4o-mini로 시작 (저렴하고 빠름)
- 터미널에서 실행하면 '> ' 프롬프트가 떠서 내가 입력하면 답이 출력됨
- 'exit' 입력하면 종료
- 페르소나는 '친근한 한국어 글쓰기 코치'. 사용자가 글을 보여주면 톤·구조·맞춤법을
짧게 짚어줘.
- API 키는 .env 파일에서 읽도록. .gitignore에 .env 포함.
코드는 가능한 한 짧고 단순하게. Python으로.
Codex가 다음 같은 파일 묶음을 만들어줄 거예요.
chat.py— 챗봇 본체.env— API 키를 적어둘 곳 (비어있는 상태로 생성).gitignore—.env가 들어 있어 외부 노출 방지requirements.txt— 필요한 파이썬 라이브러리 목록
이 파일들이 뭘 하는지 한 줄 한 줄 외울 필요 없어요. 그냥 "Codex가 알아서 만든 한 묶음"으로 보면 돼요.
API 키 넣기 — Codex한테 시키기
.env는 점으로 시작하는 숨김 파일이라 macOS Finder, Windows 탐색기, Codex 좌측 파일 트리에서도 기본 설정에서 잘 안 보여요. 직접 찾아 더블클릭으로 여는 건 비개발자가 끼게 되는 첫 번째 함정.
파일을 직접 열려고 하지 말고, Codex한테 통째로 시키세요. 채팅창에 이렇게 한 줄 부탁하면 끝:
.env 파일에 OPENAI_API_KEY 값을 sk-... (여기 키 붙여넣기) 로 채워줘.
파일이 없으면 새로 만들고, 이미 있으면 그 값만 바꿔줘.
.gitignore에 .env가 포함돼 있는지도 한 번 확인해줘.
Codex가 자기 손으로 .env를 만들거나 수정하고, "이렇게 채웠어요"라고 결과를 보여줘요. 저장 버튼 누를 일도, 텍스트 에디터를 따로 띄울 일도 없어요.
확인이 끝났으면 메모장에 임시로 둔 키는 지우세요. 화면이나 클립보드에 떠 있는 키를 누가 옆에서 보면 노출이거든요.
".env 안에 어떤 값이 들어 있는지 알려줘" 같은 식으로 Codex한테 물으면 내용을 채팅에 띄워서 보여줘요. 파일 자체를 더블클릭으로 여는 것보단 이게 훨씬 안정적이에요.
실행 — Codex가 대신 돌려줘요
Part 1~3 내내 그랬듯, 터미널 명령은 직접 치지 않아요. Codex한테 부탁:
방금 만든 챗봇 스크립트 실행해줘.
필요한 라이브러리가 있으면 먼저 설치하고.
중요: 백그라운드(detached)로 돌리지 말고, 내가 터미널에서 직접
입력하고 답을 받을 수 있도록 포어그라운드로 실행해줘.
실행한 다음엔 내 입력을 기다리는 상태로 멈춰 있어줘.
Codex 앱 하단 터미널 영역에 라이브러리 설치(설치는 한 번만 일어나요)와 실행 메시지가 흐르고, 잠시 후 > 프롬프트가 뜰 거예요. 그 영역에 직접 타이핑할 수 있어야 정상이에요. Codex가 자기가 입력을 대신 쳐주려고 하면 "내가 직접 칠게, 그냥 기다려"라고 한 번 막아주세요.
Codex가 스크립트를 백그라운드로 돌려버린 경우예요. "방금 실행한 거 백그라운드로 갔는데, 종료하고 포어그라운드로 다시 띄워줘"로 한 번 더 부탁하면 돼요.
> 안녕
GPT: 안녕하세요! 무엇을 도와드릴까요? 글쓰기 관련해서 도움이 필요하시다면
편하게 말씀해 주세요.
> 짧은 자기소개 글 써봤는데 한번 봐줄래? "안녕하세요, 저는 디자이너 김지수입니다.
사용자 경험 만드는 일을 좋아해요."
GPT: 깔끔한 첫 인상이에요! 두 가지만 짚어드릴게요.
1) "사용자 경험 만드는 일" → "사용자 경험을 설계하는 일"이 더 직업적인 톤
2) "좋아해요" 뒤에 한 문장 더 — 어떤 결과물을 만들어왔는지 한 줄
...
> exit
종료합니다.
이게 보였으면 ch14의 본질은 끝난 거예요. 내가 만든 코드가 OpenAI API로 가서 GPT 모델한테 답을 받는다. ch15부터는 이 코드를 웹 챗봇으로 승격시켜요.
비용 확인 — 한 번 대화 얼마나 들었나
콘솔의 Usage 탭에 들어가면 방금 대화에 얼마가 차감됐는지 보여요. gpt-4o-mini 기준 한국어 짧은 대화는 한 번에 보통 0.0001~0.001달러 수준 — 1000번 해도 1달러 정도. 학습용으론 차고 넘쳐요.
ch17에서 사용 한도 알람과 자동 차단 한도를 걸어둘 거예요. 그 전까지는 충전한 잔액 안에서만 돌고 있다고 안심해도 돼요.
원하는 대로 안 움직일 때
사례 1: "API key not found" 또는 "Invalid API key" 에러
→ .env 파일에 키가 안 들어갔거나, 줄 앞뒤에 따옴표·공백이 섞인 경우. Codex한테 "OPENAI_API_KEY 값이 정확히 어떻게 들어가 있는지 알려줘"로 확인. 키 자체가 잘못됐다면 콘솔에서 새로 발급.
사례 2: "You exceeded your current quota" 또는 결제 관련 에러 → 충전한 잔액을 다 썼거나 결제 수단이 풀린 경우. 콘솔 Settings → Billing에서 잔액 확인하고 추가 충전. 학습용이면 $5~10 정도면 충분.
사례 3: 답이 영어로 옴 → 시스템 프롬프트가 약함. Codex한테 "한국어로만 답하도록 코드의 시스템 프롬프트를 더 강하게 적어줘". ch16에서 본격적으로 다뤄요.
사례 4: 응답이 너무 길거나 짧음 → Codex한테 "답변 길이 적절히 조절해줘. 한 응답에 3~5문장 정도로." 같은 톤 조정 요청.
사례 5: Codex 앱이 코드 실행 도중 멈춘 듯 보임 → 첫 라이브러리 설치는 30초~1분 걸려요. "지금 어디 단계야?"로 진행 상황 확인하면 답이 와요.
다음 챕터에서
지금 만든 건 터미널 안에서만 동작하는 가벼운 형태. 다음 챕터에선 Streamlit이라는 도구로 같은 챗봇을 브라우저에서 채팅창처럼 띄워봐요. 코드는 여전히 Codex가 짜고, 학습자는 "어떤 챗봇 모양을 원하는지"만 결정해요.