| 항목 | API (Application Programming Interface) | Open API (공개 API) |
|---|---|---|
| 정의 | 소프트웨어 간 상호작용을 가능하게 하는 인터페이스 | 누구나 접근할 수 있도록 공개된 API |
| 접근성 | 제한적일 수 있음 (내부 API, 유료 API 등 포함) | 일반적으로 무료로 공개되어 있으며, 문서도 제공됨 |
| 사용 대상 | 내부 개발자 또는 제휴된 외부 개발자 | 모든 외부 개발자 (회원가입 또는 인증 필요할 수 있음) |
| 예시 | 회사 내부 결제 시스템 API, 사내 사용자 관리 API 등 | 카카오 지도 API, 네이버 검색 API, 공공데이터 포털 API 등 |
| 문서화 | 내부 문서 또는 일부 문서만 외부 공유 | 문서가 잘 갖춰져 있어 누구나 쉽게 사용 가능 |
| 목적 | 내부 시스템 통합, 특정 파트너 제공 등 | 오픈 생태계 확장, 외부 개발자 유입 등 |
OpenAI API는 ChatGPT, DALL·E, Whisper 같은 AI 기능을 외부 앱/웹에 연동할 수 있도록 제공하는 API이다.
import openai
openai.api_key = "sk-xxx"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "한국의 수도는 어디야?"}
]
)
print(response['choices'][0]['message']['content'])
역할 (role) | 설명 |
|---|---|
| system | GPT의 성격이나 행동 방식을 설정 (예: 친절한 튜터) |
| user | 사용자의 질문이나 요청 메시지 |
| assistant | GPT가 이전에 응답한 내용 (대화 흐름 유지에 필요) |
messages = [
{"role": "system", "content": "You are a math tutor."},
{"role": "user", "content": "피타고라스 정리를 설명해줘."}
]
| 이름 | 역할 (role) | 설명 |
|---|---|---|
| Developer Prompt (System Prompt) | "system" | GPT의 성격, 말투, 행동 방식 설정 |
| User Prompt | "user" | 사용자의 입력 내용 |
| Assistant Prompt | "assistant" | GPT의 응답 (이전 대화 포함용) |
[System] 🧑💻: 넌 친절한 역사 선생님이야.
[User] 🙋♀️: 로마 제국이 언제 멸망했어?
[Assistant]🤖: 서기 476년에 서로마 제국이 멸망했어요.
[User] 🙋♀️: 그 이후에 무슨 일이 있었어?
messages = [
{"role": "system", "content": "You are a kind and knowledgeable history teacher."},
{"role": "user", "content": "When did the Roman Empire fall?"},
{"role": "assistant", "content": "The Western Roman Empire fell in 476 AD."},
{"role": "user", "content": "What happened after that?"}
]
이렇게 하면 GPT는 다음과 같이 동작한다 :
자신이 "역사 선생님"이라는 역할임을 인식하고
서로마 제국이 멸망했다는 이전 대화 내용을 기억하며
자연스럽게 다음 질문에 이어지는 답변을 생성한다.
GPT는 Generative Pre-trained Transformer의 약자로,
자연어 처리(NLP) 분야에서 주로 사용되는 딥러닝 모델
GPT는 대량의 텍스트 데이터를 학습하여, 사용자의 질문이나 입력에 대해 자연스러운 응답을 생성
Pre-trained (사전 학습)
다양한 텍스트로 미리 학습하여 언어 구조와 문맥을 이해함
Fine-tuning (세부 조정)
특정 목적(고객지원 등)에 맞게 맞춤 학습 가능
Generation (응답 생성)
사용자 입력을 받아 GPT가 문맥에 맞는 답변 생성
GPT는 대화를 다음 3가지 역할로 구분함:
| 역할 | 설명 |
|---|---|
system | 챗봇의 성격 및 역할 설정 |
user | 사용자의 질문 또는 요청 |
assistant | GPT의 응답 내용 (기억 유지용) |
| 용도 | 목적 | 예시 |
|---|---|---|
| 고객 서비스 챗봇 | 문의 응대 | "주문한 상품 언제 도착하나요?" |
| 개인 비서 챗봇 | 일정/알림 관리 | "내일 10시 회의 일정 알려줘" |
| 교육용 챗봇 | 개념 설명, 문제풀이 | "고등학교 수학 문제 도와줘" |
| 쇼핑 챗봇 | 추천 및 결제 안내 | "가장 인기 있는 스마트폰 추천해줘" |
import openai
openai.api_key = "your-api-key"
def chat_with_gpt(user_input):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": user_input}
]
)
return response['choices'][0]['message']['content']
user_input = "What is the capital of France?"
print(chat_with_gpt(user_input))
{"role": "system", "content": "You are a friendly and kind chatbot."}
→ 위처럼 설정하면 GPT가 친근하고 부드러운 말투로 응답하게 됨
| 항목 | ChatGPT (웹사이트) | GPT API (개발자용) |
|---|---|---|
| 접근 방식 | 웹사이트 (chat.openai.com) | API 호출로 사용 |
| 사용 대상 | 일반 사용자 | 개발자, 기업, 서비스 구축자 |
| 사용 방법 | 채팅창에 입력 | 코드로 메시지 전달 |
| 요금 | 무료 & 유료 플랜 (Plus 등) | 사용량 기반 과금 |
| 기능 | 채팅, 이미지 생성, 문서 분석 등 | 직접 제어 가능 (텍스트, 이미지, 음성 등) |
| 대화 유지 | 자동으로 기억 | 개발자가 messages 직접 관리 |
| 커스터마이징 | Custom GPT 제공 | 완전한 자유 설정 가능 (프롬프트/역할 등) |
| 질문 | 답변 |
|---|---|
| ❓ 그냥 쓰고 싶어요. | 👉 ChatGPT: 웹사이트에서 바로 채팅! (프로그래밍 필요 없음) |
| ❓ 내 웹사이트에 GPT 챗봇을 넣고 싶어요. | 👉 GPT API: 코드로 GPT 기능을 가져다 쓸 수 있어요 |
| ❓ 내가 만든 앱에서 그림 그려주는 기능도 붙이고 싶어요. | 👉 GPT API + DALL·E API로 가능! |
| ❓ 내 스타일에 맞는 GPT 캐릭터 만들고 싶어요. | 👉 ChatGPT의 Custom GPTs 또는 API로 직접 설정 |
| 항목 | 설명 | 추천 범위 |
|---|---|---|
| Temperature | 창의성 조절 (높을수록 다양하고 창의적) | 0 ~ 2 |
| Top P | 확률 상위 P% 단어만 선택 (nucleus sampling) | 0.5 ~ 1.0 |
| Max Tokens | 생성 가능한 최대 토큰 수 | 예: 100 ~ 1000 |
| Response Format | 응답 형식 (text, json, chat 등) | 일반적으론 text |
| Stop Sequences | 특정 문자열이 나오면 응답 중단 | 예: ["###"] |
| Frequency Penalty | 같은 단어 반복 억제 | 0 ~ 2 |
| Presence Penalty | 새로운 주제 유도, 주제 반복 억제 | 0 ~ 2 |
| 목적 | 추천 설정 |
|---|---|
| 정확한 QA 챗봇 | Temperature = 0 |
| 창의적인 스토리 | Temperature = 1.0 ~ 1.3, Top P = 0.8 |
| 반복 억제 | Frequency Penalty = 1.0 |
| 주제 확장 | Presence Penalty = 1.0 |