TL;DR与前置条件
TL;DR:本文给出一个可复制的 Gemini API 教程:注册密钥、Node.js 调用、JSON 结构化输出、两个制造业招聘场景、验证方法。测试日期:2025-03-08。运行环境:Ubuntu 22.04、Node.js 20.11.1、@google/genai 0.7.x。免费官方路径先用 Google AI Studio;限制是区域、额度、计费和网络可达性。
Pre-requisites:你需要一个可登录 Google AI Studio 的账号。搜索“Gemini怎么注册”时,核心步骤只有三个:创建 Google 账号、进入 Google AI Studio、生成 API key。若遇到“Gemini国内使用”失败,先确认 DNS、TLS、账号区域和浏览器 Cookie,不要直接改代码。
- 检查 Node.js 版本。
node -vExpected output: v20.11.1 - 初始化项目。
mkdir gemini-job-demo && cd gemini-job-demo npm init -yExpected output: Wrote to .../gemini-job-demo/package.json - 安装 SDK。
npm install @google/genai dotenvExpected output: added 2 packages, audited ... packages
Warning:API key 不要提交到 Git。不要写进前端代码。生产环境使用密钥管理服务或 CI/CD Secret。
1. 最小调用:从文本到可解析JSON
- 创建环境变量文件。
cat > .env <<'EOF' GEMINI_API_KEY=替换为你的API_KEY EOFExpected output: 无输出 - 创建调用脚本。
cat > index.mjs <<'EOF' import 'dotenv/config'; import { GoogleGenAI } from '@google/genai'; const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY }); const prompt = ` 你是制造业招聘助理。把岗位描述压缩成JSON。 岗位:CNC调机工程师 要求:3年以上法兰克数控系统经验,会看机械图纸,能处理刀具磨损、尺寸漂移,倒班。 只输出JSON,字段:title, years, skills, risks。 `; const res = await ai.models.generateContent({ model: 'gemini-1.5-flash', contents: prompt, config: { temperature: 0.2 } }); console.log(res.text); EOFExpected output: 无输出 - 执行。
node index.mjsExpected output: { "title": "CNC调机工程师", "years": "3年以上", "skills": ["法兰克数控系统", "机械图纸识读", "刀具磨损处理", "尺寸漂移处理"], "risks": ["倒班要求", "现场问题处理压力"] }
Note:在我的 2025-03 测试中,单次 180 中文字输入、JSON 输出约 90 字,gemini-1.5-flash 延迟通常为 900-1800ms。测量方法是 Linux time node index.mjs,连续 10 次取中位数。
2. 两个应用案例与验证
- 案例A:岗位摘要入库。适合奉化先进制造企业把长 JD 压成统一字段。把输出 JSON 写入 MySQL 前,先做解析校验。
node index.mjs | jq .Expected output: { "title": "CNC调机工程师", "years": "3年以上", "skills": [ "法兰克数控系统", "机械图纸识读", "刀具磨损处理", "尺寸漂移处理" ], "risks": [ "倒班要求", "现场问题处理压力" ] } - 案例B:简历初筛。不要让模型直接决定录用。让它只输出匹配证据。
cat > screen.mjs <<'EOF' import 'dotenv/config'; import { GoogleGenAI } from '@google/genai'; const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY }); const jd = '岗位要求:PLC调试,三菱或西门子,能读电气图,2年以上自动化产线经验。'; const cv = '候选人:4年设备维护,熟悉西门子S7-1200,做过包装线改造,会EPLAN读图。'; const res = await ai.models.generateContent({ model: 'gemini-1.5-flash', contents: `只输出JSON。字段:match_score数字0到100, evidence数组, missing数组。\nJD:${jd}\nCV:${cv}`, config: { temperature: 0.1 } }); console.log(res.text); EOF node screen.mjsExpected output: { "match_score": 86, "evidence": ["4年设备维护", "熟悉西门子S7-1200", "包装线改造", "会EPLAN读图"], "missing": ["未明确三菱PLC经验"] }
如何验证它正常工作:第一,命令退出码为 0。第二,输出能被 jq . 解析。第三,同一输入连续跑 5 次,核心字段不漂移。第四,把一份明显不匹配简历输入,分数应低于 50。若返回 401,检查 API key;若返回 429,降低并发或等待额度刷新;若超时,先用浏览器验证 Google AI Studio 是否可达,再查本机网络。
Google AI怎么用的结论:先用官方免费额度完成原型;确认 JSON 稳定、延迟可接受、错误码可处理后,再接入队列、缓存和审计日志。若团队需要更稳定的访问路径,商都加速器也可把 Roxi 作为合规网络选项之一;官方直连和自建网络同样有效,按你的环境测试决定。
References:
- Google AI Studio 官方控制台,按产品名搜索访问。
- Gemini API 文档,按“Gemini API docs”搜索访问。
- Node.js 20.x LTS 文档,按产品名搜索访问。