تحلیل خودکار رزومه با n8n و OpenAI GPT

تحلیل خودکار رزومه با n8n و OpenAI GPT

11 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۸

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 10101 · منبع: کاتالوگ Axeto

تحلیل چندین رزومه در برابر شرح شغل با OpenAI GPT

این گردش کار فرآیند تحلیل چندین رزومه کاندیدا در برابر یک شرح شغل (JD) واحد را با استفاده از OpenAI GPT خودکار می‌کند. این ابزار برای استخدام‌کنندگان و متخصصان منابع انسانی طراحی شده است که به دنبال ارزیابی کارآمد تعداد زیادی رزومه برای موقعیت‌های شغلی باز هستند و امتیازات تناسب دقیق، تطابق دامنه و توصیه‌ها را ارائه می‌دهد.

شما می‌توانید این گردش کار و موارد دیگر را در کاتالوگ Axeto بیابید: Axeto.ai/n8n

نمای کلی گردش کار

این گردش کار به طور منطقی به سه مرحله اصلی تقسیم می‌شود:

1. دریافت ورودی و مدیریت فایل: دریافت شرح شغل و چندین فایل رزومه (CV) از طریق یک وب‌هوک. فراداده (metadata) و محتوای base64 فایل‌ها استخراج شده و سپس مشخص می‌شود که آیا هر PDF رزومه مبتنی بر متن است یا اسکن شده.

2. استخراج متن و آماده‌سازی فراداده کاندیدا: تبدیل فایل‌های base64 به باینری، استخراج متن قابل خواندن از PDFها، پیوست مجدد فراداده (شرح شغل، نام فایل، نام کاندیدا، نقش)، و ترکیب تمام داده‌های رزومه در یک آرایه ساختاریافته برای پردازش توسط هوش مصنوعی.

3. پردازش هوش مصنوعی و مدیریت خروجی: استفاده از یک عامل هوش مصنوعی مبتنی بر LangChain با OpenAI GPT برای تجزیه و تحلیل و امتیازدهی هر رزومه در برابر شرح شغل. سپس خروجی هوش مصنوعی تجزیه شده، بهترین کاندیدا انتخاب می‌شود و با یک نتیجه JSON جامع به درخواست وب‌هوک پاسخ داده می‌شود.

---

تشریح جزئیات نودها

۱. دریافت ورودی و مدیریت فایل

این بخش به دریافت اولیه فایل‌های شرح شغل (Job Description) و رزومه (CV)، همراه با پردازش مقدماتی برای تعیین بهترین روش استخراج متن می‌پردازد.

  • Webhook

* نوع: n8n-nodes-base.webhook

* نقش: به عنوان نقطه ورود HTTP POST برای دریافت فایل‌های شرح شغل و رزومه عمل می‌کند.

* پیکربندی: روی مسیر /chat-new تنظیم شده، به همه مبدأها اجازه می‌دهد، از متد POST استفاده می‌کند و برای بازگرداندن پاسخ پس از پردازش پیکربندی شده است.

* ورودی/خروجی: بدنه JSON حاوی شرح شغل و فایل‌ها را دریافت می‌کند؛ بدنه دریافتی را به نود بعدی خروجی می‌دهد.

* ملاحظات: در صورت عمومی کردن این نقطه پایانی، اقدامات امنیتی مناسب را تضمین کنید. فرمت‌های نامعتبر فایل یا داده‌های ناقص ممکن است منجر به خطا شوند.

  • List_File

* نوع: n8n-nodes-base.code

* نقش: بدنه JSON ورودی از وب‌هوک را تجزیه و تحلیل کرده و متن شرح شغل و فراداده فایل (نام فایل و محتوای base64) را برای هر رزومه استخراج می‌کند.

* منطق: هر فایل را به یک آیتم شامل شرح شغل، یک ایندکس، نام فایل و محتوای base64 نگاشت می‌کند.

* ورودی/خروجی: بدنه JSON ورودی را می‌گیرد؛ آرایه‌ای از اشیاء فایل را خروجی می‌دهد که هر کدام دارای فراداده مرتبط هستند.

* موارد مرزی: با خروجی دادن یک لیست خالی، به طور موثر با آرایه خالی فایل‌ها برخورد می‌کند.

  • Detect PDF Type

* نوع: n8n-nodes-base.code

* نقش: برای هر فایل اجرا می‌شود تا مشخص کند آیا PDF مبتنی بر متن است یا یک تصویر اسکن شده. این موضوع روش استخراج متن بعدی را تعیین می‌کند.

* منطق: رشته base64 را به یک بافر تبدیل می‌کند، تلاش برای استخراج متن UTF-8 را انجام می‌دهد و از عبارات منظم برای تشخیص وجود متن قابل خواندن استفاده می‌کند.

