jju71 님의 블로그

GPT API 본문

Python/FastAPI

GPT API

jju71 2026. 7. 27. 13:20

1. 프롬프트 엔지니어링

  • 인공지능 모델, 특히 자연어 처리 모델과의 상호작용을 최적화하는 기술
  • 모델이 의도한 답변을 도출하도록 텍스트를 구성하는 방식으로, 적절한 질문 형식이나 설명을 제공하여 더 나을 성과를 얻는 것을 목표로 함

1. Role

AI 모델과의 대화에서 특정 문맥을 설정하거나, 모델의 응답 스타일과 관점을 조정하기 위해 사용하는 개념

  • User: AI와 상호작용하는 주체로, 일반적인 질문이나 요청을 전달
  • Assistant: AI 모델이 자체적으로 응답할 때의 역할로, 사용자의 질문이나 명령에 따라 답변을 제공
  • System: AI 모델의 행동과 스타일을 지시하는 역할로, AI가 어떻게 응답해야 할지 지침을 설정

가격

  1. GPT-X.X Sol
    • 가장 성능이 좋은 모델
    • 긴 코드 이해 및 생성
    • 복잡한 버그 수정
    • 가장 비쌈(Terra/Luna 보다 속도는 느림)
    • RAG, LangGraph, 복잡한 FastAPI 프로젝트, 논문 분석, 의료AI 등
  2. GPT-X.X Terra
    • Sol에 가까운 성능(비용은 절반 수준)
    • 성능과 비용의 균형 모델
    • Python 개발, FastAPI, 코드 리뷰, 일반적인 GPT API 서비스 등
  3. GPT-X.X Luna
    • 매우 빠름(토큰 비용이 가장 저렴)
    • 어려운 추론에서 정확도가 떨어짐
    • 챗봇, 분류, 요약, 번역, 데이터 추출 등
  4. input
    • GPT에게 보내는 토큰
    • 매 요청시
  5.  Cached input
    • 이전에 보낸 입력을 재사용
    • 캐시가 존재할 때
  6. Cache writes
    • 새로운 입력을 캐시에 저장
    • 처음 입력했을 때
  7. Output
    • GPT가 생성한 답변
    • 답변을 받을 때
client.response.create(
    model='gpt-5-terra',
    input='안녕하세요?'     # input
)
안녕하세요! 무엇을 도와드릴까요?  # output

# 같은 내용을 여러번 보내면 다시 계산하지 않고 재사용
너는 최고의 AI 프로그래머야. 앞으로 내 질문에 자세히 설명해줘. 예시는 만들지마!(500 토큰)
Q1. OpenAI 모델 중 가장 좋은 모델은 뭐야?
Q2. ...

토큰

  • 토큰은 모델이 처리하는 텍스트의 작은 단위
  • 하나의 토큰은 단어, 부분적인 단어, 또는 공백이나 구두점일 수 있음(모델에 따라 다름)
  • GPT 모델은 텍스트를 처리할 때 토큰들을 기반으로 학습하고, 예측을 생성
from dotenv import load_dotenv
import os
# pip install openai
from openai import OpenAI

# env 파일 읽어오기
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
api_key
client = OpenAI(
    api_key = os.getenv("OPENAI_API_KEY")
)

response = client.response.create(
    model="gpt-5-nano",
    input = "안녕하세요? 오늘 기분이 어때요?"
)

response.output[1].content[0].text
-----------------------------------------------------------
'안녕하세요! 저는 감정을 느끼는 건 아니지만, 오늘도 여러분의 대화를 듣고 도와드리기 위해 여기 있어요. 
오늘 기분은 어떠신가요? 특별히 이야기하고 싶은 주제나 도움이 필요한 게 있나요? 
원하시면 간단한 기분 점검이나 스트레스 해소 팁도 같이 나눠드릴게요.'
def get_response_text(response):
    for item in response.output:
        if item.type == "message":
            return item.content[0].text
        return None
        
get_response_text(response)
------------------------------------------------
'안녕하세요! 저는 감정을 느끼는 건 아니지만, 오늘도 여러분의 대화를 듣고 도와드리기 위해 여기 있어요. 
오늘 기분은 어떠신가요? 특별히 이야기하고 싶은 주제나 도움이 필요한 게 있나요? 
원하시면 간단한 기분 점검이나 스트레스 해소 팁도 같이 나눠드릴게요.'
client = OpenAI(
    api_key = os.getenv("OPENAI_API_KEY")
)
"""
assistant로 등록하면 내가 썼던 말들을 기억함

제 이름은 김사과입니다.
안녕하세요. 김사과님
제 이름이 뭐였죠?
"""

message = [
	{
    	"role" : "user", "content":"안녕하세요"
    },
    {
    	"role" : "assistant",
        "content" :"안녕하세요! 무엇을 도와드릴까요?"
    },
    {
    	"role" : "user",
        "content" :"FastAPI가 뭐에요?"
    }
]

response = client.responses.create(
	model="gpt-5-nano",
	input=message
)

