from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer import gradio as gr model_name = "TinyLlama/TinyLlama-1.1B-Chat-v1.0" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) text_generator = pipeline("text-generation", model=model, tokenizer=tokenizer) def interview_chatbot(user_input, task): """ Handles interview-specific chatbot tasks. Parameters: - user_input: str, the input text from the user. - task: str, the type of task (e.g., "Behavioral Question", "Technical Question", "General Advice"). Returns: - str: The generated response. """ if task == "Behavioral Question": prompt = f"You are an interview coach. Provide a strong response to the following behavioral question:\n{user_input}\nSuggested Response:" elif task == "Technical Question": prompt = f"You are a technical interview expert. Answer the following technical question clearly and concisely:\nQuestion: {user_input}\nAnswer:" elif task == "General Advice": prompt = f"You are an interview expert. Provide advice for the following situation:\n{user_input}\nAdvice:" else: return "Invalid task selected." response = text_generator( prompt, max_length=200, num_return_sequences=1, pad_token_id=tokenizer.eos_token_id, temperature=0.7, top_p=0.9 )[0]["generated_text"] return response[len(prompt):].strip() def gradio_interface(user_input, task): """ Interface function for Gradio integration. """ if not user_input.strip(): return "Please enter some input." return interview_chatbot(user_input, task) with gr.Blocks(theme=gr.themes.Monochrome()) as interview_chat_ui: gr.Markdown( """ # ๐ŸŒŸ Interview Preparation Chatbot Welcome to your personal interview preparation assistant! This chatbot can help you tackle: - **Behavioral Questions**: Practice with confidence. - **Technical Questions**: Get clear and concise explanations. - **General Advice**: Learn how to ace your interviews. """, elem_id="main_header", ) with gr.Row(): with gr.Column(): gr.Markdown( """### ๐ŸŽฏ Enter your query and select the task type:""", elem_id="sub_header", ) user_input = gr.Textbox( lines=5, placeholder="Enter your question or situation here...", label="Your Input", elem_id="input_box", ) task = gr.Radio( ["Behavioral Question", "Technical Question", "General Advice"], label="Select Task", elem_id="task_selector", ) submit_button = gr.Button("โœจ Get Response", elem_id="submit_button") with gr.Column(): gr.Markdown( """### ๐Ÿ’ก Chatbot Response:""", elem_id="response_header", ) output = gr.Textbox( lines=10, label="Response", interactive=False, elem_id="output_box", ) submit_button.click(gradio_interface, inputs=[user_input, task], outputs=output) clear_button = gr.Button("๐Ÿงน Clear All", elem_id="clear_button") clear_button.click(lambda: ("", ""), None, [user_input, output]) gr.Markdown( """ --- **Tip**: Practice regularly to build confidence and improve your interview skills! ๐Ÿš€ """, elem_id="footer_text", ) interview_chat_ui.launch()