Google的Gemini模型家族最近迎来了一位新成员——Gemini 3 Flash。这个模型最突出的标签就是速度与成本效率,非常适合那些需要快速响应的应用场景。想要把它集成到项目里,第一步当然是搞清楚怎么调用它的API。下面就从最基础的环节开始梳理。
模型特性与定位
Gemini 3 Flash在设计上目标非常明确:它不是在复杂推理能力上硬拼,而是在响应速度和性价比之间找到了一个相当理想的平衡点。换句话说,如果你的应用对响应时间敏感,或者要处理大量并发请求,它就是一个很合适的选择。
下面的表格对比了Gemini 3 Flash与同系列其他模型的一些典型特征,方便你在项目选型时快速判断。
| 特性维度 | Gemini 3 Flash | Gemini 3 Pro(参考) |
|---|---|---|
| 核心优势 | 极低延迟,高吞吐量 | 更强的复杂推理能力 |
| 适用场景 | 实时对话、内容摘要、快速分类 | 代码生成、逻辑推理、多步骤任务 |
| 输入上下文 | 100万tokens | 200万tokens |
| 输出方式 | 文本 | 文本 |
从数据上看,当预算和体验需要兼顾时,Flash版确实能帮终端用户拿到更为流畅的交互。
调用 Gemini 3 Flash API 接口
获取与配置API密钥
调用任何Gemini API的第一步都是拿一张“通行证”。去Google AI Studio,在账户设置里就能生成一个专属的API密钥。这个密钥就是访问服务的凭证,务必妥善保管。

接下来的工作就是在代码里配置这个密钥。通常的做法是通过环境变量来管理,避免把敏感信息硬编码到代码库中。
安装依赖
在Node.js项目中,可以用dotenv包来加载环境变量。先安装必要的依赖:
npm install @google/generative-ai dotenv

安装完成后,在项目根目录创建.env文件,把API密钥填进去:
GEMINI_API_KEY=your_api_key_here
注意:.env文件不要提交到代码仓库,通常需要加入.gitignore里忽略掉。

运行代码
新建一个index.js文件,用process.env来读取变量,初始化GenAI客户端。完整代码如下:
import dotenv from "dotenv";
import { GoogleGenerativeAI } from "@google/generative-ai";
dotenv.config();
const apiKey = process.env.GEMINI_API_KEY;
if (!apiKey) {
throw new Error("GEMINI_API_KEY is not set");
}
const genAI = new GoogleGenerativeAI(apiKey);
const model = genAI.getGenerativeModel({ model: "gemini-3-flash-preview" });
async function run() {
const prompt = "用一句话解释什么是 RESTful API";
const result = await model.generateContent(prompt);
const text = result.response.text();
console.log(text);
}
run().catch(console.error);
在终端执行:
node index.js
如果环境变量和依赖都配置正确,控制台会直接输出模型生成的文本内容。

探索高级生成参数
基础调用能满足简单需求,但实际项目往往需要更多控制。Gemini API提供了一系列参数来调整生成行为,比如temperature和maxOutputTokens。
temperature控制输出的随机性:值越低输出越确定、可预测;值越高则更有创造性。对于需要稳定答案的任务,低temperature会更合适。maxOutputTokens则限定了模型响应内容的最大长度,合理设置能控制篇幅、避免冗长,也是一种成本控制手段。
把这些参数整合到调用中,代码会变成这样:
import dotenv from "dotenv";
import { GoogleGenerativeAI } from "@google/generative-ai";
dotenv.config();
const apiKey = process.env.GEMINI_API_KEY;
if (!apiKey) {
throw new Error("GEMINI_API_KEY is not set");
}
const genAI = new GoogleGenerativeAI(apiKey);
const model = genAI.getGenerativeModel({
model: "gemini-3-flash-preview",
generationConfig: {
temperature: 0.3,
maxOutputTokens: 200,
},
});
async function run() {
const prompt = "用简明易懂的语言解释什么是 RESTful API";
const result = await model.generateContent(prompt);
const text = result.response.text();
console.log(text);
}
run().catch(console.error);
通过调整这些配置,生成的文本风格和长度会更贴合产品的具体需求。不同参数组合会带来截然不同的效果,开发过程中值得多试试。
处理多轮对话上下文
很多交互式应用依赖对话历史。Gemini API支持以消息列表的形式发送多轮对话内容,从而实现有记忆的对话。每次调用时,需要把整个对话历史传递给模型。
对话中的每条消息都有一个角色,通常是user或model。按顺序把这些消息组织起来,模型就能理解当前上下文,给出连贯的回复。
import dotenv from "dotenv";
import { GoogleGenerativeAI } from "@google/generative-ai";
dotenv.config();
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({
model: "gemini-3-flash-preview",
generationConfig: {
temperature: 0.3,
maxOutputTokens: 2000,
},
});
async function run() {
const result = await model.generateContent({
contents: [
{ role: "user", parts: [{ text: "什么是 RESTful API?" }] },
{ role: "model", parts: [{ text: "RESTful API 是一种基于 HTTP 设计的接口风格,用于客户端与服务器之间的数据交互。" }] },
{ role: "user", parts: [{ text: "那它和传统 RPC 接口相比有什么优势?" }] },
],
});
console.log(result.response.text());
}
run().catch(console.error);
这个例子里,模型先被设定了角色,然后基于这个背景回答新问题。这种模式很适合构建聊天机器人或需要持续上下文的任务。需要留意对话历史的长度——过长的历史会增加token消耗,还可能影响模型对最新信息的关注度。
流式输出
如果需要流式输出,核心变化只有一个:把generateContent换成generateContentStream,然后一边接收一边输出模型返回的内容。
import dotenv from "dotenv";
import { GoogleGenerativeAI } from "@google/generative-ai";
dotenv.config();
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({
model: "gemini-3-flash-preview",
generationConfig: {
temperature: 0.3,
maxOutputTokens: 800,
},
});
async function run() {
const stream = await model.generateContentStream({
contents: [
{ role: "user", parts: [{ text: "什么是 RESTful API?" }] },
{ role: "model", parts: [{ text: "RESTful API 是一种基于 HTTP 协议设计的接口风格。" }] },
{ role: "user", parts: [{ text: "它为什么适合前后端分离的架构?" }] },
],
});
for await (const chunk of stream.stream) {
const text = chunk.text();
if (text) {
process.stdout.write(text);
}
}
console.log("\n--- 完成 ---");
}
run().catch(console.error);

