ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Genkit Dart 集成 Firebase AI:通过 `genkit_firebase_ai` 插件调用 Gemini API

2026/9/13 19:51:23 拓冰建站 浏览量
Genkit Dart 集成 Firebase AI:通过 `genkit_firebase_ai` 插件调用 Gemini API Genkit Dart 集成 Firebase AI通过genkit_firebase_ai插件调用 Gemini API【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skillsgenkit_firebase_ai是 Genkit Dart 生态中的 Firebase AI 插件它让 Dart/Flutter 应用能够通过 Firebase AI Logic 直接访问 Gemini API并沿用 Genkit 统一的Genkit/ai.generate编程模型。本文以 genkit_firebase_ai.md 为核心结合同仓库的 Genkit Dart 核心框架文档与 Firebase 基础技能完整讲解插件初始化、模型引用、生成调用以及配套的项目准备与调试实践。插件定位Firebase AI Logic 与 Gemini API 的 Genkit 桥接在 Genkit Dart 的插件生态中SKILL.md 的插件清单表对genkit_firebase_ai的描述是“Load for Firebase AI plugin interface (Gemini API via Vertex AI)”即该插件提供的是经由Firebase AI Logic / Vertex AI 通道访问 Gemini API 的接口与同样面向 Gemini 但直连 Google AI API 的genkit_google_genai插件见 genkit_google_genai.md形成两条互补的接入路径。也就是说当你希望把生成能力构建在 Firebase 项目与 AI Logic 之上例如与 Firestore、Cloud Functions 等 Firebase 服务共享同一项目上下文时应选择genkit_firebase_ai而当你只需要直连 Google AI Studio 的 API 时则选用genkit_google_genai。两者都通过firebaseAI.gemini(...)/googleAI.gemini(...)返回统一的模型引用因此切换到另一个插件时业务代码的ai.generate调用几乎无需改动。项目准备Firebase 项目与 CLI 环境使用 Firebase AI 插件前需要一个已就绪的 Firebase 项目上下文。仓库中的 firebase-basics 技能给出了官方推荐的操作流程检查 CLI运行npx -y firebase-toolslatest --version确认 Firebase CLI 可用始终使用npx -y firebase-toolslatest前缀以保证最新版本。登录认证执行npx -y firebase-toolslatest login在无浏览器的远程 Shell 环境中改用npx -y firebase-toolslatest login --no-localhost。激活项目用npx -y firebase-toolslatest use查看当前项目若需要切换则执行npx -y firebase-toolslatest use PROJECT_ID新建项目可用npx -y firebase-toolslatest projects:create project-id --display-name display-nameproject-id 要求 630 位小写字母、数字与连字符且全局唯一。初始化服务进入代码库根目录以存在firebase.json为标志后执行npx -y firebase-toolslatest init按引导选择需要的特性并生成firebase.json、.firebaserc详见 firebase-service-init.md。完成以上步骤后你的 Dart 应用才具备调用 Firebase AI Logic 所需的项目上下文与凭证。插件安装与初始化在你的 Dart 项目中添加依赖并引入插件包import package:genkit/genkit.dart; import package:genkit_firebase_ai/genkit_firebase_ai.dart;初始化 Genkit 时将firebaseAI()插件传入构造函数这与 genkit.md 中“把插件传入Genkit构造器”的通用约定完全一致只是把googleAI()换成firebaseAI()void main() async { // 通过 Firebase AI 插件初始化 Genkit final ai Genkit(plugins: [firebaseAI()]); }firebaseAI()返回插件实例由它在 Genkit 运行时内注册 Gemini 模型族与对应的鉴权通道后续所有ai.generate/ai.generateStream调用即可解析firebaseAI.gemini(...)给出的模型引用。模型引用firebaseAI.gemini()插件以firebaseAI.gemini(modelName)的形式暴露模型选择器其中modelName传入 Gemini 模型的名称字符串例如gemini-flash-latest。这是继 genkit_firebase_ai.md 之后的推荐写法示例如下final response await ai.generate( model: firebaseAI.gemini(gemini-flash-latest), prompt: Tell me a joke about a developer., ); print(response.text);模型名使用-latest这类浮动标签时会始终解析到当前最新的稳定版本如需固定行为也可以换成带具体版本号的模型标识。从源码结构看firebaseAI.gemini()与googleAI.gemini()遵循同一套“插件 → 模型引用 → generate”的调用链只是底层走 Firebase AI Logic 通道。生成调用从基础到生产级写法基础文本生成最简调用如上例传入model与prompt从response.text取回文本。这一步即可验证插件与项目凭证是否打通。流式生成对长回复场景可切换到流式接口边生成边输出显著降低首 token 等待时间。参考 genkit.md 的通用模式final stream ai.generateStream( model: firebaseAI.gemini(gemini-flash-latest), prompt: Write a short story about a robot learning to paint., ); await for (final chunk in stream) { print(chunk.text); }结构化输出需要模型返回强类型 JSON 时通过outputSchema约束输出。Genkit Dart 使用schemantic库定义模式详见 schemantic.md 与 SKILL.md 中的外部依赖说明Schema() abstract class $Person { String get name; int get age; } // ... main 内部 ... final response await ai.generate( model: firebaseAI.gemini(gemini-flash-latest), prompt: Generate a person named John Doe, age 30, outputSchema: Person.$schema, // 强制模型按该模式返回 ); final person response.output; // 类型化 Person 对象 print(Name: ${person.name}, Age: ${person.age});用 Flow 封装生成逻辑把生成逻辑包进ai.defineFlow可获得可观测性、可测试性与可部署性这也是仓库 genkit.md 明确推荐的做法final jokeFlow ai.defineFlow( name: tellJoke, inputSchema: .string(), outputSchema: .string(), fn: (topic, _) async { final response await ai.generate( model: firebaseAI.gemini(gemini-flash-latest), prompt: Tell me a joke about $topic, ); return response.text; }, );Flow 注册后即可通过 Genkit CLI 的flow:run直接触发见下文调试章节也可进一步用genkit_shelf暴露为 HTTP 服务。调试与验证用 Genkit CLI 捕获真实调用SKILL.md 的 Genkit CLI (recommended) 一节强调直接dart run不会捕获开发期 trace务必用 CLI 包裹运行。genkit start -- dart run main.dart # 无 Dev UI 版本仍是常驻服务并非一次性命令 genkit start --noui -- dart run main.dart启动后打开 Developer UI通常为 http://localhost:4000可运行 flow、使用模型/Agent 游乐场并浏览 trace也可以在终端中检查genkit trace:list # 列出最近的 trace ID genkit trace:get traceId --format json # 机器可读 JSON可管道给 jq需要非交互、自终止地验证某个 flow 时用flow:rungenkit flow:run tellJoke developer -- dart run main.dart命令执行一次后打印 Trace ID 并退出适合 CI 或 Agent 场景别忘了为自动化场景加上--non-interactive全局标志。使用前先确认 CLI 已安装genkit --version安装方式为curl -sL cli.genkit.dev | bash或npm install -g genkit-cli也可以随时用npx genkit-cli前缀免全局安装见 SKILL.md。最佳实践小结明确接入路径项目已基于 Firebase 生态AI Logic、Vertex AI 鉴权时选用genkit_firebase_ai仅需 Google AI API 直连时选用 genkit_google_genai二者模型调用代码几乎可互换。统一编程模型初始化、生成、流式、结构化输出、Flow 等所有能力均来自 Genkit 核心框架插件只负责注册模型与通道因此本文中的生成示例同样适用于genkit_firebase_ai之外的其他模型插件。永远用 trace 验证不要盲跑本地开发一律通过genkit start --或flow:run启动借助 trace 检查 prompt、模型输入输出与错误见 SKILL.md 的最佳实践。发布前静态检查生成最终响应前运行dart analyze确保代码可干净编译。类型化模式依赖 schemantic凡涉及 Tool、Flow、Prompt 中的 schema 定义必须引入schemantic库并按 schemantic.md 的约定书写这是使用 Genkit Dart 的关键前置技能。关联文档速查内容仓库相对路径Firebase AI 插件参考本文核心genkit_firebase_ai.mdGenkit Dart 核心框架初始化/生成/流式/工具/Flowgenkit.md兄弟插件 Google GenAI 参考genkit_google_genai.mdGenkit Dart 技能总览与插件清单SKILL.mdFirebase 项目与 CLI 基础firebase-basics/SKILL.mdFirebase 服务初始化firebase-service-init.mdFirebase CLI 命令探索firebase-cli-guide.md通过Genkit(plugins: [firebaseAI()])一行初始化配合firebaseAI.gemini(...)模型引用与统一的ai.generate调用即可在 Firebase AI Logic 通道上构建 Dart/Flutter 的 Gemini 应用再叠加 Flow 封装、结构化输出与 Genkit CLI 的 trace 调试便形成一套从开发、验证到部署的完整链路。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考