ChatGPT API 사용법 (파이썬 버전)
ChatGPT를 파이썬 OpenAI 패키지를 활용해서 날려보겠습니다.
API를 활용해서 LLM을 사용하는 것은 인공지능의 주요한 사용방법 중 하나가 될 것입니다. LLM 자체가 컴퓨터 리소스를 많이 쓰기 때문에 로컬 컴퓨터에서 돌리기 힘들기 때문입니다.
오늘은 이를 실습해 보겠습니다.
파이썬 설치
파이썬이 설치되어 있는지 확인해 주세요.
윈도우의 경우 찾기를 누른 후 cmd 를 입력해서 터미널 창을 엽니다. 여기에서 python --version
을 입력해서 설치되어 있는지 확인해 주세요.
맥의 경우 command + space를 눌러 terminal을 검색해서 실행합니다. 여기에서 python --version
을 입력해서 설치되어 있는지 확인해 주세요.
OpenAI의 파이썬 패키지는 파이썬 버전 3.7 이상이 필요합니다. 만약 이보다 낮거나 없다면 파이썬 공식 사이트에서 설치해 주세요. Download Python
윈도우의 경우 Add python.exe to PATH 를 꼭 체크해 주세요. 그러면 설치된 파이썬의 경로를 커맨드 창에서 인식할 수 있어서 편리합니다.
OpenAI 패키지 설치
그 다음 OpenAI의 API를 HTTP로 요청하기 위한 openai 공식패키지를 설치해 주세요.
pip install openai
openai 패키지는 2023년 11월 6일에 v1 으로 새로 작성되었습니다. 그래서 그 이전에 설치하신 분들은 업그레이드를 해주세요. 업그레이드를 하면 이전에 작성한 코드는 작동을 안할 수 도 있습니다. 그러니 필요하시면 OpenAI의 마이그레이션 가이드를 보고 이전 코드 등을 업데이트하실 수 있습니다. (자동 코드 수정 기능도 있어요.) 문법들이 조금씩 달라졌습니다.
pip install --upgrade openai
코드 에디터 설치 (비주얼 스튜디오 설치)
코드 에디터가 없으신 분들은 vscode를 설치해 주세요. 코드를 편집할 때 편리합니다.
Download Visual Studio Code - Mac, Linux, Windows
오픈 AI API 키 만들기
준비의 마지막입니다. OpenAI 의 API 키를 만들고 안전한 곳에 저장해 주세요. https://platform.openai.com/api-keys API 키는 절대로 공개적으로 노출되어서는 안됩니다. 실습 할 때 꼭 필요하니 텍스트 파일 등으로 잘 저장해 주세요. 신용카드 등록이 필요할 수 도 있습니다. 처음 신청하면 5달러를 무료 크레딧으로 줍니다. GPT-3.5 turbo는 무척 저렴하니 실습할 때 비용은 너무 걱정하지 마세요.
API 요청하기
드디어 준비가 끝났습니다. 이제 실제 코드를 작성해 봅시다.
vs code를 열고 상단의 File 에서 Open Folder를 선택합니다. 여기에서 실습을 위한 적당한 폴더를 만들어 줍니다. 저는 gptapi
라는 이름의 폴더를 만들었습니다.
폴더를 누른 후 다시 File 에서 New Text File 을 선택합니다. 이제 코드를 작성할 준비가 되었습니다.
그리고 다음과 같이 코드를 적어봅시다.
from openai import OpenAI
client = OpenAI(api_key="YOUR_OPEN_AI_API_KEY")
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "user", "content": "Hello, how are you?"
}
],
)
print(response)
YOUR_OPEN_AI_API_KEY에 sk- 로 시작하는 여러분의 키를 입력하는 것을 잊지 마세요!
이렇게 한 후 ctrl + s를 눌러서 저장합니다. 이름은 api.py 로 해주세요. 자 이렇게 첫번째 api 요청 코드가 준비됐습니다. 이제 에디터 하단의 Terminal 을 눌러서 커맨드 창으로 가서 실행해 봅시다.
만약 terminal이 보이지 않는다면 ctrl + `
단축키를 눌러 실행해 주세요. ` 키(backtick)는 esc 키 밑에 있는 키입니다.
이제 python api.py
를 터미널에 입력해서 실행해 봅시다.
그러면 다음과 같이 결과가 나옵니다.
ChatCompletion(id='chatcmpl-8Q9DiCcM572346SlTsHXvhZqEFLAi', choices=[Choice(finish_reason='stop', index=0, message=ChatCompletionMessage(content="I'm an AI language model, so I don't have feelings, but thank you for asking! How can I assist you today?", role='assistant', function_call=None, tool_calls=None))], created=1701242662, model='gpt-3.5-turbo-0613', object='chat.completion', system_fingerprint=None, usage=CompletionUsage(completion_tokens=27, prompt_tokens=13, total_tokens=40))
ChatCompletion 객체 안에 결과가 표시가 됩니다. choices 배열의 첫번째의 Choice 객체의 message를 보면 응답이 content 로 표시가 되는 것을 알 수 있습니다.
이에 접근을 하려면 print(response.choices[0].message.content)
식으로 응답을 표시하면 됩니다.
스트리밍 하기
지금은 요청을 하고 기다렸다가 결과를 보여주는 방식입니다. 이제는 결과가 나올 때 실시간으로 표현을 해봅시다.
먼저 요청을 할 때 Stream을 True로 해줍니다. 질문은 길게 대답을 할 수 있도록 '내가 10살 인 것처럼 파이썬으로 코딩하는 방법을 알려줘'로 바꿔 보겠습니다. 영문으로 질문했는데 한글로 해도 결과는 비슷합니다.
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "user",
"content": "Teach me how to code in python like i am 10 years old.",
}
],
stream=True,
)
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
그리고 스트림의 chunk (조각) 에 대해서 delta.content (delta = 변경 사항) 이 있을 때 이를 출력해 주면 됩니다.
이제 terminal 에서 python api.py
를 입력해서 실행해 봅시다.
결과를 한번 확인해 보세요!
공식 사이트 튜토리얼 : https://platform.openai.com/docs/quickstart?context=python
추가적인 팁
만약 파이썬 코드에 매번 api key를 입력하기 귀찮다면 윈도우의 왼쪽 아래 찾기에서 시스템 환경변수
입력 창에서 입력하면 됩니다. 환경 변수에 새 값을 눌러 OPENAI_API_KEY
값을 설정해 두면 프로젝트마다 입력할 필요가 없습니다. 실행 할 때 다음과 같이 클라이언트를 불러서 호출하면 됩니다.
from openai import OpenAI
client = OpenAI()
...
맥의 경우 export OPENAI_API_KEY='your-api-key-here'
를 터미널에서 세팅하면 됩니다.