AI News HubLIVE
站內改寫5 分鐘閱讀

使用 Amazon Bedrock 構建 AI 驅動的招聘助手

本文展示瞭如何利用 Amazon Bedrock 構建 AI 招聘助手,以提升候選人評估效率、生成個性化面試問題,併為招聘決策提供數據驅動洞察。解決方案採用無服務器架構,集成了 Amazon Bedrock Converse API、AWS Lambda、Amazon API Gateway 等組件,並通過 Amazon Bedrock Guardrails 實現負責任 AI 評估。

來源AWS Machine Learning Blog作者: Puneeth Komaragiri

根據一項針對 748 名 HR 領導者的調查,招聘人員每個職位平均花費 17.7 小時處理行政工作,超過兩個工作日。2024 年 SmartRecruiters 的調查進一步顯示,45% 的人才招聘負責人將一半以上的工作時間花在可自動化的任務上。這種行政負擔導致表面化的篩選,使合格候選人被忽略,而匹配結果往往基於格式和關鍵詞密度而非真實能力對齊。

本文演示瞭如何使用 Amazon Bedrock 構建 AI 驅動的招聘助手,該助手能為候選人評估帶來效率提升,生成個性化面試問題,併為人工招聘決策提供數據驅動洞察。文中提供的參考架構僅用於學習目的,並非生產就緒解決方案。Amazon Bedrock 和所用 AWS 服務是通用工具,客户可組合用於多種用例,包括招聘流程。該架構展示了一種可能的方法,客户應根據自身需求進行調整。

您將學習部署專門的 AI 能力,用於簡歷解析、候選人評分、技能評估和麪試問題生成——通過 Amazon Bedrock Guardrails 實現 PII 匿名化、提示攻擊檢測和偏見相關內容過濾——所有這些通過協調的無服務器架構協同工作。解決方案使用 Amazon Bedrock Converse API 和 Amazon Nova Pro、AWS Lambda 進行數據處理、Amazon API Gateway 進行路由、Amazon DynamoDB 和 Amazon S3 進行數據存儲,以及 Amazon Bedrock Guardrails 進行負責任的 AI 評估。

解決方案概述

AI 候選人篩選助手利用 Amazon Bedrock 提供的基礎模型(FM)協助候選人評估、簡化面試準備,併為招聘決策提供數據驅動洞察。該解決方案對簡歷進行全面分析,計算多維兼容性評分,並根據職位要求和候選人資料生成個性化面試問題。

認證和前端層使用 AWS Amplify 託管 Web 應用,Amazon Cognito 進行用户認證。Amazon Cognito 處理用户註冊、登錄,並提供 JWT 令牌,這些令牌由 Amazon API Gateway Cognito 授權器在每個 API 請求上進行驗證。

後端層使用 Amazon API Gateway 將請求路由到專門的 AWS Lambda 函數,每個 Lambda 函數處理特定工作流。Lambda 函數調用 Amazon Bedrock Converse API 執行深度簡歷分析、計算兼容性評分並生成特定崗位的面試問題。

架構圖

下圖展示了 AI 招聘助手的架構。

架構包含以下關鍵部分:

  • 前端層:AWS Amplify 託管響應式 React Web 應用,為招聘人員提供直觀界面,用於管理職位發佈、查看 AI 生成的候選人評估以及訪問個性化面試準備材料。
  • 安全層:Amazon Cognito 管理用户註冊和認證,提供 JWT 令牌,由 Amazon API Gateway Cognito 授權器在每個 API 請求上進行驗證。AWS Identity and Access Management(IAM)角色為 AWS Lambda 函數提供最低權限,以與存儲和 AI 服務交互。客户有責任正確配置這些安全控制。
  • API 層:Amazon API Gateway 通過 RESTful 端點協調客户端與服務器之間的通信,用於職位管理、AI 驅動的候選人匹配、簡歷上傳處理和麪試問題生成服務。
  • 處理層:專門的 AWS Lambda 函數處理招聘工作流,每個函數配置了適當的超時和內存。
  • AI 處理層:Amazon Bedrock FM 使用 Converse API 進行深度簡歷分析、計算多維兼容性評分、生成特定崗位的面試問題並識別可轉移技能。Amazon Bedrock Guardrails 過濾每個請求,對輸入中的 PII 進行匿名化,阻止簡歷內容中的提示注入攻擊,並拒絕涉及候選人人口統計信息的響應。

