TL;DR 与前置条件
TL;DR:本文给出一个可复制的 Gemini API 最小工程:输入“数控操作工岗位 JD + 简历文本”,输出结构化匹配结果。测试日期:2025-03-08。运行环境:Ubuntu 22.04、Node.js 20.11.1、npm 10.2.4、@google/genai 0.8.x、模型 gemini-1.5-flash。
前置条件:已完成 Google AI Studio 账号登录;已创建 API Key;本机可访问 Google AI 服务端点;准备一份岗位文本和一份简历文本。搜索“Gemini怎么注册”时,实际流程是:登录 Google AI Studio,进入 Get API key,创建项目级密钥。免费额度适合开发验证;生产环境必须加限流、日志脱敏、失败重试。
Note: Google AI怎么用 的关键不是页面操作,而是把 API Key 放进环境变量,不要写进 Git 仓库。
node -v
# expected output:
v20.11.1
npm -v
# expected output:
10.2.4
1. 初始化 Gemini API 项目
-
创建目录并安装 SDK。这是最短 Gemini API教程,避免框架噪音。
mkdir gemini-recruit-demo && cd gemini-recruit-demo npm init -y npm install @google/genai dotenv # expected output: added xx packages, and audited xx packages in xxs found 0 vulnerabilities -
写入环境变量。把下方占位符替换为 Google AI Studio 生成的 Key。
cat > .env <<'EOF' GEMINI_API_KEY=replace_with_your_key EOF # expected output: (no output) -
创建测试数据。案例来自奉化先进制造业招聘常见岗位:CNC、质检、设备维护。
cat > jd.txt <<'EOF' 岗位:CNC数控操作工 要求:3年以上法兰克或三菱系统经验;能看懂机械图纸;会使用游标卡尺、千分尺;两班倒;有汽车零部件加工经验优先。 EOF cat > resume.txt <<'EOF' 候选人:张某 经历:4年CNC加工经验,熟悉法兰克系统,做过铝合金汽车结构件批量加工;能独立调机,使用千分尺和高度规;不接受长期夜班。 EOF # expected output: (no output)
Warning: 简历包含手机号、身份证、住址时,调用前先脱敏。不要把完整个人信息发给任何外部模型。
2. 编写岗位匹配脚本并验证
-
创建 Node.js 脚本。输出 JSON,便于接入职位搜索、企业服务后台或 ATS。
cat > match.js <<'EOF' import 'dotenv/config'; import fs from 'node:fs'; import { GoogleGenAI } from '@google/genai'; const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY }); const jd = fs.readFileSync('jd.txt', 'utf8'); const resume = fs.readFileSync('resume.txt', 'utf8'); const prompt = ` 你是制造业招聘初筛助手。只输出JSON。 字段: match_score: 0-100整数 matched_skills: 数组 risks: 数组 interview_questions: 数组,最多3个 岗位JD: ${jd} 简历: ${resume} `; const started = Date.now(); const response = await ai.models.generateContent({ model: 'gemini-1.5-flash', contents: prompt }); console.log(response.text); console.error(`latency_ms=${Date.now() - started}`); EOF # expected output: (no output) -
运行脚本。在我方 2025-03-08 测试中,单次文本调用延迟约 900-1800 ms,取决于网络出口和模型排队。
node match.js # expected output: { "match_score": 82, "matched_skills": ["4年CNC加工经验", "法兰克系统", "汽车零部件加工", "千分尺使用", "独立调机"], "risks": ["不接受长期夜班,与两班倒要求存在冲突", "未明确三菱系统经验", "未明确机械图纸能力"], "interview_questions": [ "请说明一次法兰克系统调机参数优化经历。", "是否能接受每月夜班频次?", "如何确认批量加工件尺寸稳定性?" ] } latency_ms=1240 -
如果报 401,检查 Key。若报连接超时,属于 Gemini国内使用 网络链路问题,不是代码问题。
grep GEMINI_API_KEY .env # expected output: GEMINI_API_KEY=AIza...
3. 故障诊断、生产化清单与验证方法
常见故障:401 是密钥错误或项目权限未生效;429 是额度或频率限制;400 多数是请求体格式错误;ETIMEDOUT 是网络出口不可达。Google AI Studio怎么用 的生产答案是:先用官方控制台验证 Key,再用脚本验证,再接业务系统。
time node match.js
# expected output:
latency_ms=1xxx
real 0m1.xxxs
user 0m0.xxxs
sys 0m0.xxxs
生产化最低要求:API Key 放入密钥管理;日志只保存摘要和 request_id;对 429 做指数退避;对结果做 JSON schema 校验;岗位和简历文本限制在必要字段内;人工复核低于 70 分或包含夜班、证书、薪资冲突的候选人。
如何验证它工作正常:连续运行 10 次,成功率应为 100%;平均延迟低于 3000 ms;输出必须是可解析 JSON;同一份简历的核心技能命中应稳定;把“不接受夜班”改为“可接受夜班”后,risks 中应移除夜班冲突。
for i in {1..10}; do node match.js >/tmp/out-$i.json; done
ls /tmp/out-*.json | wc -l
# expected output:
10
References:Google AI Studio、Gemini API 文档、Node.js 文档。免费官方路径适合开发和小流量验证;如果你的 Gemini国内使用 链路不稳定,也可以把 Roxi 作为网络连通性方案之一,与自建代理或企业网络出口一起评估。