Gemini API Tutorial with Python and Node.js - BigModel
Home >博客

Gemini API Tutorial with Python and Node.js

Published Updated

这套教程用 Python 和 Node.js 各写一遍同一个 Gemini API 调用:环境准备、基础文本生成、流式输出、多模态输入和异常处理。两种语言的 SDK 结构基本对应,看完一遍,另一门语言你大概也能直接照着写。

准备环境

开始之前,先把两个依赖装好。Python 侧用官方 SDK,Node.js 侧用官方 npm 包,两条命令就够了。

# Python
pip install google-generativeai

# Node.js
npm install @google/generative-ai

Python 基础调用

拿到 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());
}
Python 与 Node.js 调用 Gemini API 的双语言流程示意图

多模态输入

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);
  }
}

FAQ

Gemini API 的 Python 和 Node.js SDK 有什么区别?
结构基本对应:同名的模型对象、generate_content 方法、流式接口。选哪种主要看你项目的技术栈,API 形状迁移成本很低。
流式输出怎么做?
Python 用 generate_content(..., stream=True) 拿迭代器,Node.js 用 generateContentStream 拿异步流,边生成边打印即可。
Gemini 支持多模态输入吗?
支持。图片、音频、视频可以和文本一起传给模型;Python 用 upload_file 或 inlineData,Node.js 用 inlineData base64。
调用 Gemini API 常见报错怎么处理?
配额用尽(ResourceExhausted)、权限不足(PermissionDenied)要区分处理;建议统一捕获 SDK 异常并输出可读信息。

目录

信息

  • 点击18
  • 发布日期2026/10/12
0/500
友善分享您的看法。

更多帖子

探索本节更多文章