Spaces:
Sleeping
Sleeping
| 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() |