get_response_text(response)
------------------------------------------------------
'FastAPI는 파이썬으로 빠르고 쉽게 API 서버를 만들 수 있게 해 주는 웹 프레임워크예요. 
타입 힌트를 강하게 활용해 입력 검증과 데이터 직렬화(출력 형식)를 자동으로 처리하고, 
비동기(async) 프로그래밍을 기본적으로 지원해 빠른 성능을 낼 수 있습니다. 
또한 자동으로 Swagger/OpenAPI 기반의 API 문서를 생성해 주는 점이 큰 장점이에요.
\n\n주요 특징\n- 고성능: 비동기 지원으로 빠른 처리 가능\n- 타입 힌트 기반 검증: Pydantic으로 데이터 검증, 
직렬화 자동화\n- 자동 API 문서: /docs (Swagger UI), 
/redoc (ReDoc)로 바로 문서 확인\n- 의존성 주입과 라우팅 편의성\n- ASGI 기반으로 uvicorn 같은 서버에서 
쉽게 배포 가능\n- Starlette 위에 만들어져 유연하고 확장성 높음\n\n간단한 예시\n- 
설치: pip install fastapi uvicorn\n- 코드 예시(간단한 GET 엔드포인트)\n\n
from fastapi import FastAPI\n\napp = FastAPI()\n\n@app.get("/")\ndef read_root():\n    
return {"Hello": "World"}\n\n실행 방법\n- uvicorn으로 실행: uvicorn main:app --reload\n  
(main은 파일 이름, 예: main.py에 위 코드가 들어 있다면)\n
- 자동 문서 확인:\n  - http://127.0.0.1:8000/docs  (Swagger UI)\n  
- http://127.0.0.1:8000/redoc  (ReDoc)\n\n원하시면 초보자용으로 더 자세한 튜토리얼이나, 
실제 프로젝트에 맞춘 예제도 같이 만들어 드릴게요. 어떤 용도로 써 보시려나요?'
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

message = [
	{
        "role":"system",
        "content":"당신은 초등학교 선생님입니다."
    },
    {
        "role":"user",
        "content":"FastAPI가 뭐예요?"
    }
]

response = client.responses.create(
    model="gpt-5-nano",
    input=messages
)

get_response_text(response)
-----------------------------------------------------
'좋아, 쉽게 설명해줄게요. FastAPI는 파이썬으로 웹에서 다른 프로그램이나 앱이 정보를 주고받을 수 있게 해주는 
아주 빠르고 편한 도구예요.\n\n비유로 이해하기\n- 생각해 보세요. 학교 앞 문을 통해 친구들이 편지를 보내고 받는 
시스템이 있다고 할 때, FastAPI는 그 문을 열고 닫는 규칙과 처리하는 방법을 아주 깔끔하고 빠르게 만들어 주는 
프레임워크예요.\n- 다시 말해, API를 만들 때 필요한 코드양을 줄이고 안전하게 만들어 주는 도구예요.
\n\n주요 특징\n- 빠름: 성능이 좋아요.\n- 배우기 쉬움: 초보자도 비교적 빨리 배울 수 있어요.
\n- 자동 문서화: 만들어 놓으면 브라우저에서 /docs 나 /redoc 로 자동으로 API 문서를 볼 수 있어요.
\n- 입력값 검증: 보내는 데이터가 올바른지 자동으로 확인해줘요.\n- 비동기 지원: 여러 일을 동시에 처리하는 것이 
편리해요.\n- 배포가 쉬움: 작게 시작해도 잘 커질 수 있어요.\n\n간단한 예제\n- 가장 기본적인 API 엔드포인트를 
만드는 코드 예시입니다.\n\n예제 코드 (main.py)\nfrom fastapi import FastAPI\n\napp = FastAPI()
\n\n@app.get("/")\ndef read_root():\n    return {"메시지": "안녕, 세계야!"}
\n\n- 이 코드를 저장하고 uvicorn으로 실행하면 됩니다.
\n실행 방법\n- 커맨드: pip install fastapi[all]  또는  pip install fastapi
\n- 그리고: uvicorn main:app --reload\n- 그러면 http://localhost:8000 에서 작동을 볼 수 있어요.
\n- API 문서는 자동으로 생깁니다. 브라우저에서 http://localhost:8000/docs 를 열면 Swagger UI, 
/redoc 로도 문서를 볼 수 있어요.\n\n필요하면 더 자세한 예제(GET 외에도 POST로 데이터 받기, 경로 매개변수 
사용하기 등)도 같이 보여줄게요. 어떤 걸 먼저 배우고 싶나요?'
# max_output_tokens: 토큰 제한
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

message = [
    {
        "role":"user", "content":"안녕하세요"
    }
]

response = client.responses.create(
    model="gpt-5-nano",
    input=messages, 
    max_output_tokens=30
)

response.status
-----------------------------------------------------
'incomplete'
max_output_tokens: 토큰 제한

response.status

  • completed : 응답 생성이 정상적으로 완료됨
  • incomplete: 응답을 끝까지 만들지 못하고 중간에 종료됨
  • failed: 오류로 인해 응답 생성 실패
  • queued: 처리 대기열에 들어가 기다리는 중
  • in_progress: 현재 응답을 생성하는 중
  • canceled: 요청이 취소됨
# temperature: 항상 비슷한 답(0), 불필요하게 길게 말하는(1,높은 숫자) 경우 감소
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

messages = [
    {
        "role":"user", "content":"안녕하세요"
    }
]

response = client.responses.create(
    model="gpt-4.1-nano",
    input=messages, 
    temperature=0
)

get_response_text(response)
----------------------------------------------------------------------
'안녕하세요! 어떻게 도와드릴까요?'
temperature: 항상 비슷한 답(0), 불필요하게 길게 말하는(1, 높은 숫자) 경우 감소
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

messages = [
    {
        "role":"user", "content":"안녕하세요"
    }
]

response = client.responses.create(
    model="gpt-4.1-nano",
    input=messages, 
    temperature=1
)

get_response_text(response)
-----------------------------------------------------
'안녕하세요! 어떤 도움이 필요하신가요?'

'Python > FastAPI' 카테고리의 다른 글

AI 광고 문구 생성 앱  (0) 2026.07.29
번역 앱 예제  (0) 2026.07.28
Gradio  (0) 2026.07.27
Fast API  (0) 2026.07.27