Gemini API Tutorial with Python and Node.js
这套教程用 Python 和 Node.js 各写一遍同一个 Gemini API 调用:环境准备、基础文本生成、流式输出、多模态输入和异常处理。两种语言的 SDK 结构基本对应,看完一遍,另一门语言你大概也能直接照着写。
准备环境
开始之前,先把两个依赖装好。Python 侧用官方 SDK,Node.js 侧用官方 npm 包,两条命令就够了。
# Python
pip install google-generativeai
# Node.js
npm install @google/generative-aiPython 基础调用
拿到 API key 之后,最简单的文本调用长这样。注意 API key 从环境变量读,别写死在代码里。
import google.generativeai as genai
import os
API_KEY = os.environ["GEMINI_API_KEY"]
genai.configure(api_key=API_KEY)
model = genai.GenerativeModel("gemini-1.5-flash")
resp = model.generate_content("用一句话解释什么是向量数据库")
print(resp.text)Node.js 基础调用
同样的调用在 Node.js 里这样写。SDK 的 API 形状和 Python 版接近,迁移起来不费劲。
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const result = await model.generateContent("用一句话解释什么是向量数据库");
console.log(result.response.text());流式输出
长回答建议用流式,结果一边生成一边吐出来,体验比干等一整段好很多。两种语言都是返回一个可迭代的流。
# Python
stream = model.generate_content("写一篇 800 字的文章", stream=True)
for chunk in stream:
print(chunk.text, end="") // Node.js
const stream = await model.generateContentStream("写一篇 800 字的文章");
for await (const chunk of stream.stream) {
process.stdout.write(chunk.text());
}
多模态输入
Gemini 的优势之一是多模态:图片、音频、视频可以和文本一起传。下面用一张本地图片做示例,直接问模型图片里有什么。
# Python
img = genai.upload_file("diagram.png")
resp = model.generate_content([img, "这张架构图讲了什么?"])
print(resp.text) // Node.js
import fs from "node:fs";
const image = { inlineData: { data: fs.readFileSync("diagram.png").toString("base64"), mimeType: "image/png" } };
const result = await model.generateContent([image, "这张架构图讲了什么?"]);
console.log(result.response.text());异常处理
接口总会出错:配额用完、内容被拦、网络抖动。统一捕获并区分处理,比让程序直接崩掉体面得多。
# Python
from google.api_core import exceptions
try:
resp = model.generate_content("你好")
except exceptions.ResourceExhausted as e:
print("配额用尽,稍后再试", e)
except exceptions.PermissionDenied as e:
print("API key 没有权限", e) // Node.js
import { GoogleGenerativeAIError } from "@google/generative-ai";
try {
const result = await model.generateContent("你好");
console.log(result.response.text());
} catch (err) {
if (err instanceof GoogleGenerativeAIError) {
console.error("Gemini API 调用失败:", err.message);
} else {
console.error("未知错误:", err);
}
}