以下代碼片段展示瞭解決方案如何使用 Amazon Bedrock Guardrails(在模型處理前自動對輸入中的 PII 進行匿名化)、基於證據的評分結構化提示以及偏見感知系統指令:

import json

SYSTEM_PROMPT = """You are an expert recruitment analyst. Evaluate candidates based exclusively on demonstrated skills, experience, and qualifications. Do not reference or make assumptions based on candidate names, contact details, demographics, or personal characteristics. Focus only on job-relevant qualifications. For every claim, cite the specific resume text as evidence."""

ANALYSIS_PROMPT = """Analyze the following candidate resume against the job requirements. Return a structured JSON response.

{job_description}

{resume_content}

Provide your analysis in the following JSON format:
{{"compatibilityScore": 0-100,
"scoreJustification": "Evidence-based reasoning with resume quotes",
"technicalSkills": {{"matched": [{{"skill": "X", "evidence": "resume quote"}}], "missing": ["skill3"], "transferable": [{{"skill": "Y", "evidence": "resume quote"}}]}},
"experienceAnalysis": {{"relevantYears": 0, "industryAlignment": "high|medium|low", "keyAccomplishments": ["accomplishment with evidence"]}},
"strengths": ["strength with specific resume evidence"],
"concerns": ["concern with context"],
"interviewQuestions": [{{"question": "Targeted question text", "purpose": "What this question evaluates", "lookFor": "Ideal response indicators"}}],
"overallRecommendation": "strong_match|good_match|partial_match|weak_match"}}"""

response = bedrock_client.converse(
modelId=model_id,
system=[{"text": SYSTEM_PROMPT}],
messages=[{"role": "user", "content": [{"text": ANALYSIS_PROMPT.format(job_description=job_description, resume_content=resume_content)}]}],
inferenceConfig={"maxTokens": 4096, "temperature": 0.2, "topP": 0.9},
guardrailConfig={"guardrailIdentifier": guardrail_id, "guardrailVersion": guardrail_version, "trace": "enabled"}
)

try:
    analysis = json.loads(response["output"]["message"]["content"][0]["text"])
except json.JSONDecodeError:
    analysis = {"error": "Model returned invalid JSON"}

注意:我們使用低温度(0.2)以產生一致且可復現的候選人評估。當 Guardrails 介入時(例如,阻止嵌入簡歷中的提示注入),響應中包含 GUARDRAIL_INTERVENED 操作——實現錯誤處理以記錄這些事件並向招聘人員返回安全的回退響應。

數據層:Amazon DynamoDB 存儲結構化的職位發佈和分析結果。Amazon S3 提供候選人簡歷的存儲,採用服務器端加密(AES-256)、阻止公共訪問和僅允許 HTTPS 的存儲桶策略。

以下步驟描述了招聘人員分析候選人時的請求流程:

  1. 招聘人員打開 AWS Amplify 託管的 Web 應用,並通過 Amazon Cognito 進行身份驗證。
  2. 招聘人員創建職位發佈,包含角色要求、所需技能和經驗水平。
  3. 招聘人員上傳候選人簡歷(PDF、DOCX 或 TXT 格式)到該職位。
  4. 前端向 Amazon API Gateway 的 /matches 端點發送 POST 請求。
  5. API Gateway Cognito 授權器驗證請求頭中的 JWT 令牌。
  6. API Gateway 將經過身份驗證的請求路由到 AI 招聘 Lambda 函數。
  7. Lambda 函數從 Amazon DynamoDB 檢索職位發佈,從 Amazon S3 檢索候選人簡歷,並調用 Amazon Bedrock Converse API,傳入職位要求和簡歷內容。
  8. Amazon Bedrock 分析每位候選人,計算兼容性評分,識別優勢與擔憂,並生成個性化面試問題。
  9. 結果存儲在 Amazon DynamoDB 中,並返回到 Web 界面供招聘人員查看。

