Chatbot2.0 / app.py
ashutoshzade's picture
Update app.py
acb5b80 verified
import gradio as gr
from huggingface_hub import InferenceClient
"""
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
"""
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
def login_screen():
username = gr.Textbox("Username: ").value
password = gr.Textbox("Password: ", type="password").value
if username == "admin" and password == "pass1234":
return None # Login successful, no output
else:
return "Incorrect credentials. Please try again."
def chat(message):
if not hasattr(chat, 'authorized'):
chat.authorized = None # Flag for login status
if chat.authorized is None:
response = login_screen()
if response is None:
chat.authorized = True
return "Welcome! How can I help you generate a job description?"
else:
return response
else:
# Call the actual job description generation function
return generate_job_description(message, max_tokens, temperature, top_p)
def generate_job_description(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
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
"""
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
"""
demo = gr.ChatInterface(
generate_job_description,
additional_inputs=[
gr.Textbox(value="You are an expert in generating job descriptions.", label="System message"),
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="Job Description Generator expert!",
description="This agent generates job description based upon input text below. Be clear and concise on the role, level, expectations, starting salary, etc. for the position. Happy finding the right talent. ",
analytics_enabled=True
)
if __name__ == "__main__":
demo.launch()