『챗GPT API를 활용한 챗봇 만들기』의 챗봇(GPT)을 따라 만들어봤습니다.

“구름IDE에서 실습하는 책이 나온다던데? 알고 있었어?”

어느날 지인이 뜻밖의 소식을 전해왔다. 구름IDE에서 챗봇을 만드는 책이 곧 나온다는 소식이었다. 고민할 틈도 없이 해당 출판사 지인에게 연락해 물었다. 책의 이름은 『챗GPT API를 활용한 챗봇 만들기』. 3월 출간 예정이라고 했다. 잠시 망설이다가 정말 궁금했던 질문을 던졌다. “구름IDE를 쓴 이유가 뭔가요?”

기술서는 여러 난관을 거쳐 출간된다. 상당 수의 저자는 집필 중간에 포기하고, 출간 직전, 버전 이슈나 서비스 UI가 바뀌어 전체 원고를 뜯어고치는 일도 비일비재하다. 책을 집필한다는 건 생각보다 힘들고 오랜 시간이 걸린다. 인고의 시간을 거쳐 책이 세상에 나오면, 예제가 실행되지 않는다는 독자 문의가 기다리고 있다. 실습 환경이 제각각인 탓이다.

『챗GPT API를 활용한 챗봇 만들기』가 구름IDE를 개발 환경으로 선택한 건 이 때문이었다. 구름IDE를 이용하면 독자의 PC OS(운영체제)나, 네트워크 환경, 어떤 언어나 라이브러리, 프레임워크가 설치되고, 버전이 어떻든 관계없이 클라우드 환경에서 모두에게 같은 독립된 개발 환경을, 단 몇 번의 클릭만으로 제공할 수 있다. 독자는 더 이상 개발 환경 구축에 시간을 허비할 필요가 없다. 개발부터 배포, 실행까지도 하나의 환경에서 할 수 있다.

그런데, 구름IDE를 쓰면 책을 실습하는 과정에서 겪게 되는 여러 문제로부터 정말 해방(?)될 수 있을까? 마음 한켠에 의문을 품은 당신을 위해 책을 직접 따라하며 챗봇을 만들어봤다. 6~7장에 걸쳐 소개된 ChatGPT API를 활용한 챗봇 웹 앱을 말이다. 물론, 구름IDE에서.

written by Snow

본 콘텐츠는 한빛미디어의 허락을 받고 『챗GPT API를 활용한 챗봇 만들기』의 6, 7장 내용을 토대로 재편집했음을 알립니다.

기다림도 잊을 무렵, 책이 도착했다. 책은 생각보다 묵직했다. 아니나 다를까 책의 내지가 ‘4도’였다. 출판에서 ‘4도’는 CMYK(CMYK, Cyan, Magenta, Yellow, Black) 인쇄를 말한다. 이 색 공간은 흰색을 제외한 모든 컬러를 표현 가능한데, 주로 인쇄에 사용한다. (디자인 툴을 써봤다면 익히 봤을거다.) 

기술 성숙도가 높아 변화가 적지 않은 이상은, 책의 수명이 길고 시장이 크지 않은 이상은 소프트웨어 개발서 내지를 보통 4도로 찍진 않는다. 기술이 바뀌면 책의 수명은 그만큼 짧아진다. 그러한 책을 1도, 2도(흰색과 흑, 별색)보다 인쇄 비용이 비싼 4도로 찍는 건 비용적인 리스크가 크다. 손익분기점을 넘기도 더 힘들어지는 건 당연한 일. 

구름IDE를 사용한 건 책을 쓸 당시의 개발 환경 그대로를 독자에게 전달할 수 있기 때문일거라 지레 짐작하며 책을 훑어봤다.

