LLM을 API로 활용하기
LLM API 사용법 실습
- OpenAI
- 콘솔: https://platform.openai.com
- 문서: https://platform.openai.com/docs
- SDK:
openai(Python/Node.js)
- Google (Gemini API)
- 콘솔: https://ai.google.dev/aistudio
- 문서: https://ai.google.dev/gemini-api/docs
- SDK:
google-genai(Python),@google/generative-ai(Node.js)
- Anthropic
- 콘솔: https://console.anthropic.com
- 문서: https://docs.anthropic.com
- SDK:
anthropic(Python),@anthropic-ai/sdk(Node.js)
OpenAI API 결제 수단 등록
- https://platform.openai.com
- 우상단 톱니바퀴 -> 좌측 메뉴의 Billing -> 가운데 메뉴의 Payment methods -> add payment method -> 신용카드 등록
- Billing 메뉴로 돌아와 Add to credit balance를 누르고 충전(최소 5달러)
OpenAI Project Key
- 왼쪽 상단 Default project 클릭 -> Create Project
- 우상단 메뉴 Dashboard -> 왼쪽 메뉴 API Keys -> create new secret key
- 복사한 비밀 키를
openai-api-key.txt파일에 붙여 넣고 저장 후 colab에 업로드 - 키를 환경 변수에 설정
import os
os.environ['OPENAI_API_KEY'] = open('openai-api-key.txt').read()
OpenAI API의 변화
| 구분 | Completions API | Chat Completions API | Responses API (최신) |
|---|---|---|---|
| 주요 입력 구조 | prompt (단일 문자열) |
messages[] (역할·내용) |
input[] (다중 모달) + 서버 측 상태 유지 |
| 대화 관리 | 클라이언트가 매번 전체 컨텍스트 포함 | 클라이언트가 매번 전체 컨텍스트 포함 | 서버가 대화 기억 |
| 도구 활용 | 지원 안 함 | 함수 호출 | 함수 호출 + 웹 검색, 파일 검색, PC 조작 등 내장 도구 |
OpenAI API 사용
- 설치
!pip install openai
- 클라이언트
from openai import OpenAI
client = OpenAI()
- 환경변수
OPENAI_API_KEY에서 키를 읽어 옴 - 클라이언트를 초기화 하기 전에 환경변수 설정 필요
자연어 생성
response = client.responses.create(
model="gpt-4.1",
input="'생성형 AI 수업 너무 재밌어요'를 긍정/부정/중립으로 평가해라"
)
print(response)
client.responses.create 인자
- 필수
model: 사용할 모델 이름. 예:"gpt-5.1-mini","gpt-4.1"등.input: 모델에 넘길 입력. 간단한 경우엔 문자열 하나, 복잡한 경우 멀티모달/대화형 구조(역할+콘텐츠 배열)를 넣음.
- 생성 품질/샘플링 관련 옵션
max_output_tokens: 한 응답에서 생성할 최대 토큰 수. 너무 작으면 말이 끊김.temperature: 0~2 근처. 높을수록 창의적이고 랜덤함, 낮을수록 결정적·보수적인 답변.top_p: nucleus sampling. 1에 가까우면 다양, 낮추면 보수적. 보통 temperature랑 둘 중 하나만 조정.
- Reasoning 모델 옵션
reasoning:{ effort: "low" | "medium" | "high" }. 추론량과 속도·비용 트레이드오프를 제어.gpt-5.1에는effort: "none"옵션이 추가(추론을 가장 적게 함)
구조화된 출력
- 모델이 항상 제공된 내용을 준수하는 응답을 생성하도록 보장하는 기능
- 장점:
- 잘못 포맷된 응답을 검증하거나 다시 시도할 필요가 없음
- 모델이 생성을 거부할 경우는 프로그래밍 방식으로 감지할 수 있음
- 프롬프트를 간단하게 만들어도 일관된 형식의 답을 얻을 수 있음
- Python을 이용할 경우 데이터 검증을 위한 라이브러리인 Pydantic을 이용하여 출력 형식을 지정할 수 있음
예시: 수학문제 풀기
- 답변 형식 정의
from openai import OpenAI
from pydantic import BaseModel
class Step(BaseModel):
explanation: str
output: str
class MathReasoning(BaseModel):
steps: list[Step]
final_answer: str
response = client.responses.parse(
model="gpt-4o",
input="방정식 8x + 7 = -23 을 한국어로 풀어라",
text_format=MathReasoning,
)
response.output_parsed
예시: 감성 분석
from enum import Enum
from pydantic import BaseModel, Field
class Sentiment(str, Enum): # 감성은 다음 3가지 중에 하나로 정의
positive = '긍정'
negative = '부정'
neutral = '중립'
class SentimentAnalysis(BaseModel):
text: str # 텍스트 문자열
sentiment: Sentiment # 감성(긍정/부정/중립)
keywords: str = Field(description="문장에 포함된 감정 단어 목록")
response = client.responses.parse(
model="gpt-5",
input="'생성형 AI 수업 너무 재밌어요'를 긍정/부정/중립으로 평가해라",
text_format=SentimentAnalysis
)
response.output_parsed
예시: 토큰 분류
class Label(str, Enum):
DT = '날짜'
LC = '장소'
PS = '사람'
class Entity(BaseModel):
named_entity: str
label: Label
class NER(BaseModel):
entities: list[Entity]
response = client.responses.parse(
model="gpt-5",
input="""다음 내용을 개체명 인식을 하여 날짜/장소/사람으로 각 토큰을 분류해라
오늘 12시 서울특별시 성북구에 있는 국민대 경영대학원에서
유재명 교수가 1가지 주제로 수업을 한다.""",
text_format=NER
)
response.output_parsed
퀴즈
temperature 값을 높일 때 일반적으로 기대되는 변화는?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.