* خروجی: یک فیلد pdf_type به آیتم اضافه می‌کند که "text"، "scan"، "unknown" یا "error" را با یادداشت‌های مرتبط نشان می‌دهد.

* موارد مرزی: با داده‌های base64 گمشده یا خطاهای رمزگشایی با افزودن یادداشت‌های هشدار برخورد می‌کند.

  • If

* نوع: n8n-nodes-base.if

* نقش: یک نود شرطی که گردش کار را بر اساس فیلد pdf_type منشعب می‌کند. PDFهای مبتنی بر متن را به یک مسیر پردازش و PDFهای اسکن شده/ناشناخته را به مسیر دیگری هدایت می‌کند.

* کاربرد: پردازش متمایز را بر اساس ماهیت PDF امکان‌پذیر می‌سازد.

* موارد مرزی: اگر pdf_type "unknown" یا "error" باشد، گردش کار شاخه "false" را دنبال می‌کند که در این تنظیمات منجر به تبدیل باینری می‌شود.

۲. استخراج متن و آماده‌سازی فراداده کاندیدا

این مرحله بر استخراج محتوای متنی از رزومه‌ها و غنی‌سازی آن با فراداده مرتبط قبل از ارسال برای تجزیه و تحلیل هوش مصنوعی تمرکز دارد.

  • Convert Base64 to Binary

* نوع: n8n-nodes-base.code

* نقش: رشته کدگذاری شده base64 هر رزومه را به فرمت باینری تبدیل می‌کند که برای استخراج متن PDF لازم است.

* منطق: اگر داده‌های base64 گمشده باشند، یک یادداشت برمی‌گرداند؛ در غیر این صورت، داده‌های باینری را با نوع MIME و نام فایل مناسب خروجی می‌دهد.

* ورودی/خروجی: داده‌های base64 را دریافت می‌کند؛ داده‌های باینری مناسب برای استخراج فایل را خروجی می‌دهد.

* موارد مرزی: با داده‌های base64 گمشده با پیام هشدار برخورد می‌کند.

  • Loop Over Items

* نوع: n8n-nodes-base.splitInBatches

* نقش: پردازش را برای مدیریت هر فایل رزومه به صورت جداگانه از طریق نودهای بعدی تقسیم می‌کند.

* ورودی/خروجی: لیست فایل‌های باینری را می‌گیرد و آن‌ها را یکی یکی پردازش می‌کند.

  • Extract from File

* نوع: n8n-nodes-base.extractFromFile

* نقش: محتوای متنی را به طور بومی از فایل‌های PDF باینری استخراج می‌کند.

* ورودی/خروجی: داده‌های PDF باینری را دریافت می‌کند؛ متن استخراج شده را به همراه هرگونه فراداده مرتبط خروجی می‌دهد.

* موارد مرزی: PDFهای اسکن شده بدون لایه متن منجر به استخراج خالی می‌شوند.

  • Reattach_Metadata_After_Extract

* نوع: n8n-nodes-base.code

* نقش: شرح شغل اصلی و نام فایل را به متن استخراج شده مجدداً پیوست می‌کند. همچنین با تلاش برای تشخیص نام کاندیدا، موقعیت شغلی و نوع نقش با استفاده از عبارات منظم و اکتشافی، داده‌ها را غنی می‌کند.

* عبارات کلیدی:

* از regex برای شناسایی نام‌های کامل (شامل حروف ویتنامی و لهجه‌دار)، نام‌های مختصر و بلوک‌های اطلاعاتی رایج استفاده می‌کند.

* موقعیت کاندیدا را با تطبیق کلمات کلیدی عنوان شغلی استخراج می‌کند.

* نقش را بر اساس کلمات کلیدی موقعیت شغلی به مدیر (Manager)، کاربردی (Functional)، فنی (Technical)، اداری (Admin) یا سایر (Other) دسته‌بندی می‌کند.

* ورودی/خروجی: تمام متن و فراداده استخراج شده را می‌گیرد؛ یک شیء JSON برای هر رزومه با اطلاعات غنی شده خروجی می‌دهد.

* موارد مرزی: اگر نام کاندیدا شناسایی نشود، به null تنظیم می‌شود. با متن گمشده یا بدشکل به طور موثر برخورد می‌کند.

  • Combine_Candidates_For_AI

* نوع: n8n-nodes-base.code

* نقش: تمام اشیاء JSON رزومه غنی شده را در یک بار داده (payload) واحد جمع‌آوری می‌کند. این بار داده شامل شرح شغل و یک آرایه candidates است که برای پردازش هوش مصنوعی بهینه شده است.

* منطق: تلاش می‌کند تا یک خط نام خام کاندیدا را از خطوط اولیه متن رزومه استخراج کند، با حذف اصطلاحات رایج سربرگ مانند "CV" یا "Thông tin cá nhân".

