Contents
see ListOpenAI API 활용 - 함수 호출과 Assistant API
OpenAI API를 사용하면 GPT 모델을 애플리케이션에 통합하여 자연어 처리, 코드 생성, 대화형 AI 등을 구현할 수 있습니다.
언제 사용하나요?
- 챗봇, 고객 상담 자동화
- 문서 요약, 번역 서비스
- 코드 생성, 리뷰 자동화
- 데이터 분석 및 인사이트 추출
- RAG(검색 증강 생성) 시스템 구축
API 키 설정
# 환경 변수 설정
export OPENAI_API_KEY="sk-..."
# Python
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")기본 Chat Completion
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "당신은 친절한 AI 어시스턴트입니다."},
{"role": "user", "content": "Python으로 퀵소트 구현해줘"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)Function Calling (함수 호출)
GPT가 외부 함수를 호출하도록 지시할 수 있습니다.
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "특정 도시의 현재 날씨를 가져옵니다",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "도시 이름 (예: 서울, 부산)"
}
},
"required": ["city"]
}
}
}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "서울 날씨 알려줘"}],
tools=tools,
tool_choice="auto"
)
# 함수 호출 결과 확인
tool_call = response.choices[0].message.tool_calls[0]
function_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
# {"city": "서울"}Assistant API (대화 세션 관리)
# 1. Assistant 생성
assistant = client.beta.assistants.create(
name="코딩 도우미",
instructions="당신은 Python 전문가입니다.",
model="gpt-4o",
tools=[{"type": "code_interpreter"}]
)
# 2. Thread(대화 세션) 생성
thread = client.beta.threads.create()
# 3. 메시지 추가
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="피보나치 함수 만들어줘"
)
# 4. 실행
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
# 5. 완료 대기 및 결과 확인
while run.status != "completed":
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
time.sleep(1)
# 6. 응답 가져오기
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.data[0].content[0].text.value)Embedding (텍스트 벡터화)
# RAG 시스템용 임베딩
response = client.embeddings.create(
model="text-embedding-3-small",
input="검색할 텍스트"
)
vector = response.data[0].embedding # 1536차원 벡터이미지 생성 (DALL-E)
response = client.images.generate(
model="dall-e-3",
prompt="한국 전통 한옥 마을 풍경",
size="1024x1024",
quality="standard",
n=1
)
image_url = response.data[0].url스트리밍 응답
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "긴 이야기 해줘"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")비용 최적화 팁
- 간단한 작업은 gpt-4o-mini 사용 (더 저렴)
- max_tokens 제한으로 비용 관리
- 시스템 프롬프트 캐싱 활용
- 배치 API로 대량 요청 시 50% 할인
주요 모델 비교
| 모델 | 특징 | 용도 |
|---|---|---|
| gpt-4o | 최신, 빠름, 멀티모달 | 범용 |
| gpt-4o-mini | 저렴, 빠름 | 간단한 작업 |
| o1 | 추론 특화 | 복잡한 문제 해결 |