1장은 개발 환경 쉽게 구성하기. 구름IDE가 소개되어 있었다. 그 뒤로는 챗봇 실습에 꼭 알아야 할 파이썬 기초, ChatGPT API 설명, 그리고 프롬프트 엔지니어링 설명이 이어졌다. 프롬프트 엔지니어링은 기초 설명과 함께 구체적인 기법과 예제가 잘 정리되어 있었다. ‘챗봇’ 책이라길래 큰 기대를 하지 않았는데, 예상외로 구성은 갖출 것을 갖췄다. 특히 프롬프트 엔지니어링 기법은 꽤나 유용해 보여 나중에 정독하기로 마음먹었다. 그외에도 ChatGPT API를 쓰다 보면 고민하게 되는 임베딩, 대화 내용 저장, 에이전트 그리고 최신 GPTs도 빠뜨리지 않고 다뤘다.

따라 해보기로 마음 먹은 예제는 6~7장에 소개된 챗봇 웹 앱이다. 처음 ChatGPT와 카카오톡 채널을 연계한 서비스를 따라 실습했는데, 카카오 채널 개설 승인에만 며칠이 걸려서 고민 끝에 예제를 바꿨다.

실습 과정은 도식으로 실습 흐름을 쉽게 이해할 수 있게 친절히 설명했다. 구름IDE에 플라스크 서버를 두고 여기에 작성한 백엔드 프로그램이 OpenAI와 클라이언트와 통신하는 단순한 서버 클라이언트 구조다.

1장부터 따라 해야 하지만, 기술 블로그에 실을 분량을 고려해 6, 7장 챗봇 웹 앱 개발 내용을 중심으로 하되, 그외에 필요한 선행 실습은 따로 정리했다. 책이 없더라도 독자들도 따라 할 수 있게 한빛미디어 허락을 받고 과정을 나름대로 정리했다. 그럼, 함께 실습을 시작해 보자.

구름IDE와 ChatGPT에 회원가입부터 해주세요!
· 구름IDE 회원 가입 방법은 도움말 문서를 참고해주세요.
· 구름IDE 가입하기(링크) ChatGPT 가입하기(링크)

1. 구름IDE에서 플라스크 컨테이너를 만들게요

가장 먼저 개발 환경부터 구축해야 할 것이다. 구름IDE는 다양한 개발 환경을 미리 구성해 이미지로 제공하고 있다. ChatGPT 챗봇 웹 앱에 필요한 플라스크도 그중 하나. 1장에는 플라스크 소프트웨어 스택의 컨테이너 생성과 기본적인 사용법이 소개되어 있어 가볍게 훑고는 컨테이너를 생성했다. 시작한지 3분도 채 되지 않아 미션 클리어. 구름IDE가 처음이라면, 다음 스텝 바이 스텝을 천천히 따라하자.

❶ 크롬 웹브라우저에서 구름IDE(ide.goorm.io)를 엽니다.
❷ [새 컨테이너] 버튼을 클릭합니다.
❸ 컨테이너 스택으로 [Flask]를 선택합니다.
❹ 컨테이너 이름으로 chatbot을 입력합니다.
❺ [생성하기] 버튼을 눌러 컨테이너를 생성합니다.
❻ 잠시 기다리면 컨테이너가 생성됩니다. [컨테이너 실행하기]를 눌러 컨테이너를 실행합니다.

2. 파이썬 버전을 업그레이드해요

구름IDE 플라스크 컨테이너에 기본 설치된 파이썬 버전은 3.7.4다. ChatGPT 챗봇 실습에는 파이썬 3.11 버전이 필요해 실습을 따라하려면 파이썬 버전을 업그레이드해야 한다. 문제는 구름IDE 컨테이너의 OS가 우분투 18.04라서 파이썬 3.9 이상으로 버전을 업그레이드하는 과정이 다소 복잡하다는 것. 저자는 친절하게도 파이썬을 쉽게 업데이트할 수 있는 스크립트 파일을 제공했다. 다음은 이 스크립트 파일을 이용해 파이썬 버전을 업그레이드하는 법.