* ورودی/خروجی: چندین آیتم رزومه را در یک شیء واحد شامل شرح شغل و آرایه candidates ترکیب می‌کند.

* موارد مرزی: با متن خالی یا گمشده برخورد می‌کند و در صورت شکست استخراج اولیه، نام‌های کاندیدای جایگزین را حفظ می‌کند.

  • Preprocess_CV_Names

* نوع: n8n-nodes-base.code

* نقش: نام‌های کاندیدا را با انتخاب اولین خط معتبر در متن رزومه که حاوی کلمات کلیدی خاصی نیست، بیشتر اصلاح می‌کند. این کار قالب‌بندی و لهجه‌های اصلی را حفظ می‌کند.

* لاگ‌گیری: لاگ‌های اشکال‌زدایی را برای نام فایل‌ها و نام‌های استخراج شده به کنسول خروجی می‌دهد.

* ورودی/خروجی: داده‌های ترکیبی کاندیدا را دریافت می‌کند و فیلدهای candidate_name را قبل از مرحله تجزیه و تحلیل هوش مصنوعی به‌روز می‌کند.

* موارد مرزی: با رزومه‌های خالی یا پر سر و صدا با بازگشت به یک رشته خالی برای نام، برخورد می‌کند.

۳. پردازش هوش مصنوعی و مدیریت خروجی

این مرحله نهایی از OpenAI GPT برای تجزیه و تحلیل رزومه‌ها در برابر شرح شغل، پردازش پاسخ هوش مصنوعی و بازگرداندن نتایج استفاده می‌کند.

  • OpenAI Chat Model

* نوع: @n8n/n8n-nodes-langchain.lmChatOpenAi

* نقش: مدل OpenAI GPT (مانند gpt-4o-mini) را فراخوانی می‌کند و پرامپت هوش مصنوعی تعریف شده در نود LangChain agent بعدی را به آن تغذیه می‌کند.

* اعتبارنامه‌ها: نیاز به اعتبارنامه‌های پیکربندی شده OpenAI API دارد.

* ورودی/خروجی: متن پرامپت را دریافت می‌کند؛ پاسخ خام هوش مصنوعی را به نود agent خروجی می‌دهد.

* موارد مرزی: احتمال خطاهای شبکه، مشکلات API یا محدودیت نرخ.

  • AI Recruiter Agent

* نوع: @n8n/n8n-nodes-langchain.agent

* نقش: حاوی منطق اصلی هوش مصنوعی است. با ترکیب شرح شغل و داده‌های کاندیدا، پرامپت را می‌سازد و به GPT دستور می‌دهد تا هر رزومه را مطابق با قوانین اونتولوژی خاص تجزیه و تحلیل و امتیازدهی کند.

* نکات برجسته پرامپت:

* یک اونتولوژی دامنه شغل و رزومه دقیق با قوانین تطبیق تعریف می‌کند.

* شامل قوانین سختگیرانه برای استخراج نام کاندیدا برای جلوگیری از جعل است.

* منطق امتیازدهی و طرحواره خروجی JSON مورد نظر را مشخص می‌کند.

* به مدل دستور می‌دهد تا به زبان ویتنامی خروجی دهد و اصطلاحات فنی را حفظ کند.

* ورودی/خروجی: داده‌های ترکیبی شرح شغل و کاندیدا را دریافت می‌کند؛ یک آرایه JSON حاوی تجزیه و تحلیل هوش مصنوعی برای هر کاندیدا خروجی می‌دهد.

* موارد مرزی: خطرات توهم مدل با قوانین سختگیرانه پرامپت کاهش می‌یابد. داده‌های ورودی بدشکل می‌تواند منجر به خطاهای تجزیه شود.

  • Parse Recruiter Output

* نوع: n8n-nodes-base.code

* نقش: رشته خروجی JSON هوش مصنوعی را به طور قوی تجزیه می‌کند. نتایج تطبیق دامنه را نرمال می‌کند و منطق شکستن تساوی را برای انتخاب بهترین کاندیدا اعمال می‌کند.

* منطق کلیدی:

* پرچم‌های domain_match ناسازگار را اصلاح می‌کند.

* کاندیداها را بر اساس حداقل fit_score (مثلاً ≥ ۷۰) فیلتر می‌کند.

* معیارهای شکستن تساوی را اعمال می‌کند: fit_score، برابری دامنه، شباهت دامنه، تعداد کلمات کلیدی تطبیق داده شده و سال‌های تجربه.

* یک متن خلاصه بر اساس تجزیه و تحلیل ایجاد می‌کند.

* ورودی/خروجی: خروجی خام هوش مصنوعی را می‌گیرد؛ یک خلاصه ساختاریافته و لیستی رتبه‌بندی شده از کاندیداها را برمی‌گرداند.

