ChatGPT, 챗gpt API 사용법 - 금액 충전, Key(키) 발급, Json형식 출력 등
시작하기 앞서...
ChatGPT API 사용법에 대해 설명하고자 합니다. 금액충전, Key 발급, 사용하기(질문), 모델, Json형식으로 출력 등 여러가지 방법에 대해 설명하고자 하니, API사용이 처음이신분에게 다음 글이 도움이 될거라고 생각합니다.
*OpenAI의 API를 Python코드로 사용하는 방법에 대해 소개하고자 합니다.
순서는 다음과 같습니다.
- 결제 및 API Key값 받기
- pip install openai
- API를 활용한 ChatGPT 사용하기
- API 사용 금액 확인하기
- 사용 가능한 모델
1. 결제 및 API Key값 받기
먼저 https://platform.openai.com/docs/api-reference 사이트에 들어갑니다.
왼쪽 상단에 Default project에서 Organization overview를 눌러 들어가시면 됩니다.
API keys를 누르시고 Create new secret key 화면을 클릭하고 API 키값을 발급 받으시면 됩니다.
!!!주의!!! API Key값은 한 번 받고 난 후에 최초에만 볼 수 있고 그 이후에는 볼 수 없습니다.
즉, 다시 발급을 받으셔야 합니다. 발급을 받으시면 Key값을 어딘가에 저장해 두세요! (메모장 등)
이제 API를 사용할 때 비용을 지불하기 위해 카드 등록을 먼저 해주시면 됩니다.
아래의 설명을 따라하시면 됩니다.
1. 오른쪽 상단에 톱니바퀴(Settings)를 클릭합니다.
2. Organization 탭 아래에 Billing을 누르시고 Payment methods에서 Add payment method를 눌러 카드를 등록해 주시면 됩니다.
3. Payment methods → Overview 화면으로 넘어옵니다.
4. Add credit balance을 눌러 원하시는 금액을 결제하시면 됩니다.
5. 원하시는 금액을 입력하시면 됩니다. ($5 ~ $95)
6. 금액 입력 후, 아까 등록한 카드를 누르시고 Continue 클릭
처음하시는분은 $10달러부터 충전해서 사용해보세요!
그리고 GPT API를 사용하시고 난 후에 남은 금액을 확인하시려면, Credit balance를 보시면 남은 금액이 나옵니다.
세부적으로 확인할 수 있는 방법은 4번 목차로 가시면 됩니다.
2. pip install openai 설치
API를 사용하기 위해서 먼저 pip install openai를 해주셔야 합니다.
맥(Mac) 또는 리눅스(Linux)를 사용하시는분은 터미널에서 설치를 해주시면 되고, 윈도우를 사용하시는분은 Powershell 또는 Anaconda prompt를 통해 설치해주시면 됩니다.
pip install openai
3. API key값 이용한 ChatGPT 사용하기
YOUR KEY부분에 아까 발급받은 API키를 넣으시면 됩니다.
저는 GPT 4o 버전, 그리고 response_format={ "type": "json_object" }으로 하시면 json형식으로 출력받을 수 있습니다.
from openai import OpenAI
client = OpenAI(api_key="YOUR KEY")
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": "당신은 판타지를 좋아하는 사람이며 언어감각을 살려 창의적이고 독창적인 글을 쓰는 작가입니다."},
{"role": "user", "content": "당신은 지금부터 단편 영화를 만들기 위한 기획안을 작성해야 합니다. 기획안은 너무 길지 않지만, 투자자들의 마음을 잡기 위해 임팩트를 주어야 합니다."},
{"role": "user", "content": "매력적인 스토리 기획을 통해 투자자들에게 투자 받을 수 있도록 초안을 작성해주세요."},
]
)
result = response.choices[0].message.content
print(result)
GPT-API Json 형식 출력 값
Json 출력 값
{
"title": "어둠 속의 빛",
"genre": "판타지, 드라마",
"duration": "30분",
"logline": "상실의 아픔을 간직한 한 소녀가 잃어버린 마음의 조각들을 찾기 위해 환상적인 세상으로 떠나며, 자신과 주변의 진정한 행복을 발견하는 이야기.",
"synopsis": {
"introduction": "주인공은 단란한 가족을 잃은 소녀, '하늘'입니다. 상실의 슬픔을 이겨내지 못하고 홀로 외로운 나날을 보내던 그녀는 어느 날, 자신의 깊은 상처를 치유해줄 환상적인 세계로의 길을 발견하게 됩니다.",
"journey": "하늘은 신비로운 생명체 '리오'와 함께 이 세계에서 다양한 모험을 통해 각기 다른 이들의 고통을 마주합니다. 리오 또한 잃어버린 존재로, 두 사람은 서로의 상처를 보듬으며 성장해 나갑니다.",
"climax": "모험의 끝에 다다른 하늘은 자신의 과거와 마주치게 되고, 그 과정에서 진정한 용기를 발견한다. 이를 통해 상실한 마음의 조각들이 하나둘씩 회복되며, 또 다른 이들에게 희망을 전하는 복합적인 심리가 전달됩니다.",
"resolution": "현실로 돌아온 하늘은 이미 잃어버린 과거가 아니라, 앞으로 걸어갈 새로운 길을 바라보게 됩니다. 그녀는 다른 이들에게도 상처의 아픔을 나누고, 서로의 상처를 치유할 수 있는 방법을 제시합니다."
},
"visual_style": "환상적인 색감과 생동감 넘치는 CGI 애니메이션을 통해 환상 세계를 표현하며, 현실과 환상의 경계를 허물고 관객의 상상력을 자극합니다. 감정의 흐름을 강조하기 위해 다양한 촉각적 요소를 배경음악과 음향 효과에 결합합니다.",
"target_audience": "모험과 감동, 그리고 성장의 이야기를 좋아하는 10대 후반에서 30대 초반의 관객들.",
"budget": {
"total": "이에 대한 자세한 예산은 추후 논의 필요, 대략적인 범위: $100,000",
"breakdown": {
"pre-production": "$20,000",
"production": "$60,000",
"post-production": "$20,000"
}
},
"potential": "이 이야기는 상실과 치유, 희망의 메시지를 담고 있어 많은 관객들에게 감동을 줄 수 있으며, 해외 시장에서도 통할 수 있는 보편적인 주제를 가지고 있습니다. 또한, 판타지 장르의 매력으로 인해 다양한 연령층의 관심을 얻을 수 있습니다."
}
GPT-API Role 역할 - system, user, assistant
role 부분은 크게 3가지 역할을 할 수 있습니다.
1. system - 시스템이 대화에 제공하는 초기 설정이나 지침을 나타냅니다. 대화의 맥락을 설정하거나 모델이 특정 규칙이나 행동 지침을 따르도록 지시하는 데 사용됩니다.
2. user - 실제 사용자의 입력을 나타냅니다. 사용자가 대화에서 질문하거나 요청하는 내용을 포함합니다.
3. assistant - 대화에서 AI 도우미의 역할을 나타냅니다. 모델이 사용자 또는 시스템의 메시지에 대응하여 생성한 메시지입니다. assistant 역할은 모델이 생성한 출력을 명시적으로 지정하여, 시스템과 사용자 메시지와 구분됩니다.
GPT-API Role 예시 설명
from openai import OpenAI
client = OpenAI(api_key="YOUR KEY")
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": "당신은 판타지를 좋아하는 사람이며 언어감각을 살려 창의적이고 독창적인 글을 쓰는 작가입니다."},
{"role": "user", "content": "당신은 지금부터 단편 영화를 만들기 위한 기획안을 작성해야 합니다. 기획안은 너무 길지 않지만, 투자자들의 마음을 잡기 위해 임팩트를 주어야 합니다."},
{"role": "user", "content": "매력적인 스토리 기획을 통해 투자자들에게 투자 받을 수 있도록 초안을 작성해주세요."},
{"role": "assistant", "content": "기획안은 매력적인 캐릭터와 신선한 설정으로 시작해야 합니다. 우선 이야기는 고대 마법 왕국에서 전설적인 검을 둘러싼 음모와 배신을 다루며, 주요 캐릭터는 왕국의 어두운 비밀을 파헤치는 평범한 농부입니다. 투자자들에게 강렬한 인상을 주기 위해서는 첫 장면에서부터 스토리의 긴장감을 고조시키는 시각적 효과를 강조해야 합니다."}
]
)
result = response.choices[0].message.content
print(result)
1. system (시스템): 시스템은 대화의 맥락을 설정하는 역할을 합니다.
예를 들어, 시스템 메시지는 AI 모델에게 어떤 방식으로 대화해야 하는지 지침을 제공합니다. 위 코드에서는 "You are a helpful assistant designed to output JSON."이라고 명시하여 AI가 JSON 형식으로 응답하도록 설정하고 있습니다.
2. user (사용자): 사용자는 대화에서 질문을 하거나 명령을 내리는 역할을 합니다.
AI 사용자 메시지는 AI 모델에 입력되는 질문이나 요청을 포함합니다. 예시에서는 사용자가 AI에게 단편 영화 기획안을 작성해 달라고 요청하는 내용입니다.
3. assistant (어시스턴트): 어시스턴트는 AI 모델이 응답할 때 사용하는 역할입니다.
모델이 사용자 요청에 대한 답변을 제공하는 부분으로, 위 코드에서 기획안 초안에 대한 AI의 답변이 이 역할로 지정됩니다.
복수의 프롬프트 사용
"role": "user"는 여러 개의 prompt를 통해 조절할 수도 있습니다. 즉, 원하는 정보를 제공 여러 개 제공이 가능합니다.
다음과 같은 방법으로 여러 개를 추가할 수 있습니다.
from openai import OpenAI
client = OpenAI(api_key="YOUR KEY")
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": "당신은 판타지를 좋아하는 사람이며 언어감각을 살려 창의적이고 독창적인 글을 쓰는 작가입니다."},
{"role": "user", "content": "당신은 지금부터 단편 영화를 만들기 위한 기획안을 작성해야 합니다. 기획안은 너무 길지 않지만, 투자자들의 마음을 잡기 위해 임팩트를 주어야 합니다."},
{"role": "user", "content": "기획안에 포함될 매력적인 캐릭터와 스토리라인을 설명해주세요."},
{"role": "user", "content": "기획안을 통해 투자자들의 마음을 사로잡을 방법은 무엇인가요?"},
{"role": "user", "content": "이야기의 전개 속에서 반전이 있는 장면을 추가해보세요."},
{"role": "user", "content": "이 기획안을 바탕으로 영화의 비주얼 스타일은 어떻게 설정할 수 있을까요?"},
{"role": "user", "content": "주요 캐릭터 간의 갈등을 어떻게 설정하면 좋을까요?"},
{"role": "user", "content": "기획안의 마지막 장면에서 큰 감동을 줄 방법을 제안해주세요."},
{"role": "user", "content": "이 영화의 잠재적인 관객층은 누구라고 생각하나요?"},
{"role": "assistant", "content": "기획안은 매력적인 캐릭터와 신선한 설정으로 시작해야 합니다. 우선 이야기는 고대 마법 왕국에서 전설적인 검을 둘러싼 음모와 배신을 다루며, 주요 캐릭터는 왕국의 어두운 비밀을 파헤치는 평범한 농부입니다. 투자자들에게 강렬한 인상을 주기 위해서는 첫 장면에서부터 스토리의 긴장감을 고조시키는 시각적 효과를 강조해야 합니다."}
]
)
result = response.choices[0].message.content
print(result)
여러 요청을 한 번에 보내기
사실 이 프롬프트 작성 방법이 제일 효율적이지 않나 싶습니다.
가운데 user부분에 """(3개 쌍따옴표)를 위 아래로 묶어서 사용하시면 됩니다.
그러면 내가 하고자 하는 말들을 좀 더 체계적으로 작성하고 관리하며, AI에게 명령을 내릴 수 있습니다.
from openai import OpenAI
client = OpenAI(api_key="YOUR KEY")
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": """당신은 판타지를 좋아하는 사람이며 창의적이고 독창적인 글을 쓰는 작가입니다.
지금부터 단편 영화를 만들기 위한 기획안을 작성해야 합니다. 기획안은 너무 길지 않지만, 투자자들의 마음을 사로잡기 위해 임팩트가 필요합니다.
1. 기획안에 포함될 매력적인 캐릭터와 스토리라인을 설명해주세요.
2. 이야기가 시작될 때 관객들이 흥미를 느낄 수 있는 첫 장면을 제안해 주세요.
3. 투자자들에게 강렬한 인상을 남길 수 있는 반전이 포함된 장면을 추가해주세요.
4. 마지막 장면에서 큰 감동을 줄 방법도 고려해주세요."""},
{"role": "assistant", "content": "기획안은 매력적인 캐릭터와 신선한 설정으로 시작해야 합니다. 주요 캐릭터는 왕국의 어두운 비밀을 파헤치는 평범한 농부입니다. 첫 장면에서는 왕국이 무너지는 전조를 암시하며 긴장감을 고조시키는 시각적 효과를 강조해야 합니다."}
]
)
result = response.choices[0].message.content
print(result)
4. 사용 금액 확인
왼쪽상단에 Organization overview에 다시 가셔서 Usage를 누르시면 다음과 같은 화면이 나옵니다.
Cost와 Activity를 누르시면 어떤 모델을 얼마나 썼는지, Token 사용량은 얼마인지, 누가 많이 얼마나 사용했는지 등 확인하실 수 있습니다.
5. 사용 가능한 모델
OpenAI에서 제공하는 API 모델의 종류는 다음과 같습니다. 카테고리로 이렇게 나뉘었지만, 세부적으로 들어가면 더 많습니다.
사용하고 싶은 모델을 코드에서 모델부분에 해당 모델로 작성하시면 바로 사용이 가능합니다.
공식문서 사이트에 들어가셔서 보시면 될 것 같습니다. 링크도 아래 남겨드리겠습니다.
링크 : OpenAI 사용가능한 모델 바로가기
GPT API 모델 종류도 많으시니, 궁금하신분들은 홈페이지에서 확인하시면 됩니다.
Meta에서 만든 Llama와 같은 무료 GPT 사용이나, 인터넷 없이 그리고 로컬에서 나만의 챗봇에 대해 궁금하신분들은 다음 링크를 통해 확인하실 수 있습니다.
링크 바로가기
챗GPT에 대해 궁금하신분들은 다음 링크를 통해 보실 수 있습니다.
링크 바로가기
댓글