❶ 프로젝트 창에서 마우스 오른쪽 버튼을 클릭해 풀다운 메뉴를 열고, [새 파일]을 클릭합니다.
❷ 파일 이름으로 install_python3.11.sh을 입력하고 enter↵ 키를 누릅니다.
❸ 그러면, install_python3.11.sh 파일이 생성되고 에디터 창에 해당 파일의 내용이 열립니다.
❹ 크롬 웹 브라우저에서 새 탭을 열고, github.com/minji337/jjinchin/blob/pub-1/install_python3.11.sh 페이지를 엽니다.
❺ install_python3.11.sh 파일 본문을 Ctrl+C 단축키를 눌러 복사합니다.
❻ 구름IDE로 돌아와 복사한 텍스트를 에디터에 붙여넣습니다. Ctrl+V로 붙여넣을 수 있습니다. 다음, Ctrl+S 단축키를 눌러 파일을 저장합니다.
❼ 저장한 install_python3.11.sh 파일 본문의 맨 위로 이동합니다.
❽ 두 번째 줄의  chmod +x install_python3.11.sh && ./install_ python3.11.sh 텍스트를 복사합니다. (#은 복사하면 안 됩니다.)
❾ 터미널을 클릭하고 복사한 테스트를 붙여넣습니다. 다음 enter↵ 키를 눌러 명령어를 실행합니다.
❿ 인내심을 가지고 기다리면 명령어 실행이 끝날 것입니다. (free 플랜의 경우 30분 정도가 소요됩니다.)
⓫ 터미널에서 source ~/.bashrc 명령어를 실행합니다. 이어서 python3 –version를 실행하세요. 파이썬 버전을 확인했나요? 3.11.0인가요? 잘 따라하셨습니다.

3. ChatGPT API 키를 받아요

OpenAPI는 ChatGPT API를 HTTP 프로토콜과 SDK(Software Development Kit) 두 가지를 제공한다. HTTP 프로토콜을 사용하면 SDK가 필요 없지만, 인터페이스가 직관적이지 않아 SDK가 사용이 더 쉬워 이 책의 예제는 SDK 방식을 사용하고 있었다. 이제 ChatGPT API를 사용하는 데 필요한 키를 발급받을 것이다. 방법은 이렇다.

❶ 크롬 웹 브라우저 주소창에 https://platform.openai.com/apps를 입력하고 홈페이지를 엽니다.
❷ [API]를 선택합니다.
❸ 여러 메뉴 중 [API keys]를 클릭합니다.
❹ [Create new secret key] 버튼을 누릅니다.
❺ 적당한 키 이름을 입력합니다. 여기서는 test key라고 입력했습니다.
❻ [Create secret key]를 눌러 API 키를 생성합니다.
❼ API 키가 생성됐습니다. [Copy]를 눌러 키를 복사하고, 메모장에 잘 적어둡니다.
❽ [Done]을 눌러 API 키 생성을 마칩니다.

4. 플라스크가 처음이라고요? 기본 사용법을 알려드릴게요

“플라스크는 파이썬으로 작성된 마이크로 웹 프레임워크입니다. 웹 앱을 구축하는 데 필요한 핵심 기능을 제공하는 데 중점을 둔 단순하고 미니멀한 웹 프레임워크죠. 가볍고 쉽게 구축을 시작할 수 있고, 모듈식 설계로 필요한 기능을 쉽게 추가할 수 있죠.”

https://easyitwanner.tistory.com/347 중

구름IDE 플라스크 컨테이너에는 기본 개발 환경이 모두 설치되어 있었다. slackbot 폴더 하위의 application.py 파일에는 플라스크 서버를 구동하는 코드와 브라우저에 “Hello goorm!”을 출력하는 서비스가 이미 구현되어 있다. 책을 따라 플라스크 기본 사용법을 익혀봤다. 플라스크 서버를 구동하니 웹 브라우저에 Hello goorm!이 출력됐다. 여러분도 다음을 따라 플라스크 서버의 기본 사용법을 익혀보자.

❶ Flask 컨테이너를 실행해 구름IDE 워크스테이션(작업공간)을 엽니다.
❷ [▶ new run flask] 버튼을 클릭합니다.
❸ 터미널 창에 ‘Running on http://0.0.0.0:80/’이라고 나오면 Flask 서버가 실행된 것입니다.
❹ 터미널 우측 URL 옆 [복사하기] 버튼을 클릭합니다.
❺ 크롬 웹 브라우저에서 새 탭을 열고 복사한 URL을 붙여넣습니다. “Hello goorm”이라는 텍스트가 나오면 성공입니다.

[시작]을 누른 후 조금 있으면 ‘Running on http://~’라는 메시지가 출력된다. 서버가 정상적으로 구동되어서 요청을 기다리고 있는 상태라는 의미다. [new run flask] 탭 왼쪽 상단의 [종료]를 클릭하면 서버가 종료되고, 이 버튼은 [시작]으로 토글링된다. 종료하는 또 다른 방법은 <CTRL> + <C>.

application.py 살펴보기

책에는 플라스크 코드도 간단히 설명되어 있었다. 코드 설명은 책 인용으로 대체한다. 파이썬과 플라스크에 이미 익숙하다면 이 장은 건너뛰기를.

서버 동작에 대해 알아보았으니 application.py 파일의 서버 기능을 살펴보자. 서버를 구동할 때 [new run flask] 탭의 출력 내용을 보면 다음과 같은 부분이 있다.

이 명령은 application.py라는 프로그램을 80번 포트에서 실행하겠다는 의미다. 그러면 application.py의 코드가 순서대로 실행된다. 어떤 내용인지 코드 블록별로 보면 다음과 같다.

⬇️ Flask 객체 생성 | 파일 chapter07/application.py

application = Flask(__name__)
Python


위 코드는 Flask 클래스로부터 객체를 생성해서 application이라는 변수에 넣겠다는 의미다. 이 application의 run 메소드를 호출하면 서버가 구동된다.

⬇️ URL 주소와 함수 연결 | 파일 chapter07/application.py

@application.route("/") def hello():
return "Hello goorm!"
Python


@application.route는 괄호 안의 URL로 접속했을 때 이곳으로 찾아오라(route)는 데코레이터다. 괄호 안에 표시된 “/”는 기본 URL을 의미하는 것으로 goorm에서 부여한 주소다. 이때 @application.route 밑에 선언된 함수를 라우팅 함수라고 부른다. 만일 라우팅 함수를 “기본URL/welcome”으로 연결하고 싶으면 다음과 같이 route를 수정하면 된다.

⬇️ route 수정 | 파일 chapter07/application.py

@application.route("/welcome")
def welcome(): # 함수명이 꼭 welcome일 필요는 없습니다.
return "Hello goorm!"
Python

return되는 문자열과 route 주소를 다양하게 바꿔가면서 실험해 보자. 다만, 프로그램 변경이 있으면 서버를 재기동해야 적용된다(프로그램을 수정할 때 자동으로 서버가 재기동되는 방법은 이후 설명하겠다.).

⬇️ 서버 구동 | 파일 chapter07/application.py

if __name__ == “__main__”:
    application.run(host='0.0.0.0', port=int(sys.argv[1]))
Python

Flask 객체를 담고 있는 application으로부터 run 메소드를 호출해 서버를 구동시키는 코드다. 서버를 구동할 때 application.py 옆에 입력되던 숫자(80)가 매개변수 port로 전달된다.

파이썬이 쉬운 이유 중 하나는 한 줄씩 줄 단위로 실행된다는 점이다. 서버를 띄우는 과정도 마찬가지다. 1 Flask 객체 생성 → 2 라우팅 함수 정의 → 3 Flask 객체 run(서버 수행) 순서로 실행된다.

5. 웹 리소스 적용하기

플라스크 기본 사용법을 익혔으니, 본격적으로 ChatGPT를 이용한 챗봇 웹 앱을 만들 시간이다. 가장 먼저 해야 할 일은 웹 리소스 개발이다. 웹 리소스는 HTML, CSS, 자바스크립트처럼 눈에 보이는 인터페이스와 관련된 것을 말한다. 개발이라고 했지만 이미 저자가 깃허브에 올려둔 웹 리소스 코드를 가져오는 정도다. 코드가 익숙치 않은 초심자를 위해 HTML 파일 하나에 모두 구현해 두었다. 다시 책 속으로 떠나보자.

chat.html 브라우저 출력하기

01 HTML, CSS, 자바스크립트가 모두 구현된 HTML 파일과 이미지 파일을 다운로드한 후 다음과 같이 워크스페이스에 업로드한다.

● 파일 위치: github.com/minji337/jjinchin/tree/pub-1/contents/chapter07

❶ 크롬 웹브라우저에서 저자의 깃허브 페이지(https://github.com/minji337/jjinchin)를 엽니다.
❷ [Code]를 클릭합니다.
❸ 나타난 메뉴 중 [Download ZIP]를 클릭합니다.
❹ 도서의 예제 전체가 다운로드됐을 것입니다. 파일 탐색기(맥OS라면 파인더)에서 ZIP 파일 압축을 풀고 웹 브라우저로 돌아옵니다.
❺ 구름IDE 프로젝트 탐색 영역에서 컨테이너 이름(chatbot)에 커서를 두고 마우스 우클릭을 합니다.
❻ 풀다운 메뉴에서 [가져오기] → [폴더]를 클릭합니다.
❼ [파일 선택]을 클릭합니다. 다음 앞서 받은 예제 중 chapter07 폴더 안의 static 폴더를 선택합니다.
❽ 업로드할 폴더를 선택했으면 [확인]을 눌러 업로드합니다.
❾ static과 그 하위 폴더, 파일이 모두 가져와졌습니다. 마찬가지 방법으로 templates 폴더도 복사합니다.
❿ static/images와 templates 폴더가 모두 복사됐습니다. 잘 따라하셨습니다.

02 import 구문에 render_template을 추가한 후 chat-app 라우트와 chat_app 함수를 다음과 같이 코딩한다. flask 패키지의 render_template이라는 함수를 이용해 templates 폴더에 있는 chat.html 파일을 브라우저로 전달하겠다는 뜻이다.

❶ 프로젝트 탐색창에서 application.py를 클릭합니다.
❷ import Flask 뒤에 “, render_template”을 추가합니다.

, render_template
Python

❸ 이렇게요.
❹ return “Hello goorm!” 바로 다음 줄에 다음 코드를 추가합니다.

@application.route("/chat-app")
def chat_app():
    return render_template("chat.html")
Python

❺ 전체 코드는 다음과 같아요. 잘 따라왔나요?

⬇️ application.py

from flask import Flask, render_template
import sys
application = Flask(__name__)

@application.route("/") 
def hello():
    return "Hello goorm!"


@application.route("/chat-app")
def chat_app():
    return render_template("chat.html")


if __name__ == "__main__": 
    application.run(host='0.0.0.0', port=int(sys.argv[1]))
Python

03 서버를 재기동한 후 브라우저의 주소란에 여러분의 URL에 /chat-app을 붙여서 입력한다. 다음과 같이 출력되면 성공이다.

❶ Flask 서버가 실행 중이라면 터미널 창에서 Ctrl+C를 눌러 중단합니다.
❷ [new run flask]를 눌러 Flask 서버를 실행합니다.
❸ Flask 서버가 정상적으로 실행됐습니다. URL 복사 버튼을 누릅니다.
❹ 크롬 웹 브라우저에서 새 탭을 열고 URL을 붙여넣습니다. URL 끝에 /chat-app를 타이핑하고 enter↵ 키를 누릅니다. 그러면 다음과 같이 채팅 웹 앱이 열릴 것입니다.

6. Chatbot 객체와 연결해서 대화하기

챗봇 구축도 벌써 막바지에 이르렀다. ChatGPT 모듈을 설치하고, API 키를 환경변수에 담고, 서버측 코드를 일부 수정하기만 하면 된다.

6.1 OpenAI 모듈을 설치해요.

❶ 구름IDE 터미널 영역에서 다음 명령어를 실행합니다.

pip install openai
Bash

❷ OpenAI 모듈이 설치되었습니다.

6.2 API 키 환경변수에 담기

앞서 발급받은 API 키를 사용할 차례가 드디어 왔다. 아래 명령어에서 OPENAI_API_KEY=”” 중 따옴표 안의 텍스트를 자신의 API 키로 변경하자.

❶ 터미널 영역에 다음 명령어를 입력합니다.

echo 'export OPENAI_API_KEY="sk-XMZ2Zfgrpf1m1HOHUETFT3BlbkFJfD239G2S0##########"' >> ~/.bashrc
Bash

❷ 아무런 에러도 없다면 환경변수가 잘 등록된 것입니다. 다음 명령어를 실행합니다.

source ~/.bashrc
Bash

6.3 common.py 파일 만들기

❶ 프로젝트 탐색창에서 마우스 우클릭을 합니다.
❷ 풀다운 메뉴에서 [새 파일]을 클릭합니다.
❸ 새 파일 이름으로 common.py를 입력합니다.
❹ common.py 파일을 클릭해 에디터를 열고, 다음 코드를 붙여넣고 저장합니다.

import os
from openai import OpenAI
from dataclasses import dataclass

@dataclass(frozen=True)
class Model: 
    basic: str = "gpt-3.5-turbo-1106"
    advanced: str = "gpt-4-1106-preview"
    
model = Model();    
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"), timeout=30, max_retries=1)
Python

6.4 chatbot.py

❶ 프로젝트 탐색창에서 마우스 우클릭하고, [새 파일]을 클릭합니다.
❷ 파일 이름으로 chatbot.py를 입력해 새 파일을 생성합니다.
❸ chatbot.py에 다음 코드를 붙여넣고 저장합니다.

from common import client, model

class Chatbot:
   
    def __init__(self, model):
        self.context = [{"role": "system", "content": "You are a helpful assistant."}]
        self.model = model

    def add_user_message(self, user_message):
        self.context.append({"role": "user", "content": user_message})

    def send_request(self):
        response = client.chat.completions.create(
            model=self.model,
            messages=self.context
        )
        return response.model_dump()

    def add_response(self, response):
        self.context.append({
                "role" : response['choices'][0]['message']["role"],
                "content" : response['choices'][0]['message']["content"],
            }
        )

    def get_response_content(self):
        return self.context[-1]['content']


if __name__ == "__main__":
    # step-3: 테스트 시나리오에 따라 실행 코드 작성 및 예상 출력결과 작성
    chatbot = Chatbot(model.basic)

    chatbot.add_user_message("Who won the world series in 2020?")

    # 시나리오1-4: 현재 context를 openai api 입력값으로 설정하여 전송
    response = chatbot.send_request()

    # 시나리오1-5: 응답 메시지를 context에 추가
    chatbot.add_response(response)

    # 시나리오1-7: 응답 메시지 출력
    print(chatbot.get_response_content())

    # 시나리오2-2: 사용자가 채팅창에 "Where was it played?" 입력
    chatbot.add_user_message("Where was it played?")

    # 다시 요청 보내기
    response = chatbot.send_request()

    # 응답 메시지를 context에 추가
    chatbot.add_response(response)

    # 응답 메시지 출력
    print(chatbot.get_response_content())
Python

6.5 appliaction.py

끝으로 application.py의 소스 코드 전체를 다음 코드로 교체합니다.

from flask import Flask, render_template, request
import sys
from chatbot import Chatbot
from common import model

# jjinchin 인스턴스 생성
jjinchin = Chatbot(model.basic)

application = Flask(__name__)

@application.route("/")
def hello():
    return "Hello goorm!"

@application.route("/welcome")
def welcome(): # 함수명은 꼭 welcome일 필요는 없습니다.
    return "Hello goorm!"

@application.route("/chat-app")
def chat_app():
    return render_template("chat.html")

@application.route('/chat-api', methods=['POST'])
def chat_api():
    request_message = request.json['request_message']
    print("request_message:", request_message)    jjinchin.add_user_message(request_message)
    response = jjinchin.send_request()
    jjinchin.add_response(response)
    response_message = jjinchin.get_response_content()
    print("response_message:", response_message)
    return {"response_message": response_message}

if __name__ == "__main__":
    application.run(host='0.0.0.0', port=int(sys.argv[1]))
Python

7. 챗봇 웹 앱과 대화하기

긴 여정이 이제 끝이 났다. 이제 챗봇과 대화를 나눠 보자. 구름IDE에서 플라스크 서버를 실행해 서버 프로그램을 실행하자. 서버 URL을 웹 브라우저에서 열고 챗봇 웹 앱과 인사해 보자. “안녕”이라는 인사에 챗봇이 뭐라고 반응하던가? 대화를 계속 이어가 보자.

❶ [new run flask] 버튼을 클릭해 Flask 서버를 실행합니다.
❷ 실행된 서버 URL을 복사합니다. 크롬 웹 브라우저에서 새 탭을 열고 URL을 붙여넣습니다. URL 끝에 ‘/chat-app’을 붙이고 enter 키를 누릅니다.
❸ ChatGPT 기반의 웹 앱 챗봇이 열렸습니다. “안녕”이라고 인사해볼까요?
❹ ChatGPT가 반갑게 인사하네요. 여러분도 잘 되나요?

⚠️ OpenAI의 ChatGPT는 가입 시 무료 크레딧이 지급됩니다. 이 크레딧은 API 키 최초 발급일로부터 약 3개월 동안만 이용할 수 있습니다. 무료 크레딧은 핸드폰 번호를 기준으로 지급되므로, ID를 여러 개 생성해도 핸드폰 번호가 같으면 지급되지 않습니다.

무료 크레딧 사용 기간이 지나 다음과 같은 에러가 나온다면, 신용카드를 등록하고 크레딧을 구매를 해야만 ChatGPT API를 이용할 수 있습니다.

openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

책 따라 챗봇 만들어보니…

블로그에 있는 콘텐츠를 따라 하다 보면, 설명되어 있지 않은 여러 문제에 직면할 때가 있다. 산전수전 다 겪은 베테랑이라면, 어렵지 않게 문제를 해결할 것이다. 그러나 개발이 업이 아닌, 이제 막 입문한 사람이 그런 문제를 하나하나 해결하며 따라가는 건 여간 쉬운 일이 아니다.

“이 책의 목적은 누구나 쉽게 API를 활용해 원하는 서비스를 개발하는 데 있습니다. 그런데 프로그래밍 경험이 없는 사람에게 개발 환경을 구축하는 일은 쉽지 않습니다. 구름IDE를 이용하면 프로그래밍을 처음 접하는 사람도 쉽게 개발 환경을 구성할 수 있습니다. 또 한국어를 지원하고, 무료 도메인도 제공하죠.”
– 이승우 저자의 『챗GPT API를 활용한 챗봇 만들기』 중

저자의 이 말은 으레 하는 소리가 아니었다. 첫 장부터 따라하지 않은 탓에 일부 앞 장에서 해야 할 것이 있었지만, ChatGPT API와 플라스크, 이 둘을 가지고 챗봇을 따라 만드는 동안 이렇다 할 문제를 겪진 않았다. 책을 쓸 당시의 저자와 같은 개발 환경, 운영체제, 네트워크 환경, 시스템 라이브러리 등을 그대로 제공받았기 때문이다.

“여러분도 저처럼 문제 없이 실습을 잘 따라했나요?”

🔔 구름은 구름IDE를 개발 환경으로 이용하는 도서를 기다리고 있습니다. 도서 홍보와 이벤트를 도와드립니다. 관련 도서를 기획, 준비 중인 출판사는 contact@goorm.io로 연락 부탁드립니다.
Posted by
snow cho

구름의 데브렐 매니저다. COMMIT과 기술 블로그 등을 맡고 있다. 온 세상을 하얗게 바꾸거나, 녹아 사라지는 눈(Snow)이 데브렐도 같다고 생각하며 개발 문화를 개선하기 위해 노력하고 있다. 최근에는 기술 블로그 기고자나 발표자를 찾고자 고군분투 중이다.