Firebase AI Logic 기본은(는) 무엇을 하나요?
개요
Firebase AI Logic은 Firebase의 제품으로, 개발자가 클라이언트 측 SDK를 사용하여 모바일 및 웹 앱에 생성형 AI를 추가할 수 있게 해줍니다. 앱은 Firebase AI Logic을 통해 Gemini 모델을 직접 호출할 수 있으며, 개발자가 전용 백엔드를 관리할 필요가 없습니다. Firebase AI Logic은 이전에 "Vertex AI for Firebase"로 알려져 있었습니다.
두 가지 Gemini API 제공업체를 지원합니다:
- Gemini Developer API: 프로토타입 제작에 이상적인 무료 티어와 프로덕션용 종량제 요금제를 제공합니다.
- Agent Platform Gemini API(구 Vertex AI): 엔터프라이즈급 프로덕션 준비 상태로 확장에 이상적이며 Blaze 요금제가 필요합니다.
기본적으로 Gemini Developer API를 사용하고, 애플리케이션에 필요한 경우에만 Agent Platform Gemini API(구 Vertex AI)를 사용하세요.
설정 및 초기화
사전 요구 사항
- 시작하기 전에 사용자가 구축하려는 플랫폼(Android, iOS, Web, Flutter)을 확인합니다.
- 플랫폼이 지원되지 않는 경우, Firebase Docs로 안내하여 애플리케이션에 AI Logic을 설정하는 방법을 배우도록 합니다(이 링크를 사용자와 공유: https://firebase.google.com/docs/ai-logic/get-started).
- 아래 Firebase CLI 명령어는 모든 플랫폼에서
npx를 통해 실행되므로 Node.js 20+ 및 npm이 필요합니다.firebase-basics스킬을 사용하여 해당 항목을 확인하고 Firebase CLI에 로그인하세요. Node.js가 없거나 버전 20보다 오래된 경우, 사용자에게 해당 스킬에 설명된 대로 설치하도록 요청하세요. 예를 들어sudo apt-get을 사용하여 시스템 패키지를 직접 설치하지 마십시오. 이는 사용자의 동의 없이 시스템을 변경하는 것입니다.
1. Firebase AI Logic 프로비저닝 (모든 플랫폼)
Firebase CLI를 사용하여 Firebase 프로젝트에 Firebase AI Logic을 프로비저닝합니다:
-
Firebase 디렉토리(
firebase.json파일이 있는)에 있는지 확인합니다. -
의도한 Firebase 프로젝트에 대해 Firebase CLI 명령어를 실행하고 있는지 확인합니다. 이 명령어를 실행하면 활성 프로젝트가 "current"로 표시됩니다:
npx -y firebase-tools@latest projects:list -
현재 Firebase 프로젝트에 대상 플랫폼에 대한 Firebase 앱이 최소 하나 등록되어 있는지 확인합니다:
npx -y firebase-tools@latest apps:list -
Firebase 프로젝트에 Firebase AI Logic을 프로비저닝합니다:
npx -y firebase-tools@latest init ailogic이 명령어는 Firebase 프로젝트에서 Gemini Developer API를 활성화합니다.
[!WARNING] 중요: Firebase AI Logic 프로비저닝은 필수입니다 모든 플랫폼(Android, iOS, Web, Flutter)에서, 앱이 이미 Firebase를 사용하고 있더라도 서비스를 프로비저닝하려면 반드시
npx -y firebase-tools@latest init ailogic을 실행해야 합니다.GoogleService-Info.plist,google-services.json,firebase_options.dart의 구성 파일은 클라이언트 구성만 처리하며 Firebase AI Logic 서비스를 활성화하지 않으므로PERMISSION_DENIED오류가 발생합니다.
직접 init ailogic을 실행할 수 없는 경우(예: Node.js가 없거나 Firebase CLI에 로그인되지 않은 경우) 건너뛰지 마세요. 앱의 Gemini 모델 요청은 Firebase AI Logic 서비스가 프로비저닝될 때까지 실패합니다. 사용자에게 프로젝트 디렉토리에서 이 명령어를 실행하도록 알리고 최종 요약에 포함하세요:
npx -y firebase-tools@latest init ailogic
2. SDK 추가 및 앱에서 서비스 초기화
SDK 종속성 추가 및 서비스 초기화는 플랫폼마다 다릅니다. 코드를 작성하기 전에 초기화 코드 참조에 나열된 대상 플랫폼의 참조를 읽으세요.
자세한 내용은 Firebase AI Logic 시작하기를 참조하세요.
핵심 기능
[!WARNING] 중요: 최신 모델 이름 사용: 항상 Firebase AI Logic 모델 문서에서 현재 지원되는 모델 이름을 확인하세요.
gemini-2.0-pro또는gemini-2.0-flash와 같은 종료된 구형 모델을 사용하지 마세요.
텍스트 전용 생성
멀티모달 (텍스트 + 이미지/오디오/비디오/PDF 입력)
Firebase AI Logic을 사용하면 Gemini 모델이 앱에서 직접 이미지 파일을 분석할 수 있습니다. 이를 통해 캡션 생성, 이미지에 대한 질문 응답, 객체 감지, 이미지 분류와 같은 기능을 구현할 수 있습니다. 이미지 외에도 Gemini는 오디오, 비디오, PDF와 같은 다른 미디어 유형을 인라인 데이터와 해당 MIME 유형으로 전달하여 분석할 수 있습니다. 20메가바이트보다 큰 파일(인라인 데이터로 인해 HTTP 413 오류가 발생할 수 있음)의 경우 Cloud Storage for Firebase에 저장하고 해당 URL을 Gemini Developer API에 전달하세요.
채팅 세션 (다중 턴)
startChat을 사용하여 기록을 자동으로 유지합니다.
스트리밍 응답
결과가 도착할 때(예: 타이핑 효과) 부분 결과를 표시하여 사용자 경험을 개선하려면 generateContent 대신 generateContentStream을 사용하여 더 빠르게 결과를 표시하세요.
텍스트-음성(TTS) 생성
사용자 정의 음성 백엔드 없이 클라이언트 장치에서 직접 음성 오디오를 생성합니다. Firebase AI Logic은 전용 Gemini TTS 모델을 사용한 음성 합성을 지원합니다:
- 지원 모델:
gemini-3.1-flash-tts-preview - 기능:
- 단일 화자 음성 페르소나 선택(
voiceName) 및SpeechConfig/MultiSpeakerVoiceConfig를 통한 다중 화자 대화(최대 2명의 고유 화자) responseModalities를 오디오로 설정하여 직접 오디오 응답- 저지연 재생을 위한
generateContentStream을 사용한 스트리밍 음성 응답 - 오디오 지시문(
[Audio Profile: ...],[Scene: ...],[Director's Note: ...]) 및 감정 태그([whispers],[laughs],[slowly]) - 24kHz 16비트 선형 PCM(
audio/l16) 또는 WAV 컨테이너 형식(audio/x-wav)의 클라이언트 측 디코딩 및 재생
- 단일 화자 음성 페르소나 선택(
전체 구현 세부 사항, 스트리밍 패턴 및 iOS(Swift), Android(Kotlin), Web용 복사-붙여넣기 코드 조각은 텍스트-음성(TTS) 생성 가이드를 참조하세요.
Nano Banana로 이미지 생성
[!WARNING] 최신 이미지 모델 이름 사용: 항상 Firebase AI Logic 모델 문서에서 현재 지원되는 이미지 생성(Nano Banana) 모델 이름을 확인하세요.
- 업그레이드된 Blaze 종량제 요금제가 필요합니다.
내장 googleSearch 도구를 사용한 검색 근거
지원 플랫폼 및 프레임워크
지원되는 플랫폼 및 프레임워크는 Android용 Kotlin 및 Java, iOS용 Swift, 웹 앱용 JavaScript, Flutter용 Dart, Unity용 C#입니다.
고급 기능
구조화된 출력 (JSON)
응답에 특정 JSON 스키마를 적용합니다.
온디바이스 AI (하이브리드)
하이브리드 추론은 온디바이스 모델을 사용할 수 있을 때 프롬프트를 실행하고, 그렇지 않으면 클라우드 호스팅 모델로 대체합니다(또는 그 반대). 가용성 및 설정 단계는 플랫폼마다 다릅니다. 자세한 내용은 하이브리드 및 온디바이스 문서를 참조하세요. 이 문서는 각 플랫폼의 가이드로 연결됩니다.
보안 및 프로덕션
Firebase App Check
[!WARNING] 중요 안전 요구 사항: AI Logic을 안전하게 사용하려면 앱에 App Check를 반드시 설정해야 합니다. 이는 승인되지 않은 클라이언트가 API 할당량을 사용하고 백엔드 리소스에 액세스하는 것을 방지합니다.
설정 지침은 Firebase AI Logic용 App Check를 참조하세요. 각 플랫폼은 자체 증명 제공자를 사용하므로 대상 플랫폼에 대한 지침을 따르세요.
로컬 개발 및 CI/CD를 위한 App Check 디버그 토큰
App Check 증명 제공자(예: Play Integrity 또는 DeviceCheck)는 에뮬레이터, 시뮬레이터 또는 CI 환경을 거부하므로, 개발 및 테스트 중에는 표준 증명을 우회하기 위해 App Check 디버그 토큰을 사용해야 합니다.
[!WARNING] 중요: 디버그 토큰을 절대 하드코딩하거나 커밋하지 마세요 App Check 디버그 토큰은 클라이언트가 실제 장치 없이 증명을 우회하고 백엔드 리소스에 액세스할 수 있게 합니다. 이를 비공개 비밀로 취급하세요. 디버그 토큰을 버전 관리에 커밋하거나 클라이언트 코드(Web, Android, iOS, Flutter)에 원시 토큰 문자열을 하드코딩하지 마세요. 항상 로컬 환경 변수, gitignore된 로컬 구성 또는 CI 비밀을 통해 주입하세요. 토큰이 손상된 경우 Firebase Console에서 즉시 해지하세요.
로컬 개발 (자동 생성)
- App Check 제공자가 디버그 팩토리를 사용하도록 코드를 구성합니다. API는 플랫폼별로 다릅니다. 플랫폼 참조의 App Check 섹션 또는 위에 링크된 App Check 문서를 참조하세요.
- 에뮬레이터/localhost에서 앱을 실행합니다.
- 런타임 디버거 콘솔/Logcat 로그에서 생성된 UUID를 확인합니다:
- 예:
AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678"
- 예:
- Firebase Console의 Security > App Check > Apps > Manage debug tokens에서 이 토큰을 등록합니다.
💡 팁 (디버그 토큰 변경 방지): 시뮬레이터 또는 에뮬레이터 재설정, 새로 설치, 브라우저 데이터 지우기는 SDK가 새 디버그 토큰을 생성하여 다시 등록해야 할 수 있습니다. 하드코딩 없이 안정적인 디버그 토큰을 유지하려면 플랫폼 참조의 App Check 섹션을 참조하세요.
CI/CD 파이프라인 (사전 프로비저닝)
- Firebase Console의 Security > App Check > Apps > Manage debug tokens에서 새 디버그 토큰을 생성하고 등록합니다.
- 이 토큰 문자열을 CI 시스템에 암호화된 비밀(예:
APP_CHECK_DEBUG_TOKEN)으로 추가합니다. - 테스트 실행 중에 이 비밀을 SDK에 환경 변수로 전달하도록 빌드를 구성합니다.
Firebase Remote Config
모델 이름(예: 특정 모델 버전 문자열)을 하드코딩할 필요가 없습니다. Firebase Remote Config를 사용하여 새 클라이언트 코드를 배포하지 않고도 모델 버전을 동적으로 업데이트할 수 있습니다. 모델 이름 원격 변경을 참조하세요.
초기화 코드 참조
-
Android (Kotlin)
- Gemini API 제공업체: Gemini Developer API
- 참조: usage_patterns_android.md
-
iOS (Swift)
- Gemini API 제공업체: Gemini Developer API
- 참조: ios_setup.md
-
Web 모듈식 API
- Gemini API 제공업체: Gemini Developer API
- 참조: usage_patterns_web.md
-
Flutter (Dart)
- Gemini API 제공업체: Gemini Developer API
- 참조: flutter_setup.md
[!WARNING] 중요: 최신 모델 이름 사용: 항상 Firebase AI Logic 모델 문서에서 현재 지원되는 모델 이름을 확인하세요.
gemini-2.0-pro또는gemini-2.0-flash와 같은 종료된 구형 모델을 사용하지 마세요.
참조
Android (Kotlin) SDK 사용 패턴 iOS SDK 코드 예제 및 사용 패턴 Web SDK 설정, 코드 예제 및 사용 패턴 Flutter SDK 코드 예제 및 사용 패턴 클라이언트 측 텍스트-음성(TTS) 생성