ChatGPT 터미널 앱 파이썬으로 만들어보기
이번 포스팅에서는 ChatGPT API를 활용하여 파이썬으로 GhatGPT와 유사하지만 터미널 상에서 돌아가는 간단한 챗앱을 구현해보겠습니다.
OpenAI API 키 설정
OpenAI에서 회원 가입 후에 API 키를 발급받는 방법은 별도 포스팅에서 자세히 다루었으니 참고 바랍니다.
사전 준비로 터미널을 열고 OPENAI_API_KEY
라는 환경 변수에 OpenAI에서 발급받은 API 키를 설정해줍니다.
$ export OPENAI_API_KEY=sk-...f4ZT
$ echo $OPENAI_API_KEY
sk-...f4ZT
이렇게 API 키를 환경 변수로 저장해놓으면 Python 코드를 실행할 때 os
모듈의 getenv()
함수를 통해 쉽게 환경 변수를 읽어올 수 있습니다.
$ python
Python 3.11.2 (main, Apr 7 2023, 15:52:33) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getenv("OPENAI_API_KEY")
'=sk-...f4ZT'
Python에서 환경 변수를 다루는 방법에 대해서는 관련 포스팅을 참고 바랍니다.
ChatGPT API 호출
지금부터 chat.py
파일을 생성하고 그 안에 ChatGPT API 호출하기 위한 파이썬 코드를 작성하겠습니다.
우선 터미널을 열고 파이썬의 패키지 매니저인 pip를 사용하여 requests
라는 패키지를 설치해줍니다.
$ pip install requests
파이썬으로 HTTP 통신이 필요한 프로그램을 작성할 때 많이 사용되는 라이브러리인 requests에 대해서는 별도 포스팅에서 자세히 다루고 있으니 참고 바랍니다.
이제 requests
모듈의 post()
함수를 이용해서 ChatGPT API에 야!
라는 메시지를 전송해보겠습니다.
이 때 환경 변수로 설정해놓은 API 키를 빼먹지 말고 헤더로 함께 넘겨주셔야 합니다.
인공지능 모델로는 최근에 많이 사용되는 gpt-3.5-turbo
를 사용하겠습니다.
import os
import requests
response = requests.post(
"https://api.openai.com/v1/chat/completions",
headers={"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"},
json={
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "야!"}],
},
)
print(response.json())
ChatGPT API로 부터 사전의 형태로 응답된 결과를 콘솔에 출력해보면 choices
키 안에 답변이 들어있는 것을 볼 수 있습니다.
$ node chat.js
{'id': 'chatcmpl-77YyHZ3pjApero1ylATUbrQ78TBVd', 'object': 'chat.completion', 'created': 1682037081, 'model': 'gpt-3.5-turbo-0301', 'usage': {'prompt_tokens': 10, 'completion_tokens': 27, 'total_tokens': 37}, 'choices': [{'message': {'role': 'assistant', 'content': '저는 AI 어시스턴트입니다. 무엇을 도와드릴까요?'}, 'finish_reason': 'stop', 'index': 0}]}
커맨드 라인 인터페이스 구현
이제 터미널 상에서 ChatGPT와 메시지를 주고 받을 수 있도록 코드를 살짝 수정해야하는데요.
우선 파이썬의 input()
내장 함수로 사용자의 입력을 받아서 question
변수에 할당합니다.
그리고 ChatGPT API를 호출할 때 content
키에 question
을 값으로 넘깁니다.
마지막으로 ChatGPT API로 부터 응답된 결과에서 수신된 메세지만 다시 터미널에 출력만 해주면 됩니다.
이 과정을 while
문을 이용해서 반복해주면 ChatGPT와 계속해서 메세지를 주고 받을 수 있습니다.
import os
import requests
print("💬 ChatGPT 터미널 챗앱 💬")
while True:
question = input("\n👤 ")
response = requests.post(
"https://api.openai.com/v1/chat/completions",
headers={"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"},
json={
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": question}],
},
)
answer = response.json()["choices"][0]["message"]["content"]
print("🤖", answer)
다시 프로그램을 실행해보면 다음과 같이 터미널에서 ChatGPT와 메시지를 주고 받으며 채팅이 가능하게 됩니다! 🎉
$ python chat.py
💬 ChatGPT 터미널 챗앱 💬
👤 대한민국의 수도는 어디야?
🤖 대한민국의 수도는 서울입니다.
👤 서울에서 가장 높은 건물은 뭐야?
🤖 현재 서울에서 가장 높은 건물은 롯데월드타워(123층, 555m)입니다.
👤
마치면서
이상으로 ChatGPT API를 활용하여 정말 간단한 터미널 챗앱을 파이썬으로 구현해보았습니다.
requests
라이브러리만 있으면 이렇게 어렵지 않게 ChatGPT API와 상호작용하는 터미널 앱을 만들 수 있습니다.
ChatGPT에 대한 포스팅은 관련 태그를 통해서 쉽게 만나보세요! 😀