<aside> 💡

한 줄 요약: 둘 다 Flutter/Dart에서 Google Gemini를 쓰는 방법이지만, Firebase AI Logic은 앱(클라이언트) 안에서 직접 호출하고, Genkit은 서버/백엔드에서 AI 워크플로우를 오케스트레이션한다. 실행 위치와 목적이 완전히 다르다.

</aside>

핵심 비교

구분 Genkit (Dart) Firebase AI Logic (firebase_ai)
실행 위치 서버/백엔드 (Dart 서버, Cloud Functions) 클라이언트 앱 (Flutter 앱 안에서 직접)
목적 AI 워크플로우(flow) 오케스트레이션, 툴 콜링, 구조화 출력 앱에서 Gemini/Imagen 직접 호출
API 키 관리 서버가 보관 (앱에 노출 안 됨) Firebase가 프록시 → 앱에 키 안 박음
패키지 genkit, genkit_google_genai firebase_ai
백엔드 선택 Google AI / Vertex AI Google AI backend 또는 Vertex AI backend
추가 도구 코드젠(schemantic, build_runner) 필요 별도 코드젠 불필요

언제 무엇을 쓰나

1. Firebase AI Logic — firebase_ai

Flutter 앱이라면 보통 이쪽. 앱 안에서 Gemini를 직접 호출하되 API 키는 Firebase가 관리한다.

백엔드 두 가지 (같은 Gemini로 가는 통로 2개)

Google AI 통로 Vertex AI 통로
비유 편의점 (바로 이용) 대형 계약 창고 (계약·설정 필요)
시작 지금 바로, 무료로 됨 GCP에서 Vertex AI 활성화 필요
누구용 개발 · 테스트 · 프로토타입 대규모 서비스 · 회사 프로덕션
코드 FirebaseAI.googleAI() FirebaseAI.vertexAI()

초기화

import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';

// A) Google AI backend (빠른 시작, 무료 티어)
final model = FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');

// B) Vertex AI backend (프로덕션, 리전 지정)
final model = FirebaseAI.vertexAI(location: 'us-central1')
    .generativeModel(model: 'gemini-2.5-flash');

콘텐츠 생성 (단발)

final response = await model.generateContent([Content.text(prompt)]);
print(response.text);

스트리밍 (채팅 UI에 적합)

final responses = model.generateContentStream([Content.text(prompt)]);
await for (final response in responses) {
  print(response.text); // 조각조각 도착
}

시스템 지시 · 툴 · 안전설정