关于 firebase-ai
面向 Flutter 应用使用 Firebase AI Logic 的指南,介绍 Gemini 文本、聊天、流式响应与图像提示词,并涵盖错误处理和安全注意事项。
主要功能
- 01Firebase AI Logic 配置
- 02Gemini 文本生成与聊天
- 03流式响应
- 04文本与图像提示词
- 05错误、限流与离线处理
- 06安全与隐私指导
适用场景
- 01在 Flutter 应用中加入生成文本
- 02构建多轮聊天界面
- 03逐步显示流式 AI 输出
- 04随文本提示词发送图像
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ evanca/ flutter-ai-rules --skill firebase-ai安装后在 Claude Code 中输入/firebase-ai确认已加载。
详细介绍
Firebase AI 技能
此技能介绍如何在 Flutter 应用中正确使用 Firebase AI Logic。
适用场景
在以下情况下使用此技能:
- 在 Flutter 项目中设置和配置 Firebase AI。
- 使用 Gemini 模型生成文本内容或聊天回复。
- 实现流式 AI 响应,以实时更新 UI。
- 向 Gemini 发送多模态提示(文本 + 图片)。
- 处理 AI 操作中的错误、离线场景和速率限制。
- 在 AI 功能中落实安全和隐私注意事项。
1. 设置和配置
flutter pub add firebase_ai
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');
- 确保已通过 Firebase Console 中的 Firebase AI Logic 页面为 Firebase 项目配置 AI 服务。
- 使用任何 Firebase AI 功能前,先初始化 Firebase。
- 使用
FirebaseAI.googleAI()连接 Gemini Developer API 后端(建议从此处开始)。 - 实施 App Check,防止滥用 Firebase AI 端点。
平台支持:
| 平台 | 支持情况 |
|---|---|
| iOS | 完全支持 |
| Android | 完全支持 |
| Web | 完全支持 |
| macOS / 其他 Apple 平台 | Beta |
| Windows | 不支持 |
2. 生成内容
单轮文本生成
final response = await model.generateContent([
Content.text('Summarize the benefits of Flutter for mobile development'),
]);
final text = response.text; // The generated summary string
多轮聊天
final chat = model.startChat();
final response = await chat.sendMessage(
Content.text('What is the difference between StatelessWidget and StatefulWidget?'),
);
print(response.text);
// Follow-up in the same conversation
final followUp = await chat.sendMessage(
Content.text('When should I use StatefulWidget?'),
);
print(followUp.text);
流式响应
使用流式传输,在部分结果到达时立即显示:
final stream = model.generateContentStream([
Content.text('Write a step-by-step guide to implementing dark mode in Flutter'),
]);
await for (final chunk in stream) {
// Append chunk.text to the UI progressively
setState(() => _output += chunk.text ?? '');
}
多模态提示(文本 + 图片)
final imageBytes = await File('photo.jpg').readAsBytes();
final response = await model.generateContent([
Content.multi([
TextPart('Describe what you see in this image'),
InlineDataPart('image/jpeg', imageBytes),
]),
]);
3. 错误处理
使用结构化错误处理封装 AI 调用:
try {
final response = await model.generateContent([Content.text(prompt)]);
return response.text;
} on FirebaseAIException catch (e) {
if (e.message?.contains('quota') ?? false) {
// Handle rate limiting — show retry message or queue the request
return 'Service is busy. Please try again shortly.';
}
return 'AI service error: ${e.message}';
} catch (e) {
return 'Unexpected error: $e';
}
- AI 操作失败时,向用户提供有意义的错误消息。
- 使用适当的回退行为处理离线场景(例如缓存的响应)。
- 针对速率受限或暂时性错误实施指数退避。
4. 安全和隐私
- 将 AI 服务与其他 Firebase 产品配合使用时,遵循 Firebase Security Rules 最佳实践。
- 确保 AI 功能访问具有适当的身份验证和授权。
- 将用户输入发送给模型之前进行清理,以防止提示注入。
- 使用 AI 服务处理用户内容时,注意数据隐私要求。
- 使用安全设置实施适当的内容过滤和审核:
final model = FirebaseAI.googleAI().generativeModel(
model: 'gemini-2.5-flash',
safetySettings: [
SafetySetting(HarmCategory.harassment, HarmBlockThreshold.medium),
SafetySetting(HarmCategory.dangerousContent, HarmBlockThreshold.high),
],
);
参考资料
评论
支持 Markdown