API Platform

현서·2025년 7월 16일

파이썬 웹서비스

목록 보기
6/7
post-thumbnail

API Platform

OpenAI-API
OpenAI의 GPT API 플랫폼은 개발자들이 자신의 애플리케이션, 서비스, 웹사이트 등에 GPT 모델(예: GPT-3.5, GPT-4, GPT-4o)을 쉽게 통합할 수 있도록 제공되는 클라우드 기반 인터페이스이다.

OpenAI의 API 플랫폼 가입 → API 키 발급
다양한 언어 처리 작업(대화 생성, 요약, 번역, 코드 생성 등)을 수행하는 GPT 모델을 RESTful 방식으로 호출할 수 있다.
사용량에 따라 토큰 단위로 요금이 부과된다.

이미지, 오디오 등 멀티모달 처리 기능도 지원하며,
대규모 애플리케이션에 적합한 유연하고 확장 가능한 인공지능 활용 기반을 제공한다.


1. 토큰

  • 토큰 = 문장의 조각
  • GPT 모델은 "토큰 단위(단어의 일부, 전체 또는 기호)"로 문장을 처리한다.
"ChatGPT is amazing!"
→ 토큰으로 나누면:
["Chat", "G", "PT", " is", " amazing", "!"] → 총 6개 토큰
  • 영어 기준 : 보통 1단어 = 1~2 토큰
  • 한글 : 보통 1글자당 2~3토큰

2. 요금

기준 요금 계산 = 입력 토큰 + 출력 토큰
Per 1M tokens : "100만 토큰을 처리했을 때 얼마를 지불하는가"

GPT-3.5-turbo:
입력 1M tokens → $0.50
출력 1M tokens → $1.50
100만 토큰 입력 + 출력이면 총 $2.00 요금이 나올 수 있다.

토큰 계산기


3. openAI API 구조

순서대로 대화 메시지들을 보내면, GPT가 그 흐름을 이해하고 응답을 생성한다.
"역할(role)" + "내용(content)" 쌍들을 배열로 만들어 GPT에게 전달한다.

{
  "model": "gpt-4",
  "messages": [
    {
      "role": "system",
      "content": "너는 초보자를 위한 파이썬 튜터야."
    },
    {
      "role": "user",
      "content": "리스트와 튜플의 차이를 알려줘."
    }
  ]
}
  • system : GPT의 성격, 말투, 역할을 설정
  • user : 사용자의 요청 또는 질문
  • assistant : GPT의 응답 내용 (선택적으로 포함)

OpenAI의 API 플랫폼에서 발급받은 API_KEY는 .env에 저장하였다!

!pip install dotenv
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
True
client = OpenAI(api_key=os.getenv("API_KEY"))
response = client.chat.completions.create(
    model='gpt-4.1-nano-2025-04-14',
    messages=[{"role": "user", "content": "왜 강남은 강남이라고 할까요?"}],
    temperature=0.0
)
print(response)
print(response.choices[0].message.content) # 응답 중 메시지 대답만 뽑아냄.

간단한 번역 앱 만들기

import gradio as gr
load_dotenv()
True
client = OpenAI(
    api_key = os.getenv("API_KEY")
)
# 예제 데이터
example = {
    "한국어":["오늘 날씨 어때?", "최근 멀티모달 AI 기술이 인기를 끌고 있다"],
    "영어":["How is the weather today?", "Recently, multimodal AI technology has become popular"],
    "일본어":["今日の天気はどう?", "最近マルチモーダルAI技術が人気を集めている"]
}
def translate_text_chatgpt(text, src_lang, trg_lang):
  def build_fewshot(src_lang, trg_lang):
    src_examples = example[src_lang]
    trg_examples = example[trg_lang]
    fewshot_messages = []
    for src_text, trg_text in zip(src_examples, trg_examples):
      fewshot_messages.append({"role":"user", "content":src_text})
      fewshot_messages.append({"role":"assistant", "content":trg_text})
    return fewshot_messages
  system_instruction = f'assistant는 번역앱으로 동작한다. {src_lang}를 {trg_lang}로 적절하게 번역된 텍스트만 출력한다.'
  fewshot_messages = build_fewshot(src_lang, trg_lang)
  messages = [{"role":"system", "content":system_instruction}, *fewshot_messages, {"role":"user", "content":text}]
  response = client.chat.completions.create(
      model='gpt-4.1-nano-2025-04-14',
      messages=messages
  )
  return response.choices[0].message.content
def gradio_translate(text, src_lang, trg_lang):
  if not text.strip():
    return "번역할 내용을 입력하세요"
  if src_lang == trg_lang:
    return "원본 언어와 번역 언어가 같습니다. 다른 언어를 선택하세요"
  return translate_text_chatgpt(text, src_lang, trg_lang)

with gr.Blocks() as demo:
  gr.Markdown("# 초간단 번역 앱")
  text_input = gr.Textbox(label="번역할 내용을 입력하세요", placeholder="여기에 내용을 입력하세요")
  src_lang_dropdown = gr.Dropdown(choices=["한국어", "영어", "일본어"], value="영어", label="번역할 언어를 선택하세요")
  trg_lang_dropdown = gr.Dropdown(choices=["영어", "한국어", "일본어"], value="한국어", label="번역된 언어를 선택하세요")
  translate_button = gr.Button("번역하기")
  output_text = gr.Textbox(label="번역 결과", placeholder="번역된 결과가 여기에 표시됩니다.", interactive=False)

  translate_button.click(
      gradio_translate,
      inputs=[text_input, src_lang_dropdown, trg_lang_dropdown],
      outputs=output_text
  )

demo.launch()

profile
The light shines in the darkness.

0개의 댓글