genkit
Google开源的多语言AI应用框架,一套SDK支持JS/Go/Python,一次开发多端部署生产级AI应用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Google开源的多语言AI应用框架,一套SDK支持JS/Go/Python,一次开发多端部署生产级AI应用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
老张在北京五道营胡同经营一家精品咖啡店。2024年初,他想让顾客用手机拍照菜单就能获得个性化推荐——"这杯拿铁适合搭配什么甜点?""我有乳糖不耐,有哪些手冲可选?"他找了两家软件外包,报价都超过30万,交付周期要三个月。更让他困惑的是,对方工程师提到的"Prompt工程""向量检索""Agent工作流",每一个词都像是天书。
老张的困境,折射出AI应用开发的核心矛盾:底层工具越来越强大,但上手门槛依然让大多数开发者望而生畏。 这正是Google推出Genkit想要解决的根本问题。
Genkit并非实验室产物,而是Google内部经过生产验证的框架。它由Firebase团队主导开发,最初是为了降低Google工程师集成Gemini等大模型的成本。2024年初正式开源后,迅速成为GitHub上最受关注的AI应用框架之一,目前Stars超过6000。
与传统AI SDK不同,Genkit的核心设计哲学是**"一次开发,多端部署"**。同一个项目可以几乎不改代码地运行在Node.js服务端、移动端(iOS/Android),以及最新的Dart/Flutter平台。这种跨语言一致性,对于需要同时维护App和后台服务的团队来说,吸引力巨大。
1. 统一的多模型编排层
Genkit不像某些SDK那样"绑定"单一模型提供商。它内置了一个插件化的模型抽象层,当前支持的提供商包括:
切换模型只需要改一行配置,不影响业务代码。这对于需要对比不同模型效果的团队(尤其是在API成本敏感的场景下)是巨大的效率提升。
2. 工具调用(Tool Calling)与Agent工作流
这是Genkit区别于简单"调用LLM"的根本能力。一个典型的Agent工作流在Genkit中是这样定义的:定义工具(可以是数据库查询、API调用、代码执行)→ 定义Agent指令 → Agent自动决定何时调用哪个工具 → 组合输出。
示例场景:一个旅行规划Agent,可以调用天气API获取目的地天气,调用地图API计算距离,调用酒店API查询价格,然后综合所有信息生成行程建议。Genkit负责协调这些工具的调用顺序和上下文传递。
3. RAG(检索增强生成)管道
对于需要基于私有知识库回答问题的场景,Genkit提供了开箱即用的RAG支持。嵌入向量存储(支持ChromaDB、Pinecone、Firebase Vector DB等)、文档切分、相似度检索、再到生成回答,整条管道只需几十行代码即可搭建完成。
4. 结构化输出(Structured Output)
生成JSON Schema约束的输出格式,解析后可直接映射为强类型对象(TypeScript class、Go struct、Python dataclass)。这解决了LLM输出格式不稳定的问题,让AI能力可以安全地接入业务逻辑。
5. 本地开发者工具(DevTools UI)
这是Genkit最令开发者称道的特性之一。运行 genkit start 后,会在本地启动一个Web界面,提供:
Genkit的代码组织体现了清晰的工程分层:
genkit-ai/genkit/
├── js/ # TypeScript/Javascript SDK(生产就绪)
├── go/ # Go SDK(生产就绪)
├── py/ # Python SDK(Beta版)
├── genkit-tools/ # CLI和DevTools UI
│ ├── cli/ # 命令行工具
│ └── telemetry-server/ # 追踪数据收集服务
├── docs/ # 官方文档
└── samples/ # 官方示例(咖啡店、聊天机器人等)
插件系统设计值得称道:每个模型提供商是一个独立的npm包(如 @genkit-ai/google-genai、@genkit-ai/vertexai),核心框架不直接依赖任何特定模型实现。这种松耦合设计使得:
| 维度 | 评估 |
|---|---|
| 安装难度 | 低,通过 npm install -g genkit 一键完成 |
| 学习曲线 | 中等,需理解Flow/Agent概念 |
| Web UI | 有(本地DevTools,需CLI启动) |
| 文档质量 | 极高(官方提供多语言文档和视频教程) |
| 生产成熟度 | 高(Firebase已在生产环境使用) |
对于有JavaScript/TypeScript或Go背景的开发者,Genkit的上手体验接近"开箱即用"。但对于完全不懂编程的用户(如老张这样的咖啡店老板),仍然需要开发者帮助搭建和部署。
1. Python支持仍为Beta
尽管Python是AI领域最流行的语言,Genkit的Python SDK目前标注为Beta版,部分高级特性(如完整的Flow追踪)尚未完全落地。对于以Python为中心的ML团队,选择需要谨慎评估。
2. 国内部署的挑战
Genkit默认集成的模型提供商(Gemini、OpenAI、Anthropic)在国内访问受限。虽然支持Ollama本地模型,但失去了云端模型的规模和成本优势。中文支持方面,Gemma系列模型的效果与GPT-4存在明显差距。
3. 无容器化支持
没有提供Dockerfile或docker-compose,意味着生产环境部署需要依赖各平台的原生部署工具(如Firebase CLI、Google Cloud SDK)。对于已经容器化运营的团队,引入了额外的运维复杂度。
4. 厂商锁定风险
尽管支持多模型切换,Genkit的某些高级特性(如Firebase托管集成、Vertex AI深度集成)与Google生态绑定较深。完全"中立"的迁移成本不可忽视。
Genkit的出现代表了AI应用框架演进的一个新方向:从"LLM包装器"走向"完整应用开发平台"。它不只是简化API调用,而是试图解决AI应用开发中的完整生命周期问题:本地开发调试、多模型对比、生产监控、可观测性。
这种"端到端覆盖"的思路,与LangChain的"全家桶"策略异曲同工,但Genkit的优势在于有Google的生产实践背书,以及TypeScript/Go/Python三语言并行的开发者友好性。
对于中国的AI应用开发者,Genkit的参考价值大于直接使用价值:它的架构设计思路(插件化、工具调用抽象、Flow可视化)值得借鉴;但考虑到模型访问限制,建议关注其开源代码中的工程实践,而非直接作为生产框架。
项目信息