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 生成的分析結果。測試流程包括註冊使用者、建立職位、上傳候選人簡歷以及檢視相容性評分和麵試問題。