关于 Auto_Jobs_Applier_AI_Agent
Auto_Jobs_Applier_AI_Agent 是一个人工智能代理,它使工作申请过程自动化。利用人工智能,它使用户能够以自动化和个性化的方式申请多个工作。
- github :https://github.com/AIHawk-FOSS/Auto_Jobs_Applier_AI_Agent
- 社区:Telegram (针对普通用户) | [Discord]
- 创建者: feder-cr , AIHawk联合创始人
由于AIHawk正专注于其专有产品——解决公司招聘问题,目前此项目由一群开源贡献者领导、管理和维护,专注于构建帮助求职者获得应得工作的工具。 - 项目负责人 / 维护者:surapuramakhil , sarob, cjbbb
正在寻求扩大我们的开源软件(FOSS)维护者团队!如果你来自非技术背景,你可以成为项目管理团队的一员,处理问题分类,并塑造项目。如果你是技术人员,你可以参与代码审查,参与发布,并构建这个产品的更好版本。
在 Discord 联系我们 surapuramakhil
Auto_Jobs_Applier_AIHawk 正在不断发展,您的反馈、建议和贡献非常宝贵。请随时打开问题、提出增强建议或提交拉取请求,以帮助改进项目。让我们共同努力,将 Auto_Jobs_Applier_AIHawk 打造成为全球求职者的强大工具。
简介
Auto_Jobs_Applier_AIHawk是一款前沿的、自动化的工具,旨在彻底改变求职和申请过程。在当今竞争激烈的就业市场中,机会转瞬即逝,这款程序为求职者提供了显著的优势。通过利用自动化和人工智能的力量,Auto_Jobs_Applier_AIHawk使用户能够高效且个性化地申请大量相关职位,最大化他们获得理想工作的机会。
现代求职的挑战
在数字化时代,求职环境发生了巨大的变化。虽然在线平台打开了世界的大门,但也加剧了竞争。求职者往往发现自己花费大量时间浏览列表、定制申请和重复填写表格。这个过程不仅耗时,而且情感上也很耗费精力,导致求职疲劳和错失机会。
Auto_Jobs_Applier_AIHawk:您的个人求职助手
Auto_Jobs_Applier_AIHawk作为应对这些挑战的颠覆性解决方案登场。它不仅仅是一个工具;它是您不知疲倦的、全天候的求职伙伴。通过自动化求职过程中最耗时的方面,它使您能够专注于真正重要的事情——准备面试和发展您的专业技能。
特性
- 智能求职自动化
- 可定制的搜索标准
- 持续扫描新职位空缺
- 智能过滤以排除不相关列表
- 快速高效的申请提交
- 一键申请
- 使用您的个人资料信息自动填写表格
- 自动附加文档(简历,求职信)
- 人工智能驱动的个性化
- 针对雇主特定问题的动态响应生成
- 调整语气和风格以适应公司文化
- 关键字优化以提高申请的相关性
- 大量管理同时保证质量
- 批量申请功能
- 质量控制措施
- 详细申请跟踪
- 智能过滤和黑名单
- 公司黑名单以避免不受欢迎的雇主
- 标题过滤以关注相关职位
- 动态简历生成
- 自动为每个申请创建定制简历
- 根据职位要求定制简历内容
- 安全的数据处理
- 使用YAML文件安全地管理敏感信息
安装
在以下操作系统上已成功运行:
- 操作系统:
- Windows 10
- Ubuntu 22
- Python版本:
- 3.10
- 3.11.9(64b)
- 3.12.5(64b)
选项1:使用Python虚拟环境
1、下载和安装Python:
确保您已安装最新的Python版本。如果没有,请从Python的官方网站下载并安装它。有关详细说明,请参阅以下教程:
2、下载并安装 Google Chrome:
- 从官网链接下载并安装最新版本的GoogleChrome。
3、克隆仓库:
git clone https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk.git
cd Auto_Jobs_Applier_AIHawk
4、激活虚拟环境:
python3 -m venv virtual
source virtual/bin/activate
或对于基于Windows的机器
.\virtual\Scripts\activate
5、安装所需的软件包:
pip install -r requirements.txt
选项 2: 使用 Conda
1、安装 Conda:
下载并安装官网链接
或者从Anaconda网站安装Anaconda
2、创建并激活 conda 环境:
# Create new environment
conda create -n aihawk python=3.11
# Activate environment
conda activate aihawk
3、克隆仓库:
git clone https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk.git
cd Auto_Jobs_Applier_AIHawk
4、安装依赖项:
# Install from requirements.txt
pip install -r requirements.txt
配置
1. secrets.yaml
此文件包含敏感信息。切勿分享或提交此文件到版本控制。
llm_api_key: [Your OpenAI or Ollama API key or Gemini API key]
- 替换为您的OpenAI API密钥以进行GPT集成
- 要获取API密钥,请按照以下教程操作:https://medium.com/@lorenzozar/how-to-get-your-own-openai-api-key-f4d44e60c327
- 注意:您需要向OpenAI帐户添加信用才能使用API。您可以通过访问OpenAI计费仪表板来添加信用。
- 根据OpenAI社区和我们的用户报告,在设置OpenAI帐户并购买所需积分后,用户仍然拥有
Free
帐户类型。这会阻止他们无限制地访问OpenAI模型,并且每天只允许200个请求。这可能会导致运行时错误,例如:
Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. ...}}
{'error': {'message': 'Rate limit reached for gpt-4o-mini in organization <org> on requests per day (RPD): Limit 200, Used 200, Requested 1.}}
您可以在 official page 获得更多信息。
- 要获得 Gemini API key,访问 Google AI for Devs
2. work_preferences.yaml
此文件定义了您的职位搜索参数和机器人行为。每个部分包含您可以自定义的选项:
-
remote:[true/false]
- Set to
true
to include remote jobs,false
to exclude them
- Set to
-
hybrid: [true/false]
- Set to
true
to include hybrid jobs,false
to exclude them
- Set to
-
onsite: [true/false]
- Set to
true
to include onsite jobs,false
to exclude them
- Set to
-
experience_level:
- Set desired experience levels to
true
, others tofalse
- Set desired experience levels to
-
job_types:
- Set desired job types to
true
, others tofalse
- Set desired job types to
-
date:
- Choose one time range for job postings by setting it to
true
, others tofalse
- Choose one time range for job postings by setting it to
-
positions:
-
列出你感兴趣的职位,每行一个
-
Example:
positions: - Software Developer - Data Scientist
-
-
locations:
-
列出您要搜索的位置,每行一个
-
Example:
locations: - Italy - London
-
-
apply_once_at_company: [True/False]
- 设置为
True
,每家公司仅应用一次,False
,每家公司允许多个应用
- 设置为
-
distance: [number]
- 以英里为单位设置求职半径
- Example:
distance: 50
-
companyBlacklist:
-
列出您想从搜索中排除的公司,每行一个
-
Example:
companyBlacklist: - Company X - Company Y
-
-
titleBlacklist:
-
列出您要避免的职位标题中的关键字,每行一个
-
Example:
titleBlacklist: - Sales - Marketing
-
2.1 config.py -自定义LLM模型端点
LLM_MODEL_TYPE
- 选择型号类型,支持:openai/ollama/claude/gemini
LLM_MODEL
- 选择大模型,目前支持:
- openai: gpt-4o
- ollama: llama2, mistral:v0.3
- claude: any model
- gemini: any model
- 选择大模型,目前支持:
LLM_API_URL
- LLM模型的API端点链接
- openai:https://api.pawan.krd/cosmosrp/v1
- ollama:http://127.0.0.1:11434/
- claude:https://api.anthropic.com/v1
- gemini:https://aistudio.google.com/app/apikey
- LLM模型的API端点链接
- 注意:要运行本地Ollama,请遵循此处的指南:Ollama部署指南
3. plain_text_resume.yaml
此文件包含您的简历信息,以结构化格式呈现。请填写您的个人详细信息、教育背景、工作经验和技能。这些信息用于自动填写申请表和生成定制简历。
每个部分都有特定的字段需要填写:
personal_information:
- 此部分包含用于识别您和提供联系信息的个人基本信息。
- name: 您的名字。
- surname: 您的姓氏或家族名称。
- date_of_birth: 您的出生日期,格式为 DD/MM/YYYY。
- country: 您目前居住的国家。
- city: 您目前居住的城市。
- address: 您的完整地址,包括街道和门牌号。
- zip_code: 您的邮政/ZIP码。
- phone_prefix: 您电话号码的国际拨号代码(例如,美国为+1,英国为+44)。
- phone: 您的电话号码,不带国际拨号代码。
- email: 您的主要电子邮件地址。
- github: 如果适用,您的GitHub个人资料URL。
- linkedin: 如果适用,您的LinkedIn个人资料URL。
- 示例
- 此部分包含用于识别您和提供联系信息的个人基本信息。
personal_information:
name: "Jane"
surname: "Doe"
date_of_birth: "01/01/1990"
country: "USA"
city: "New York"
address: "123 Main St"
zip_code: "520123"
phone_prefix: "+1"
phone: "5551234567"
email: "jane.doe@example.com"
github: "https://github.com/janedoe"
linkedin: "https://www.linkedin.com/in/janedoe/"
education_details
-
这一节概述了您的学术背景,包括获得的学位和相关的课程。
- 学位:获得的学位类型(例如,学士学位,硕士学位)。
- 大学:您学习过的大学或机构的名称。
- 最终评估成绩:您的平均成绩点或相当于学术表现的衡量标准。
- 开始日期:您学习开始的年份。
- 毕业年份:您毕业的年份。
- 学习领域:您学习的专业或重点领域。
- 考试:列出您所修课程或科目及其相应的成绩。
-
示例:
-
education_details:
- education_level: "Bachelor's Degree"
institution: "University of Example"
field_of_study: "Software Engineering"
final_evaluation_grade: "4/4"
start_date: "2021"
year_of_completion: "2023"
exam:
Algorithms: "A"
Data Structures: "B+"
Database Systems: "A"
Operating Systems: "A-"
Web Development: "B"
experience_details
-
此部分详细说明您的工作经验,包括工作职位、公司和主要职责。
- 职位:您的职位或角色名称。
- 公司:您工作过的公司或组织的名称。
- 雇佣期间:您在该职位上的雇佣时间段,使用格式 MM/YYYY - MM/YYYY。
- 地点:公司的所在城市和国家。
- 行业:公司运营的行业或领域。
- 主要职责:在职位中拥有的主要职责或任务列表,例如:职责:“使用React和Node.js开发Web应用程序”。
- 技能获取:通过此职位获得技能或专业知识,例如:“React”。
-
示例:
-
experience_details:
- position: "Software Developer"
company: "Tech Innovations Inc."
employment_period: "06/2021 - Present"
location: "San Francisco, CA"
industry: "Technology"
key_responsibilities:
- responsibility: "Developed web applications using React and Node.js"
- responsibility: "Collaborated with cross-functional teams to design and implement new features"
- responsibility: "Troubleshot and resolved complex software issues"
skills_acquired:
- "React"
- "Node.js"
- "Software Troubleshooting"
projects
-
包含你参与过的显著项目,包括个人或专业项目。
- 名称:项目的名称或标题。
- 描述:对项目涉及内容或目的的简要总结。
- 链接:如果有的话,项目的URL(例如,GitHub仓库,网站)。
-
示例:
-
projects:
- name: "Weather App"
description: "A web application that provides real-time weather information using a third-party API."
link: "https://github.com/janedoe/weather-app"
- name: "Task Manager"
description: "A task management tool with features for tracking and prioritizing tasks."
link: "https://github.com/janedoe/task-manager"
achievements
-
突出你获得的重要成就或奖项。
- 名称:成就的标题或名称。
- 描述:对成就及其重要性的简要解释。
-
示例:
-
achievements:
- name: "Employee of the Month"
description: "Recognized for exceptional performance and contributions to the team."
- name: "Hackathon Winner"
description: "Won first place in a national hackathon competition."
certifications
-
包含您所获得的所有专业认证。
- name: “PMP”
description: “项目管理专业人士认证,由项目管理协会(PMI)颁发”
- name: “PMP”
-
示例:
-
certifications:
- "Certified Scrum Master"
- "AWS Certified Solutions Architect"
languages:
-
详细说明您会说的语言以及您在每个语言上的熟练程度。
- language: 语言名称。
- proficiency: 您的熟练程度(例如,母语,流利,中等)。
-
示例:
-
languages:
- language: "English"
proficiency: "Fluent"
- language: "Spanish"
proficiency: "Intermediate"
-
interests:
-
提及可能与你的职业生涯相关的专业或个人兴趣。
- interest: 一份兴趣或爱好列表。
-
示例:
-
interests:
- "Machine Learning"
- "Cybersecurity"
- "Open Source Projects"
- "Digital Marketing"
- "Entrepreneurship"
availability:
-
陈述您当前的可用工时或通知期。
- notice_period:您开始新角色所需的时间(例如,“2周”,“1个月”)。
-
示例:
-
availability:
notice_period: "2 weeks"
salary_expectations:
-
提供您期望的薪资范围。
- salary_range_usd: 您期望的薪资范围,以美元表示。
-
示例:
-
salary_expectations:
salary_range_usd: "80000 - 100000"
self_identification:
-
提供与个人身份相关的信息,包括性别和代词。
- gender: 你的性别身份。
- pronouns: 你使用的代词(例如,He/Him, She/Her, They/Them)。
- veteran: 你是否是退伍军人(例如,是,否)。
- disability: 你是否有残疾(例如,是,否)。
- ethnicity: 你的种族。
-
示例:
-
self_identification:
gender: "Female"
pronouns: "She/Her"
veteran: "No"
disability: "No"
ethnicity: "Asian"
legal_authorization
-
标示您在各个地点工作的法律能力。
- eu_work_authorization:您是否被授权在欧洲联盟工作(是/否)。
- us_work_authorization:您是否被授权在美国工作(是/否)。
- requires_us_visa:您是否需要签证才能在美国工作(是/否)。
- requires_us_sponsorship:您是否需要担保才能在美国工作(是/否)。
- requires_eu_visa:您是否需要签证才能在欧洲联盟工作(是/否)。
- legally_allowed_to_work_in_eu:您是否被法律允许在欧洲联盟工作(是/否)。
- legally_allowed_to_work_in_us:您是否被法律允许在美国工作(是/否)。
- requires_eu_sponsorship:您是否需要担保才能在欧洲联盟工作(是/否)。
- canada_work_authorization:您是否被授权在加拿大工作(是/否)。
- requires_canada_visa:您是否需要签证才能在加拿大工作(是/否)。
- legally_allowed_to_work_in_canada:您是否被法律允许在加拿大工作(是/否)。
- requires_canada_sponsorship:您是否需要担保才能在加拿大工作(是/否)。
- uk_work_authorization:您是否被授权在英国工作(是/否)。
- requires_uk_visa:您是否需要签证才能在英国工作(是/否)。
- legally_allowed_to_work_in_uk:您是否被法律允许在英国工作(是/否)。
- requires_uk_sponsorship:您是否需要担保才能在英国工作(是/否)。
-
示例:
-
legal_authorization:
eu_work_authorization: "Yes"
us_work_authorization: "Yes"
requires_us_visa: "No"
requires_us_sponsorship: "Yes"
requires_eu_visa: "No"
legally_allowed_to_work_in_eu: "Yes"
legally_allowed_to_work_in_us: "Yes"
requires_eu_sponsorship: "No"
canada_work_authorization: "Yes"
requires_canada_visa: "No"
legally_allowed_to_work_in_canada: "Yes"
requires_canada_sponsorship: "No"
uk_work_authorization: "Yes"
requires_uk_visa: "No"
legally_allowed_to_work_in_uk: "Yes"
requires_uk_sponsorship: "No"
work_preferences
-
指定您对工作安排和条件的要求。
remote_work
:您是否接受远程工作(是/否)。in_person_work
:您是否接受现场工作(是/否)。open_to_relocation
:您是否愿意为了工作而搬迁(是/否)。willing_to_complete_assessments
:您是否愿意完成工作评估(是/否)。willing_to_undergo_drug_tests
:您是否愿意接受药物检测(是/否)。willing_to_undergo_background_checks
:您是否愿意接受背景调查(是/否)。
-
示例:
-
work_preferences:
remote_work: "Yes"
in_person_work: "No"
open_to_relocation: "Yes"
willing_to_complete_assessments: "Yes"
willing_to_undergo_drug_tests: "No"
willing_to_undergo_background_checks: "Yes"
加上data_folder_example
该data_folder_example
文件夹包含一个工作示例,说明如何构建和填写机器人操作所需的文件。此文件夹可作为实际参考,帮助您正确设置求职机器人的工作环境。
内容
在此文件夹中,您将找到密钥文件的示例版本:
secrets.yaml
config.yaml
plain_text_resume.yaml
这些文件已经填充了虚构但真实的数据。它们向您显示要在每个文件中输入的正确格式和信息类型。
使用data_folder_example
使用此文件夹作为指南对以下方面特别有帮助:
- 了解每个配置文件的正确结构
- 查看每个字段的有效数据示例
- 填写个人文件时有一个参考点
使用
0、帐户语言
为确保机器人正常工作,您的帐户语言必须设置为英语。
1、数据文件夹:确保您的data_folder包含以下文件:
secrets.yaml
config.yaml
plain_text_resume.yaml
2、输出文件夹:包含机器人的输出。
data.json
–收集模式的结果failed.json
失败的应用程序open_ai_calls.json
所有打给LLM模型的电话skipped.json
的json应用程序success.json
成功的应用程序
注意: answers.json
不是输出文件夹的一部分,可以在项目的根目录中找到。它用于存储向用户提出的问题的答案。可用于用更正的答案更新机器人。搜索Select an option
,0
,Authorized
,以及how many years of
验证正确答案。
3、运行机器人:
Auto_Jobs_Applier_AIHawk在处理您的pdf简历方面提供了灵活性:
- **动态简历生成:**如果您不使用
--resume
选项,机器人将自动为每个申请生成唯一的简历。此功能使用您的plain_text_resume.yaml
文件中的信息,并根据每个特定的工作申请进行定制,通过为每个职位定制简历,可能会增加您成功的机会。
python main.py
- 使用特定的简历:
如果您想要为所有申请使用特定的PDF简历,请将您的简历PDF放入data_folder
目录中,并使用--resume
选项运行机器人:
python main.py --resume /path/to/your/resume.pdf
- 使用colled模式:
如果您只想收集工作数据以执行任何类型的数据分析,您可以使用带有--collect
选项的bot。这将把从领英工作职位中找到的所有数据存储在output/data.json文件中。
python main.py --collect
故障排除
1. OpenAI API 速率限制错误
错误信息:
openai.RateLimitError: 错误代码:429 - {‘error’: {‘message’: ‘您已超出当前配额,请检查您的计划和个人信息。有关此错误更多信息,请阅读文档:https://platform.openai.com/docs/guides/error-codes/api-errors。’, ‘type’: ‘insufficient_quota’, ‘param’: None, ‘code’: ‘insufficient_quota’}}
解决方案:
- 检查您的 OpenAI API 账单设置 https://platform.openai.com/account/billing
- 确保您已为 OpenAI 账户添加有效的支付方式
- 注意 ChatGPT Plus 订阅与 API 访问不同
- 如果您最近添加了资金或升级,请等待 12-24 小时以使更改生效
- 免费层有 3 RPM 的限制;至少花费 5 美元在 API 使用上以增加
2. 未找到“轻松申请”按钮
错误信息:
异常:未找到可点击的“轻松申请”按钮
解决方案:
- 确保您已正确登录
- 检查您针对的职位列表是否确实有“轻松申请”选项
- 验证
config.yaml
文件中的搜索参数是否正确,并返回带有“轻松申请”按钮的职位 - 尝试增加脚本的页面加载等待时间,以确保在搜索按钮之前所有元素都已加载
3. 职位申请中信息不正确
问题: 机器人提供的经验、CTC 和通知期数据不准确
解决方案:
- 更新针对专业经验的提示
- 在
config.yaml
中添加当前 CTC、期望 CTC 和通知期的字段 - 修改机器人逻辑以使用这些新的配置字段
4. YAML 配置错误
错误信息:
yaml.scanner.ScannerError
: 在扫描简单键时
解决方案:
- 复制示例
config.yaml
并逐步修改 - 确保正确的 YAML 缩进和间距
- 使用 YAML 验证工具
- 避免不必要的特殊字符或引号
5. 机器人登录但未申请职位
问题: 机器人搜索职位但持续滚动而不申请
解决方案:
- 检查是否存在安全检查或 CAPTCHA
- 验证
config.yaml
职位搜索参数 - 确保您的账户资料符合职位要求
- 查看控制台输出以查找错误消息
一般故障排除提示
- 使用脚本的最新版本
- 验证所有依赖项都已安装并更新
- 检查互联网连接稳定性
- 如果问题持续存在,请清除浏览器缓存和Cookies
如需进一步帮助,请在GitHub存储库上创建一个问题,其中包含有关您的问题的详细信息,包括错误消息和您的配置(删除敏感信息)。
结论
Auto_Jobs_Applier_AIHawk 通过自动化和增强求职申请流程,在现代求职市场中提供了显著的优势。凭借动态简历生成和AI驱动的个性化等功能,它提供了无与伦比的灵活性和效率。无论是希望最大化求职成功机会的求职者,还是希望简化申请提交流程的招聘人员,或者是寻求提供更好服务的职业顾问,Auto_Jobs_Applier_AIHawk 都是一个宝贵的资源。通过利用尖端自动化和人工智能技术,这个工具不仅节省了时间,还在当今竞争激烈的职场中显著提高了求职申请的有效性和质量。