AI

Gemini API 사용법과 JSON 구조 응답 받는 방법

다소스랩 2024. 11. 18. 20:39
반응형

 

다양한 AI 모델이 존재하며, 각 모델마다 특징과 장단점이 다 다릅니다. 이 글에서는 Gemini를 소개합니다. Gemini는 2024년 11월 기준 무료로 사용해볼 수 있으며, 사용 한도가 있지만 테스트용이나 토이 프로젝트에 적용하기에 충분한 수준의 사용량을 제공합니다.

 

가성비있게 AI 서비스를 만들어보고 싶다면 ChatGPT와 Claude보다 Gemini가 훨씬 나은 선택이라고 생각합니다.

 

 

이 글에서는 Gemini API를 간단하게 사용해보고 JSON 형태의 구조화된 응답을 받는 방법에 대해 다룹니다. 더 자세한 내용은 공식문서를 참고해주세요.

 

API 키 발급

API 키 발급 버튼

 

Google AI Studio에서 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 필드에 원하는 모델명을 입력하면 됩니다. 다양한 모델 목록과 성능 비교는 공식 문서를 통해 확인 가능합니다.

 

스키마 사용해서 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
  }
}

 

반응형