Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
| import os | |
| from ctransformers import AutoModelForCausalLM | |
| from langchain.llms import OpenAI | |
| from langchain.prompts import PromptTemplate | |
| AVAILABLE_MODELS_GGUF = { | |
| "TheBloke/Marcoroni-7B-v3-GGUF": { | |
| "model_file": "marcoroni-7b-v3.Q4_K_M.gguf", | |
| "model_type": "marcoroni" | |
| }, | |
| "TheBloke/Mistral-7B-Instruct-v0.2-GGUF": { | |
| "model_file": "mistral-7b-instruct-v0.2.Q4_K_M.gguf", | |
| "model_type": "mistral" | |
| }, | |
| "TheBloke/LeoScorpius-7B-GGUF": { | |
| "model_file": "leoscorpius-7b.Q4_K_M.gguf", | |
| "model_type": "leoscorpius" | |
| } | |
| } | |
| AVAILABLE_MODELS_OPENAI = [ | |
| "gpt-4-1106-preview", "gpt-4-32k", "gpt-3.5-turbo-1106", | |
| ] | |
| def generate_cover_letter_open_source(job_description, resume, selected_model, context_length=8000): | |
| print(f"selected_model: {selected_model}, " | |
| f"{AVAILABLE_MODELS_GGUF[selected_model]['model_file']}, {AVAILABLE_MODELS_GGUF[selected_model]['model_type']}") | |
| print(f"context_length: {context_length}") | |
| prompt = (f"Do the following steps: " | |
| f"1. Read the following job description," | |
| f"2. Read the following resume, " | |
| f"3. Write a formal cover letter to the hiring manager for the job description based on the given resume, " | |
| # f"4. The cover letter MUST BE within {output_size_range[0]} to {output_size_range[1]} words. " | |
| # f"4. The cover letter MUST BE within 100 words. " | |
| f"4. Return ONLY the cover letter ONCE, nothing else. " | |
| f"Job Description: '{job_description}'. Resume: '{resume}'") | |
| # prompt = "What is an LLM" | |
| llm = AutoModelForCausalLM.from_pretrained(selected_model, | |
| model_file=AVAILABLE_MODELS_GGUF[selected_model]['model_file'], | |
| model_type=AVAILABLE_MODELS_GGUF[selected_model]['model_type'], | |
| context_length=context_length, | |
| max_new_tokens=1000, | |
| reset=True, | |
| stream=True, | |
| # top_k=2, | |
| temperature=0.5, | |
| threads=(os.cpu_count()//2) | |
| ) | |
| llm_response = llm(prompt) | |
| return llm_response | |
| def generate_cover_letter_openai(job_description, resume, selected_model, openai_key=None): | |
| os.environ["OPENAI_API_KEY"] = openai_key | |
| temp = "Do the following steps: " \ | |
| "1. Read the following job description," \ | |
| "2. Read the following resume, " \ | |
| "3. Write a formal cover letter to the hiring manager for the job description based on the given resume, " \ | |
| "4. Return ONLY the cover letter ONCE, nothing else. " \ | |
| "Job Description: '{job_description}'. Resume: '{resume}'" | |
| prompt = PromptTemplate( | |
| template=temp, | |
| input_variables=["job_description", "resume"] | |
| ) | |
| model = OpenAI(model_name=selected_model) | |
| _input = prompt.format(job_description=job_description, resume=resume) | |
| output = model.stream(_input) | |
| return output | |