cover_letter / app_hf.py
willn9's picture
Rename app.py to app_hf.py
ea76f49 verified
raw
history blame
3.91 kB
import os
import gradio as gr
from huggingface_hub import InferenceClient
# Initialize the Hugging Face Inference client
HF_API_KEY = os.environ.get("HF_API_KEY")
HF_MODEL_NAME = os.environ.get("HF_MODEL_NAME")
client = InferenceClient(model=HF_MODEL_NAME, token=HF_API_KEY)
def respond(
message,
history: list[tuple[str, str]],
system_message,
role,
education,
passion,
fit,
anecdotes,
max_tokens,
temperature,
top_p,
):
# Construct the system message with additional inputs
enhanced_system_message = (
f"{system_message}\n\n"
f"Role, Industry, Employer and Summary of Job Ad: {role}\n"
f"Summary of your Education and Work Experience: {education}\n"
f"Why are you passionate about this job: {passion}\n"
f"Why do you feel you are a good fit for this job: {fit}\n"
f"Anecdotes: {anecdotes}\n"
)
messages = [{"role": "system", "content": enhanced_system_message}]
# Add conversation history
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Add the current user message
messages.append({"role": "user", "content": message})
# Generate the response
response = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
# Define the Gradio interface
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="You are a friendly Chatbot, a career coach and a talented copywriter. You are trying to help a user write a cover letter for a specific role, employer organization and job Ad - based on user input. Include tips if some items are missing.",
label="Instructions to Bot",
),
gr.Textbox(label="Role, Industry, Employer and Summary of Job Ad", placeholder="Describe the role, industry, employer and include a summary of the job Ad that you are applying to."),
gr.Textbox(
label="Education and Professional Experience",
placeholder="Provide a Summary of your Education and Professional Experience",
),
gr.Textbox(
label="Passion",
placeholder="Why are you Passionate about this Role and or Organization",
),
gr.Textbox(
label="Fit",
placeholder="Why are you a good fit for this role?",
),
gr.Textbox(label="Anecdotes", placeholder="Tell a few anecdotes from your career situations or key problems you solved in previous roles that may show that you will add great value to this organization"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
title="Cover Letter Writer!",
description="This Ai-powered App creates a customized cover letter to best suit a specific role, industry, employer and job ad. Based on your input. Powered by Hugging Face Inference, Design Thinking, and domain expertise. Expand Additional Inputs by clicking on the arrow, input more details about your education, work experience, skills and anecdotes that show your achievements and the value you bring, then enter a message describing what you need the assistant to do for you. Developed by wn. Disclaimer: AI makes mistakes. Use with caution and at your own risk!",
)
if __name__ == "__main__":
demo.launch()