關鍵能力

智能簡歷分析:解決方案處理簡歷後,分析技能深度和經驗相關性,而非僅依賴關鍵詞匹配。它針對職位要求計算兼容性評分,並提供簡歷文本中的具體證據,同時識別手動篩選常遺漏的可轉移技能。

高級候選人匹配:系統使用自然語言處理(NLP)將候選人資料與職位描述進行比較,提供基於百分比的匹配分數和引用的簡歷證據。它突出候選人的優勢和擔憂,並按兼容性對候選人進行排序,以便招聘人員高效審閲。

個性化面試準備:解決方案根據特定職位和候選人背景創建量身定製的面試問題,生成包含評分標準的評估框架,並提供詳細的面試指南,包括開場問題和跟進建議。

工作流程自動化:系統協助完成重複性行政任務,支持批量操作,通過 RESTful API 與現有系統集成,並提供使用分析。

前提條件

開始之前,請確認您具備:

  • 一個 AWS 賬户,並具有 Amazon Bedrock、AWS Identity and Access Management (IAM)、AWS CloudFormation、Amazon API Gateway、Amazon Cognito、Amazon DynamoDB、Amazon S3、AWS Lambda 和 AWS Amplify 的相應權限。
  • 在部署 AWS 區域中為 Amazon Nova Pro 啓用的 Amazon Bedrock 模型訪問權限。您也可以使用其他支持的模型。有關當前模型可用性,請參閲按 AWS 區域劃分的模型支持。
  • 已安裝並配置了適當憑證的 AWS CLI v2.0 或更高版本。
  • 已安裝 Python 3.10 或更高版本。
  • 終端或命令提示符訪問權限。

成本估算:測試 100 名候選人的總成本約為每月 1-2 美元。Amazon Bedrock(Nova Pro 輸入/輸出令牌每百萬分別 $0.80/$3.20)在 100 次分析下成本低於 1 美元。Amazon Bedrock Guardrails 每名候選人增加約 $0.01。其他服務在測試量下屬於 AWS 免費套餐範圍。詳細估算請使用 AWS 定價計算器。

重要提示:確保 AWS 區域一致性 請確保以下所有配置使用相同的 AWS 區域:您的 aws configure 默認區域、已啓用 Amazon Bedrock 模型訪問的區域以及部署期間創建的所有資源。

部署解決方案

部署後端基礎設施。您將承擔本解決方案所用 AWS 資源的費用。

控制台將重定向到 AWS CloudFormation,並在堆棧參數中預填充模板 URL。

  • 對於“堆棧名稱”,輸入部署名稱(默認:AIRecruiterAssistantBlogSetup)。
  • 對於“BedrockModelId”,選擇要使用的 Amazon Bedrock 模型(默認:Amazon Nova Pro)。
  • 查看堆棧配置。
  • 選擇“創建堆棧”。

成功部署後,從 CloudFormation 堆棧的“輸出”選項卡中記下以下值:

  • ApiGatewayUrl
  • CognitoUserPoolId
  • CognitoClientId
  • AWSRegion
  • AmplifyAppUrl
  • AmplifyConsoleUrl

部署前端應用

  1. 下載 AIRecruitingAssistantFrontEndAmplifyDeployment.zip 文件。
  2. 在 CloudFormation 輸出下導航到 AmplifyConsoleUrl。
  3. 選擇 ai-recruitment-system-frontend 應用。
  4. 選擇“部署更新”。
  5. 對於“方法”,選擇“拖放”。
  6. 選擇要上傳的 .zip 文件。
  7. 選擇“保存並部署”。

測試解決方案

基礎設施部署並啓動前端應用後,您可以通過 Web 界面創建職位、上傳簡歷並查看 AI 生成的分析結果。測試流程包括註冊用户、創建職位、上傳候選人簡歷以及查看兼容性評分和麪試問題。