Gemini API 사용법과 JSON 구조 응답 받는 방법
다양한 AI 모델이 존재하며, 각 모델마다 특징과 장단점이 다 다릅니다. 이 글에서는 Gemini를 소개합니다. Gemini는 2024년 11월 기준 무료로 사용해볼 수 있으며, 사용 한도가 있지만 테스트용이나 토이 프로젝트에 적용하기에 충분한 수준의 사용량을 제공합니다.
가성비있게 AI 서비스를 만들어보고 싶다면 ChatGPT와 Claude보다 Gemini가 훨씬 나은 선택이라고 생각합니다.
이 글에서는 Gemini API를 간단하게 사용해보고 JSON 형태의 구조화된 응답을 받는 방법에 대해 다룹니다. 더 자세한 내용은 공식문서를 참고해주세요.
- 공식문서: 바로가기
API 키 발급
Google AI Studio에서 API 키를 발급받을 수 있습니다. 처음 사용하시는 분들은 간단히 가입한 후 API 키를 발급받을 수 있습니다.
- API 키 발급받기: 바로가기
이제 Gemini API를 Javascript에서 어떻게 사용하는지 살펴보겠습니다.
설치와 환경변수
npm install @google/generative-ai
Google Generative AI 모듈을 설치하고, 발급받은 API 키를 환경 변수에 추가합니다.
GOOGLE_AI_API_KEY=""
API 사용 예시
Gemini API를 사용하는 방법입니다.
import { GoogleGenerativeAI } from '@google/generative-ai'
const genAI = new GoogleGenerativeAI(process.env.GOOGLE_AI_API_KEY)
const model = genAI.getGenerativeModel({
model: 'gemini-1.5-pro',
})
export default async function promptGemini(p) {
try {
const result = await model.generateContent(p)
return result.response.text()
} catch (error) {
console.error('Error generating content:', error)
throw error
}
}
위 코드에서는 gemini 1.5 pro 모델을 사용했는데, 다른 모델을 선택하는 방법은 간단합니다. model 필드에 원하는 모델명을 입력하면 됩니다. 다양한 모델 목록과 성능 비교는 공식 문서를 통해 확인 가능합니다.
- Gemini 모델 목록과 성능 비교: 바로가기
스키마 사용해서 JSON 구조로 응답 받기
Gemini API는 스키마를 적용해 원하는 구조의 JSON 형태로 응답을 받을 수 있습니다.
import { GoogleGenerativeAI, SchemaType } from '@google/generative-ai'
const schema = {
type: SchemaType.OBJECT, // 스키마 타입 지정
description: '이 스키마는 제목, 설명, 항목 목록을 가진 콘텐츠 모델의 구조를 정의합니다.', // 스키마 설명
properties: { // 스키마 구조 정의
title: { type: 'string' },
description: { type: 'string' },
items: {
type: 'array',
items: {
type: 'object',
properties: {
id: { type: 'string' },
content: { type: 'string' },
},
},
},
},
required: ['title', 'description', 'items'], // 필수 항목 지정
}
const genAI = new GoogleGenerativeAI(process.env.GOOGLE_AI_API_KEY)
const model = genAI.getGenerativeModel({
model: 'gemini-1.5-pro',
// 스키마 적용
generationConfig: {
responseMimeType: 'application/json',
responseSchema: schema,
},
})
결과 예시
{
"title": "Gemini API 활용하기",
"description": "Google Generative AI를 활용한 텍스트 생성 방법",
"items": [
{ "id": "1", "content": "Gemini API 설정하기" },
{ "id": "2", "content": "스키마를 활용한 JSON 응답 처리" }
]
}
스키마를 사용하면 원하는 구조의 형태로 응답을 받을 수 있어 일관성을 유지할 수 있고, 필요한 데이터를 정확히 받을 수 있다는 장점이 있습니다.
최종 코드
import { GoogleGenerativeAI, SchemaType } from '@google/generative-ai'
const schema = {
type: SchemaType.OBJECT,
description: '이 스키마는 제목, 설명, 항목 목록을 가진 콘텐츠 모델의 구조를 정의합니다.',
properties: {
title: { type: 'string' },
description: { type: 'string' },
items: {
type: 'array',
items: {
type: 'object',
properties: {
id: { type: 'string' },
content: { type: 'string' },
},
},
},
},
required: ['title', 'description', 'items'],
}
const genAI = new GoogleGenerativeAI(process.env.GOOGLE_AI_API_KEY)
const model = genAI.getGenerativeModel({
model: 'gemini-1.5-pro',
generationConfig: {
responseMimeType: 'application/json',
responseSchema: schema,
},
})
export default async function promptGemini(p) {
try {
const result = await model.generateContent(p)
return result.response.text()
} catch (error) {
console.error('Error generating content:', error)
throw error
}
}