* موارد مرزی: با شکست‌های تجزیه JSON و خروجی بدشکل هوش مصنوعی به طور موثر برخورد می‌کند.

  • Respond to Webhook

* نوع: n8n-nodes-base.respondToWebhook

* نقش: آخرین نود در گردش کار. نتیجه کامل پردازش شده JSON را به درخواست کننده اصلی HTTP POST ارسال می‌کند.

* پیکربندی: کد وضعیت HTTP 200 را با هدرهای CORS مناسب برمی‌گرداند.

* موارد مرزی: احتمال قطع شدن شبکه یا قطع اتصال کلاینت.

---

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
Webhookn8n-nodes-base.webhookنقطه ورود برای فایل‌های شرح شغل و رزومهList_File🟩 مرحله ۱: بارگذاری فایل‌ها (شرح شغل + رزومه‌ها) - نود Webhook فایل شرح شغل و چندین فایل رزومه را دریافت می‌کند.
List_Filen8n-nodes-base.codeاستخراج نام فایل‌ها و داده‌های base64 از فایل‌هاWebhookDetect PDF Type
Detect PDF Typen8n-nodes-base.codeتشخیص نوع PDF: مبتنی بر متن یا اسکن شدهList_FileIf
Ifn8n-nodes-base.ifانشعاب بر اساس نوع PDF (متنی یا اسکن شده)Detect PDF TypeConvert Base64 to Binary
Convert Base64 to Binaryn8n-nodes-base.codeتبدیل رشته‌های base64 به باینری برای استخراجIfLoop Over Items🟨 مرحله ۲: استخراج و ادغام متن - تبدیل Base64 به باینری هر رزومه را برای استخراج متن آماده می‌کند.
Loop Over Itemsn8n-nodes-base.splitInBatchesپردازش هر فایل رزومه به صورت جداگانهConvert Base64 to BinaryExtract from File, NoOp
Extract from Filen8n-nodes-base.extractFromFileاستخراج محتوای متنی از باینری PDFLoop Over ItemsReattach_Metadata_After_Extract
NoOpn8n-nodes-base.noOpنود جایگزین برای مدیریت اتصالLoop Over ItemsLoop Over Items
Reattach_Metadata_After_Extractn8n-nodes-base.codeپیوست مجدد شرح شغل/نام فایل و فراداده کاندیدای استخراج شدهExtract from FileCombine_Candidates_For_AI
Combine_Candidates_For_AIn8n-nodes-base.codeتجمیع تمام رزومه‌ها در آرایه کاندیداهاReattach_Metadata_After_ExtractPreprocess_CV_Names
Preprocess_CV_Namesn8n-nodes-base.codeپالایش نام کاندیداها قبل از تحلیل هوش مصنوعیCombine_Candidates_For_AIOpenAI Chat Model
OpenAI Chat Model@n8n/n8n-nodes-langchain.lmChatOpenAiفراخوانی مدل OpenAI GPT برای تحلیلPreprocess_CV_NamesAI Recruiter Agent🟦 مرحله ۳: تحلیل و خروجی هوش مصنوعی - مدل OpenAI Chat، پرامپت را به GPT ارسال می‌کند.
AI Recruiter Agent@n8n/n8n-nodes-langchain.agentمنطق اصلی هوش مصنوعی: ساخت پرامپت و تحلیلOpenAI Chat ModelParse Recruiter Output
Parse Recruiter Outputn8n-nodes-base.codeتجزیه خروجی هوش مصنوعی، نرمال‌سازی و انتخاب بهترین کاندیداAI Recruiter AgentRespond to Webhook
Respond to Webhookn8n-nodes-base.respondToWebhookارسال نتایج نهایی JSON به درخواست‌کنندهParse Recruiter Output🟢 تکمیل گردش کار: نتایج از طریق وب‌هوک بازگردانده شد.

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چگونه رزومه‌ها را تحلیل می‌کند؟

این گردش کار از OpenAI GPT از طریق LangChain برای تجزیه و تحلیل و امتیازدهی هر رزومه در برابر شرح شغل استفاده می‌کند. سپس خروجی هوش مصنوعی تجزیه شده و بهترین کاندیدا انتخاب می‌شود.

چه نوع فایل‌هایی را می‌توان با این گردش کار پردازش کرد؟

این گردش کار برای پردازش فایل‌های شرح شغل و چندین فایل رزومه (CV) طراحی شده است. همچنین می‌تواند PDFهای مبتنی بر متن و اسکن شده را تشخیص داده و پردازش کند.

مزایای اصلی استفاده از این گردش کار چیست؟

مزایای اصلی شامل خودکارسازی تحلیل رزومه، صرفه‌جویی در زمان استخدام، امتیازدهی دقیق کاندیداها، شناسایی تطابق دامنه و ارائه توصیه‌های برتر برای انتخاب کارآمدتر است.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.