feder-cr / Auto_Jobs_Applier_AIHawk

Auto_Jobs_Applier_AIHawk is a tool that automates the jobs application process. Utilizing artificial intelligence, it enables users to apply for multiple job offers in an automated and personalized way.
Other
17.46k stars 2.53k forks source link

[BUG]: Failed to generate resume - Gemini API Key being used as an OpenAI API Key "'LoggerChatModel' object has no attribute 'logger'" #522

Open askevar opened 1 day ago

askevar commented 1 day ago

Describe the bug

Fails to generate a resume because it tries to use my Gemini API key as an OpenAI API call and gets a 401 response

Steps to reproduce

  1. Using branch main
  2. Configure as normal, using a valid Gemini API key and model
  3. Run python main.py
  4. Observe the behavior when the program is using LinkedIn to apply for jobs
  5. Observe that calls to the Gemini LLM are successful, until attempting to generate a custom resume
  6. Observe that the program fails in the package langchain_openai function self.client.create() where it assumes you are using an OpenAi API key and model and not a Gemini model

Expected behavior

A custom resume PDF would be generated and used for the LinkedIn job application

Actual behavior

The resume creation failed and the program continued to work, but it applied with my existing resume already uploaded to LinkedIn

Branch

main

Python version

3.11.0(64b)

LLM Used

Google Gemini

Model used

gemini-1.5-flash-002

Additional context

Log of error:

2024-10-12 19:05:51.199 | ERROR    | src.aihawk_easy_applier:_create_and_upload_resume:470 - Failed to generate resume: 'LoggerChatModel' object has no attribute 'logger'
2024-10-12 19:05:51.201 | ERROR    | src.aihawk_easy_applier:_create_and_upload_resume:472 - Traceback: Traceback (most recent call last):
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\lib_resume_builder_AIHawk\gpt_resume_job_description.py", line 119, in __call__      
    reply = self.llm(messages)
            ^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\_api\deprecation.py", line 180, in warning_emitting_wrapper
    return wrapped(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\language_models\chat_models.py", line 1016, in __call__
    generation = self.generate(
                 ^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\language_models\chat_models.py", line 634, in generate
    raise e
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\language_models\chat_models.py", line 624, in generate
    self._generate_with_cache(
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\language_models\chat_models.py", line 846, in _generate_with_cache    
    result = self._generate(
             ^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_openai\chat_models\base.py", line 589, in _generate
    response = self.client.create(**payload)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\openai\_utils\_utils.py", line 277, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\openai\resources\chat\completions.py", line 646, in create
    return self._post(
           ^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\openai\_base_client.py", line 1266, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\openai\_base_client.py", line 942, in request
    return self._request(
           ^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\openai\_base_client.py", line 1046, in _request
    raise self._make_status_error_from_response(err.response) from None
openai.AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: ***************************************. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\src\aihawk_easy_applier.py", line 442, in _create_and_upload_resume
    resume_pdf_base64 = self.resume_generator_manager.pdf_base64(job_description_text=job.description)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\lib_resume_builder_AIHawk\manager_facade.py", line 78, in pdf_base64
    self.resume_generator.create_resume_job_description_text(style_path, job_description_text, temp_html_path)
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\lib_resume_builder_AIHawk\resume_generator.py", line 37, in create_resume_job_description_text
    gpt_answerer.set_job_description_from_text(job_description_text)
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\lib_resume_builder_AIHawk\gpt_resume_job_description.py", line 247, in set_job_description_from_text
    output = chain.invoke({"text": job_description_text})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\runnables\base.py", line 2878, in invoke
    input = context.run(step.invoke, input, config)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\runnables\base.py", line 4474, in invoke
    return self._call_with_config(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\runnables\base.py", line 1785, in _call_with_config
    context.run(
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\runnables\config.py", line 398, in call_func_with_variable_args       
    return func(input, **kwargs)  # type: ignore[call-arg]
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\runnables\base.py", line 4330, in _invoke
    output = call_func_with_variable_args(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\langchain_core\runnables\config.py", line 398, in call_func_with_variable_args       
    return func(input, **kwargs)  # type: ignore[call-arg]
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\dev\Auto_Jobs_Applier_AIHawk\.venv\Lib\site-packages\lib_resume_builder_AIHawk\gpt_resume_job_description.py", line 133, in __call__      
    self.logger.error(f"Unexpected error occurred: {str(e)}, retrying in {retry_delay} seconds... (Attempt {attempt + 1}/{max_retries})")
    ^^^^^^^^^^^
AttributeError: 'LoggerChatModel' object has no attribute 'logger'

2024-10-12 19:05:51.204 | ERROR    | src.aihawk_easy_applier:fill_up:337 - Failed to find form elements: 'LoggerChatModel' object has no attribute 'logger'
askevar commented 1 day ago

This problem is actually with the underlying dependency https://github.com/feder-cr/lib_resume_builder_AIHawk

This is a duplicate of these issues: