deprecated-generative-ai-js
Google 官方 TypeScript SDK,封装 Gemini API 调用,支持文本生成、多模态输入、流式输出和对话管理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Google 官方 TypeScript SDK,封装 Gemini API 调用,支持文本生成、多模态输入、流式输出和对话管理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024年初,如果你是一名使用 Google Gemini API 的 JavaScript/TypeScript 开发者,你大概率在用 @google/generative-ai 这个 npm 包——这是 Google 官方发布的 JavaScript 版 Gemini SDK,封装了从文本生成、对话聊天到多模态(图片/视频/音频)输入的完整能力。
然而 2024 年底,随着 Gemini 2.0 的发布,Google 做了一个对开发者生态影响深远的决定:将原本分散的多产品 SDK(Gemini、Veo、Imagen 等)合并为统一的 js-genai SDK。原来的 @google/generative-ai(即本项目 google/generative-ai-js)正式宣告退役,官方 README 第一行就写着大字标题 "[Deprecated]"——这是一个不常见的做法,说明 Google 对 SDK 合并的决心非常坚定。
这一决定的背后逻辑不难理解:开发者不需要记住三四个不同的 Google AI SDK,只需要一个统一的入口。这种"大一统"策略在 AI 平台领域越来越常见,但对依赖旧 SDK 的项目来说,迁移成本是真实存在的。
本项目是一个纯客户端 TypeScript/npm SDK,不运行任何 AI 模型,核心职责是将 Gemini REST API 的调用过程封装为类型安全的 TypeScript 类和函数。开发者不需要直接构造 HTTP 请求,只需要几行代码:
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const result = await model.generateContent("Hello, Gemini!");
console.log(result.response.text());
这套模式对任何用过 OpenAI SDK 的开发者来说都很熟悉——风格上几乎是 1:1 对齐 OpenAI JavaScript SDK 的设计。
源码结构清晰,分为三大层次:
第一层:入口与模型工厂(src/gen-ai.ts)
GoogleGenerativeAI 是整个 SDK 的入口类,构造函数只接收一个 apiKey,然后通过 getGenerativeModel() 方法返回 GenerativeModel 实例。这里体现了工厂模式的设计:一次初始化,多次使用模型。
第二层:GenerativeModel 模型类(src/models/generative-model.ts)
这是核心类,约 8KB,聚合了所有生成能力的调用入口:
generateContent() — 同步单次生成(最常用)generateContentStream() — 流式生成,实时输出 tokenstartChat() — 创建带历史记忆的对话会话countTokens() — 计算输入的 token 数量(计费估算用)embedContent() / batchEmbedContents() — 向量嵌入每个方法内部都通过 formatGenerateContentInput() 对输入参数做标准化处理,支持字符串、Array<string|Part> 或 GenerateContentRequest 三种输入形式,降低使用门槛。
第三层:请求/响应层(src/requests/)
request.ts — 底层 HTTP 调用,通过 makeModelRequest() 构造真实的 Gemini API 请求stream-reader.ts — 流式响应解析(processStream()),处理 Server-Sent Events(SSE)格式的流数据response-helpers.ts — 为 API 响应附加辅助方法(如 text()、functionCall() 等)服务端专用模块(src/server/)
cache-manager.ts 和 file-manager.ts 提供了服务端环境下的专属能力:
CachedContent)— 将长文档缓存在 API 侧,减少 token 计费FileManager) — 上传和管理大文件(最大 2GB),支持视频、PDF 等媒体文件这两个模块只在 Node.js 服务端可用,在浏览器中会被自动排除,体现了环境感知的设计。
项目代码质量较高:
types/ 目录),导出类型包括 Part、Content、SafetySetting、GenerationConfig 等,覆盖 Gemini API 的所有参数*.test.ts 文件遍布各模块,使用 Mocha + Chai 测试框架test-integration/node/)+ Web 集成测试(web-test-runner)api-extractor 生成 API 报告 + api-documenter 生成 Markdown 文档文档质量极高:每个公开类/方法都有 JSDoc 注释,README 包含 20+ 个 samples 示例(samples/ 目录),涵盖 chat、files、function_calling、code_execution、safety_settings 等所有主要功能。
适用场景:
samples/web/ 提供 Web Demo)局限性:
googleapis/js-genai(新统一 SDK),本项目仅接收关键 bug 修复,2025年11月30日后完全停止维护尽管已被官方废弃,@google/generative-ai 的代码是理解AI API SDK 设计模式的绝佳范本:
getGenerativeModel() 工厂方法对于正在构建自有 AI API SDK 的开发者,这套代码提供了 Google 级别的工程标准参考。迁移到新 SDK 是必然选择,但学习这套设计的价值不会随之消失。

图1:Google AI 官方组织头像(本项目所属组织)