AI API 통합은 이제 어렵지 않습니다. OpenAI, Anthropic, Google 등이 쉽게 쓸 수 있는 API를 제공하고, Next.js 같은 프레임워크와 통합하는 SDK도 잘 정비되어 있습니다. 이 글에서는 실용적인 AI 기능 통합 방법을 설명합니다.
AI API 선택
OpenAI (GPT-4o, GPT-4o-mini)
가장 많이 사용되는 AI API입니다. 텍스트 생성, 분류, 요약, 번역, 코드 생성 등 다양한 작업에 적합합니다.
GPT-4o-mini: 가격이 저렴하고 빠릅니다. 대부분의 사이드 프로젝트 용도에 충분합니다.
- 입력: $0.15 / 1M 토큰
- 출력: $0.60 / 1M 토큰
GPT-4o: 더 높은 품질이 필요할 때. GPT-4o-mini보다 약 10배 비쌉니다.
Anthropic (Claude 3.5 Sonnet, Claude Haiku)
복잡한 추론, 긴 컨텍스트 처리에 강합니다. 안전성과 정확성이 높게 평가됩니다.
Claude Haiku: 가장 빠르고 저렴한 Claude 모델. 간단한 분류, 요약 작업에 적합합니다.
Google Gemini
멀티모달(텍스트 + 이미지 + 오디오) 처리에 강점이 있습니다. Google Cloud 생태계와 잘 통합됩니다.
기본 API 통합
OpenAI SDK 설치
npm install openai
텍스트 생성 기본 예시
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
async function generateText(prompt: string): Promise<string> {
const response = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'user', content: prompt }
],
max_tokens: 500,
});
return response.choices[0].message.content ?? '';
}
스트리밍 응답
AI 응답이 길 때 스트리밍으로 받으면 사용자가 결과를 빠르게 볼 수 있습니다.
// Next.js API Route with streaming
export async function POST(req: Request) {
const { prompt } = await req.json();
const stream = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: prompt }],
stream: true,
});
const encoder = new TextEncoder();
const readable = new ReadableStream({
async start(controller) {
for await (const chunk of stream) {
const text = chunk.choices[0]?.delta?.content ?? '';
controller.enqueue(encoder.encode(text));
}
controller.close();
},
});
return new Response(readable, {
headers: { 'Content-Type': 'text/plain' },
});
}
Vercel AI SDK 활용
Next.js에서 AI를 가장 쉽게 통합하는 방법입니다.
npm install ai @ai-sdk/openai
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: openai('gpt-4o-mini'),
messages,
system: '당신은 유용한 어시스턴트입니다.',
});
return result.toDataStreamResponse();
}
클라이언트:
import { useChat } from 'ai/react';
export function Chat() {
const { messages, input, handleInputChange, handleSubmit } = useChat();
return (
<div>
{messages.map(m => (
<div key={m.id}>{m.role}: {m.content}</div>
))}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
<button type="submit">전송</button>
</form>
</div>
);
}
프롬프트 엔지니어링 기초
프롬프트를 어떻게 작성하느냐에 따라 AI 응답 품질이 크게 달라집니다.
시스템 프롬프트 활용
시스템 프롬프트로 AI의 역할과 제약을 설정합니다.
const messages = [
{
role: 'system',
content: `당신은 한국어로 이메일을 작성하는 전문가입니다.
- 항상 공손하고 전문적인 어조를 사용합니다
- 불필요한 내용 없이 간결하게 작성합니다
- 이메일 제목과 본문을 모두 작성합니다`
},
{
role: 'user',
content: '거래처에 납품 지연을 안내하는 이메일을 작성해주세요'
}
];
Few-shot 예시 제공
원하는 출력 형식을 예시로 보여줍니다.
const prompt = `
상품 리뷰를 긍정/부정/중립으로 분류하세요.
예시:
"배송이 빨랐어요. 너무 좋아요!" → 긍정
"품질이 기대보다 별로예요" → 부정
"보통이에요. 특별하지 않네요" → 중립
분류할 리뷰: "${userReview}"
분류 결과:`;
비용 관리
AI API 비용은 토큰 수에 비례합니다. 1,000 토큰은 대략 한국어 500~700자 수준입니다.
비용 최적화 방법
더 작은 모델 사용: GPT-4o-mini나 Claude Haiku는 GPT-4o보다 10배 이상 저렴합니다. 간단한 작업에는 작은 모델로 충분합니다.
프롬프트 최소화: 불필요한 설명을 줄이면 입력 토큰이 줄어듭니다.
캐싱: 같은 입력에 대한 응답을 캐싱하면 API 호출을 줄일 수 있습니다.
max_tokens 설정: 응답 최대 토큰 수를 제한해 예상치 못한 긴 응답으로 인한 비용 증가를 방지합니다.
비용 예측
월 1,000명의 사용자가 GPT-4o-mini를 사용해 평균 1,000 토큰(입력 + 출력)을 쓴다면:
- 월 1,000,000 토큰
- 비용: 약 $0.375 (약 500원)
일반적인 사이드 프로젝트에서 AI API 비용은 매우 저렴합니다. 사용자당 평균 비용을 계산해 서비스 요금 설계에 반영하세요.
Rate Limit과 에러 처리
API 호출이 실패할 수 있습니다. 재시도 로직을 구현하세요.
async function callWithRetry(prompt: string, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await generateText(prompt);
} catch (error) {
if (i === maxRetries - 1) throw error;
// Rate limit 오류면 잠시 대기 후 재시도
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
}
}
}
AI 기능 통합은 이제 복잡하지 않습니다. API 키를 발급받고 SDK를 설치하면 30분 안에 기본 기능을 구현할 수 있습니다. 작게 시작해서 사용자 반응을 보면서 확장하는 것이 좋습니다.