Amazon Bedrock を活用した AI 搭載採用アシスタントの構築方法
本文の状態
日本語全文を表示中
詳細モードで約13分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
AWS Machine Learning Blog
AWS は、採用担当者の事務作業時間を削減するため、Amazon Bedrock を使用して AI 搭載の採用アシスタントを構築する手法を公開しました。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
748 人の HR リーダーを対象とした 人材管理に関する調査によると、採用担当者は募集ポジションごとに平均 17.7 時間を事務作業に費やしています。これは採用 1 件あたり 2 営業日以上にもなります。別の 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 Simple Storage Service (Amazon S3) を利用し、責任ある AI 評価には Amazon Bedrock Guardrails を活用します。
ソリューション概要
AI 候補者スクリーニングアシスタントは、Amazon Bedrock で利用可能なファウンデーションモデル(FMs)を活用して、候補者の評価支援、面接準備の効率化、採用判断のためのデータ駆動型インサイトの提供を行います。本ソリューションでは、包括的な分析を通じて履歴書を処理し、多次元の適合度スコアを算出し、職務要件と候補者プロファイルに基づいて個別化された面接質問を生成します。
認証およびフロントエンド層は、Web アプリケーションのホスティングに AWS Amplify を、ユーザー認証には Amazon Cognito を使用しています。Amazon Cognito は、ユーザー登録やサインインを処理し、API Gateway の Cognito 認可者がすべての API リクエスト時に検証する JWT トークンを提供します。
バックエンド層は、リクエストを特定の AWS Lambda 関数にルーティングするために Amazon API Gateway を使用しており、各 Lambda 関数は特定のワークフローを担当しています。これらの Lambda 関数は、Amazon Bedrock の Converse API を呼び出して、深い履歴書の分析を行い、適合スコアを計算し、役割固有の面接質問を生成します。
アーキテクチャ図
以下の図は、AI リクルーティングアシスタントのアーキテクチャを示しています。
このアーキテクチャには、以下の主要なセクションが含まれています:
フロントエンド層: AWS Amplify は、レスポンシブな React ベースの Web アプリケーションをホストしており、採用担当者が求人投稿の管理、AI 生成による候補者評価のレビュー、およびパーソナライズされた面接準備資料へのアクセスを行うための直感的なインターフェースを提供します。
セキュリティレイヤー: Amazon Cognito はユーザー登録と認証を管理し、JWT トークンを発行します。このトークンは、API 要求ごとに Amazon API Gateway の Cognito 認可者によって検証されます。AWS Identity and Access Management (IAM) ロールは、ストレージや AI サービスとの連携を行う AWS Lambda 関数に対して最小権限のアクセスを提供します。これらのセキュリティ制御を適切に設定するのは顧客の責任です。
API レイヤー: Amazon API Gateway は、求人管理、AI による候補者マッチング、履歴書アップロード処理、面接質問生成サービスのための RESTful エンドポイントを通じて、クライアントとサーバー間の通信を調整します。
処理レイヤー: 専門的な AWS Lambda 関数が採用ワークフローを処理し、それぞれに適切なタイムアウトおよびメモリ設定が用意されています。
AI 処理レイヤー: Amazon Bedrock の FMs (Foundation Models) は Converse API を使用して分析を行い、深い履歴書分析の実行、多次元適合スコアの算出、役割固有の面接質問の生成、転移可能スキルの特定を行います。Amazon Bedrock Guardrails は、入力内の PII (個人識別情報) の匿名化、履歴書コンテンツからのプロンプトインジェクション試行のブロック、候補者の人口統計情報を参照する応答の拒否によって、各リクエストをフィルタリングします。
以下のコードスニペットは、ソリューションがどのように Amazon Bedrock Guardrails (モデル処理前に入力内の PII を自動的に匿名化) 、証拠に基づくスコアリングを用いた構造化されたプロンプト、バイアス認識型のシステム指示を使用しているかを示しています:
import jsonあなたは熟練した採用アナリストです。候補者を評価する際は、実証されたスキル、経験、資格のみを根拠としてください。候補者の名前、連絡先情報、人口統計データ、または個人的な特徴に基づいた言及や推測は行わないでください。職務に関連する資格にのみ焦点を当ててください。すべての主張に対して、具体的な履歴書の記述を証拠として引用してください。
以下の候補者の履歴書を職務要件と比較して分析し、構造化された JSON 形式の回答を返してください。
{job_description}
{resume_content}
以下の JSON 形式で分析結果を提供してください:
{
"compatibilityScore": 0-100,
"scoreJustification": "履歴書の引用に基づく根拠のある推論",
"technicalSkills": {
"matched": [{"skill": "X", "evidence": "履歴書の引用"}],
"missing": ["スキル3"],
"transferable": [{"skill": "Y", "evidence": "履歴書の引用"}]
},
"experienceAnalysis": {
"relevantYears": 0,
"industryAlignment": "high|medium|low",
"keyAccomplishments": ["証拠付きの主要な成果"]
},
"strengths": ["具体的な履歴書の証拠を伴う強み"],
"concerns": ["文脈を伴う懸念点"],
"interviewQuestions": [
{
"question": "焦点を絞った質問テキスト",
"purpose": "この質問が評価する内容",
"lookFor": "理想的な回答の指標"
}
],
"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"
}
)
Validate informational output for recruiter; not a hiring recommendation
try:
analysis = json.loads(
response["output"]["message"]["content"][0]["text"]
)
except json.JSONDecodeError:
analysis = {"error": "Model returned invalid JSON"}
*Note: We use a low temperature (0.2) to produce consistent, reproducible candidate evaluations. When Guardrails intervenes (for example, blocking a prompt injection embedded in a resume), the response includes a GUARDRAIL_INTERVENED action—implement error handling to log these events and return a safe fallback response to the recruiter.*
Data Layer: Amazon DynamoDB stores structured job postings and analysis results. Amazon S3 provides storage for candidate resumes with server-side encryption (AES-256), Block Public Access, and HTTPS-only bucket policies.
The following steps describe the request flow when a recruiter analyzes candidates:
- リクルーターは AWS Amplify でホストされた Web アプリケーションを開き、Amazon Cognito を通じて認証を行います。
- リクルーターは、役職要件、必要なスキル、経験レベルを含む求人票を作成します。
- リクルーターは、その求人票に対して候補者の履歴書(PDF、DOCX、または TXT 形式)をアップロードします。
- フロントエンドが Amazon API Gateway の /matches エンドポイントへ POST リクエストを送信します。
- API Gateway の Cognito オーザライザーが、リクエストヘッダー内の JWT トークンを検証します。
- API Gateway は認証されたリクエストを AI 採用 Lambda 関数にルーティングします。
- Lambda 関数は Amazon DynamoDB から求人票を取得し、Amazon S3 から候補者の履歴書を取得します。その後、この関数は求人要件と履歴書のコンテンツを用いて Amazon Bedrock の Converse API を呼び出します。
- Amazon Bedrock は各候補者を分析し、適合度スコアを計算し、強みと懸念点を特定し、個別化された面接質問を生成します。
- 結果は Amazon DynamoDB に保存され、Web インターフェースを通じてリクルーターに返されます。
Key capabilities
インテリジェントな履歴書分析
本ソリューションは履歴書を処理し、単なるキーワードマッチングに頼るのではなく、スキルの深さと経験の関連性を分析します。履歴書のテキストからの具体的な根拠に基づいて求人要件に対する適合度スコアを計算し、手動スクリーニングでは見落とされやすい転用可能なスキルも特定します。
高度な候補者マッチング**** システムは、自然言語処理(NLP)を用いて候補者のプロフィールと職務記述書を比較し、引用された履歴書の根拠に基づいたパーセンテージベースの適合スコアを提供します。候補者の強みと懸念点を強調しつつ、採用担当者が効率的にレビューできるよう互換性に基づいて候補者をランク付けします。
パーソナライズされた面接準備**** 本ソリューションは、特定の職務役割や候補者の背景に基づき、評価フレームワークと採点基準を生成する個別化された面接質問を作成します。会話のきっかけやフォローアップの提案を含む詳細な面接ガイドを出力します。
ワークフロー自動化**** システムは反復的な事務作業をサポートし、一括処理機能を提供します。既存システムとの統合は RESTful API を通じて行われ、利用状況の分析機能も備えています。
前提条件
開始前に、以下の事項を確認してください:
- Amazon Bedrock、AWS Identity and Access Management (IAM)、AWS CloudFormation、Amazon API Gateway、Amazon Cognito、Amazon DynamoDB、Amazon S3、AWS Lambda、および AWS Amplify に対して適切な権限が付与された AWS アカウント。
- デプロイ先の AWS リージョンにおける Amazon Nova Pro のための Amazon Bedrock モデルアクセス権。ご自身の選択により、他のサポート対象モデルを使用することも可能です。現在のモデル利用状況については、「AWS リージョン別のモデルサポート」をご参照ください。
- 適切な認証情報で設定された AWS Command Line Interface (AWS CLI) v2.0 以降がインストールされていること。
- Python 3.10 以降がインストールされていること。
- ターミナルまたはコマンドプロンプトへのアクセス権限。
コスト見積もり:**100 人の候補者でテストを行う場合、月額総費用は約 1〜2 ドルです。Amazon Bedrock (Nova Pro は入力/出力トークン 100 万あたり $0.80/$3.20) 料金 は、100 件の分析で 1 ドル未満となります。Amazon Bedrock Guardrails は候補者 1 人あたり約 0.01 ドルを追加します。本記事で言及されている他のサービスは、テスト規模であれば AWS の無料利用枠内に収まります。詳細な見積もりについては、AWS プライシング計算機 をご利用ください。
重要:AWS リージョンの一貫性を確認してくださいaws configure で設定したデフォルトのリージョン、Amazon Bedrock モデルアクセスを有効化したリージョン、およびデプロイ中に作成されたすべてのリソースが、すべて同じ AWS リージョンを使用していることを必ず確認してください。
ソリューションのデプロイ
バックエンドインフラストラクチャをデプロイします。このソリューションで使用される AWS リソースに対して課金が発生します。
コンソールは、スタックパラメータにテンプレート URL が事前に入力された状態で AWS CloudFormation へリダイレクトされます。
- スタック名には、デプロイメントの名前を入力してください(デフォルト:AIRecruiterAssistantBlogSetup)。
- BedrockModelId では、使用する Amazon Bedrock モデルを選択してください(デフォルト:Amazon Nova Pro)。
- スタック構成を確認します。
- [Create stack] を選択します。
- デプロイが成功した後、CloudFormation スタックの [Outputs] タブから以下の値をメモしてください:
- ApiGatewayUrl
- CognitoUserPoolId
- CognitoClientId
- AWSRegion
- AmplifyAppUrl
- AmplifyConsoleUrl
フロントエンドアプリケーションのデプロイ
- AIRecruitingAssistantFrontEndAmplifyDeployment.zip ファイルをダウンロードします。
- CloudFormation の出力にある AmplifyConsoleUrl へ移動します。
- ai-recruitment-system-frontend アプリを選択します。
- [Deploy updates] を選択します。
- メソッドには、[Drag and drop](ドラッグ&ドロップ)を選択します。
- アップロードする .zip ファイルを選択します。
- [Save and deploy] を選択します。
ソリューションのテスト
インフラストラクチャがデプロイされ、フロントエンドアプリケーションが稼働している状態で、Web インターフェースを通じて AI リクルーティングアシスタントのコア機能をテストできます。
手順 1:アプリケーション設定の設定
[System Configuration] ページに移動し、CloudFormation スタックの出力から取得した値を入力します。
- API Gateway URL: ApiGatewayUrl を入力してください
- Amazon Cognito User Pool ID: CognitoUserPoolId を入力してください
- Amazon Cognito Client ID: CognitoClientId を入力してください
- AWS Region: AWS リージョンを入力してください
ステップ 2:ユーザー登録とサインイン
- ログインページで「SIGN UP」を選択します。
- お名前、メールアドレス、安全なパスワードを入力します。
- 「Create Account」を選択します。
- メールに送信されたワンタイム認証コードを入力します。
- 「Verify Email」を選択します。
- 検証が成功したら、メールとパスワードを使用してサインインしてください。
ステップ 3:求人票の作成
- AI リクルーティングアシスタントのダッシュボードに移動し、新しい求人票を作成します。
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み