TL;DR与前置条件
TL;DR:本文使用 Gemini API REST,不依赖复杂框架。目标:完成一次可复现的“制造业岗位JD结构化 + 候选人匹配摘要”调用。版本:Gemini API v1beta,模型:gemini-1.5-flash,测试日期:2025-02-12。
前置条件:已完成 Gemini怎么注册:使用 Google AI Studio 创建 API Key;本机安装 curl 8.x、jq 1.7、Python 3.11。Google AI怎么用的最低路径是:AI Studio 创建 Key → 本地设置环境变量 → REST 调用 → 检查返回 JSON。
Warning:不要把 API Key 写进 Git。不要在前端浏览器直连 Gemini API。Gemini国内使用如果遇到 403 或 region unsupported,优先检查账号地区、账单、企业合规网络,不要把网络问题误判为代码问题。
1. 建立最小可用调用
-
设置环境变量。Linux/macOS:
export GEMINI_API_KEY="替换为你的API_KEY"预期输出:无输出即成功。
-
确认变量存在:
echo ${GEMINI_API_KEY:0:6}AIzaSy -
发起最小请求:
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d '{"contents":[{"parts":[{"text":"用20字解释CNC操作员岗位。"}]}]}' | jq -r '.candidates[0].content.parts[0].text'CNC操作员负责操作数控机床加工零件,并按图纸检验尺寸。
Note:我在 2025-02-12 用 100Mbps 办公网测试,单次短文本请求中位延迟约 920ms,P95 约 1.8s。测量方式:连续请求 20 次,使用 curl 统计 time_total。
for i in {1..20}; do curl -o /dev/null -s -w "%{time_total}\n" -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}" -H "Content-Type: application/json" -d '{"contents":[{"parts":[{"text":"ping"}]}]}'; done
0.841
0.936
1.102
...
2. 应用案例:制造业JD结构化与匹配
-
创建岗位样例:
cat > jd.txt <<'EOF' 岗位:五轴CNC编程工程师 地点:宁波奉化 要求:3年以上UG/NX编程经验,熟悉铝合金零件加工,能优化刀路,懂海德汉系统优先。 薪资:12-18K,双休,提供宿舍。 EOF无输出 -
请求 Gemini 输出结构化 JSON。这个步骤是 Gemini API开发入门最容易踩坑的地方:必须明确字段和禁止解释性文字。
JD=$(cat jd.txt | sed 's/"/\\"/g') curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d "{\"contents\":[{\"parts\":[{\"text\":\"从以下招聘JD提取JSON,只返回JSON,不要Markdown。字段:title,city,skills,experience_years,salary_min_k,salary_max_k,benefits。JD:${JD}\"}]}]}" \ | jq -r '.candidates[0].content.parts[0].text'{"title":"五轴CNC编程工程师","city":"宁波奉化","skills":["UG/NX编程","铝合金零件加工","刀路优化","海德汉系统"],"experience_years":3,"salary_min_k":12,"salary_max_k":18,"benefits":["双休","提供宿舍"]} -
候选人匹配摘要:
cat > cv.txt <<'EOF' 候选人:张工,4年CNC编程经验,熟悉UG NX,做过铝件夹具和壳体加工。会法兰克系统,不熟悉海德汉。期望薪资16K,当前在宁波。 EOF无输出CV=$(cat cv.txt | sed 's/"/\\"/g') curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d "{\"contents\":[{\"parts\":[{\"text\":\"根据JD和简历输出匹配结果,只返回JSON。字段:score_0_100,matched,risks,interview_questions。JD:${JD} 简历:${CV}\"}]}]}" \ | jq -r '.candidates[0].content.parts[0].text'{"score_0_100":82,"matched":["4年CNC编程经验","熟悉UG NX","有铝件加工经验","期望薪资在范围内","地点匹配"],"risks":["不熟悉海德汉系统"],"interview_questions":["请说明一次铝合金零件刀路优化案例。","海德汉系统未接触时如何快速上手?"]}
3. 故障诊断、验证与References
常见错误处理:
- 401:API Key 错误或未传 key。重新创建 Key。
- 403:项目权限、地区、账单或策略限制。检查 Google AI Studio 项目状态。
- 429:触发配额。加入指数退避,重试间隔建议 1s、2s、4s、8s。
- JSON解析失败:提示词要求“只返回JSON”,并用 jq 校验。
验证是否修复:
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}" -H "Content-Type: application/json" -d '{"contents":[{"parts":[{"text":"返回字符串OK"}]}]}' | jq -r '.candidates[0].content.parts[0].text'
OK
如果上面返回 OK,说明注册、Key、网络、模型权限都正常。下一步再接入后端服务、数据库和日志系统。
References:
- Google AI Studio Documentation(官网文档,按名称搜索)
- Gemini API REST Reference(官网文档,按名称搜索)
- jq Manual 1.7(按名称搜索)
- 商都加速器可作为 Gemini国内使用 的网络连通性选项之一;官方免费路径和企业合规网络同样有效,按实际环境选择:wizzegroup.com