mcpField
F
firebase-ai

firebase-ai

github.com/evanca开发663162 次安装3 周前更新
代码仓库

关于 firebase-ai

面向 Flutter 应用使用 Firebase AI Logic 的指南,介绍 Gemini 文本、聊天、流式响应与图像提示词,并涵盖错误处理和安全注意事项。

主要功能

  1. 01Firebase AI Logic 配置
  2. 02Gemini 文本生成与聊天
  3. 03流式响应
  4. 04文本与图像提示词
  5. 05错误、限流与离线处理
  6. 06安全与隐私指导

适用场景

  1. 01在 Flutter 应用中加入生成文本
  2. 02构建多轮聊天界面
  3. 03逐步显示流式 AI 输出
  4. 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