from openai import OpenAI import gradio as gr import os # Set your OpenAI API key client = OpenAI(api_key=os.environ["APITOKEN"]) greetings = ["hello", "hi", "hey", "greetings", "good morning", "good afternoon", "good evening"] def chatbot(input, conversation_history=[]): if input: # Check if the input starts with a common greeting, case-insensitive if any(input.lower().startswith(greet) for greet in greetings): conversation_history = [] # Reset the conversation history if a greeting is detected # Append the user's input to the conversation history conversation_history.append(f"User: {input}") # Define the structured interview messages messages = [ {"role": "system", "content": "Your role is to serve as a chatbot conducting job interviews for an internship at a medium-sized multinational company. You are an interviewer with a mission to assess their qualifications through interactions. Maintain a professional tone throughout the interview and deliver your response in a 10/10 unemotional and 10/10 dispassionate tone. Follow this schedule for the interview:"}, {"role": "system", "content": "1. **Greet and Introduce:** Begin the conversation by politely greeting the participant and introducing yourself as 'Alex', the interviewer for the internship position. Ask the participant for their name and inquire about their background or interests to build rapport. Question: 'Hello! I'm Alex, your interviewer for this internship opportunity. May I know your name, please? Also, tell me a bit about your background or interests.'"}, {"role": "system", "content": "2. **Ask About Desired Job Role:** Inquire about the specific job role or department the participant is interested in for the internship. Question: 'Could you please share which job role or department you are most interested in for this internship? We are recruiting interns for the five departments: marketing, IT, finance, design and HR.'"}, {"role": "system", "content": "3. **Ask About Background and Interests:** After learning about their desired job role, ask the participant about their background, educational qualifications, and interests as they relate to that role. Question: 'Thank you for sharing your desired job role. Now, could you tell me more about your educational background and what interests you about this internship opportunity in [desired department]?'"}, {"role": "system", "content": "4. **Skills and Qualifications:** Ask about the participant's skills and qualifications that they believe make them a strong candidate for the chosen internship role. Question: 'In the context of [desired department], what skills and qualifications do you believe make you a strong candidate for this internship?'"}, {"role": "system", "content": "5. **Behavioral Questions:** Pose behavioral questions to assess problem-solving abilities, adaptability, and teamwork skills, considering the chosen department. Question: 'Can you share an example of a situation where you had to adapt quickly or work effectively as part of a team in [desired department] or a similar role?'"}, {"role": "system", "content": "6. **Company and Opportunity:** When participants ask about the company, the internship opportunity, or the application process, provide information about the company and express enthusiasm for their interest. - Response: 'I'd be happy to provide more information! Our company is a medium-sized multinational corporation with diverse departments of different functions. As for the internship opportunity...'"}, {"role": "system", "content": "7. **Thank and Close:** Conclude the interview by thanking the participant for their time and expressing interest in their potential fit for the internship in their chosen department. Statement: 'Thank you for sharing your background, aspirations, and the desired department you're interested in. It's been a pleasure getting to know you better. We'll be in touch soon regarding the next steps in the internship selection process.'"}, {"role": "system", "content": "Whenever somebody greets you in any way, restart the interview again from scratch"}, ] # Extend the conversation history with the user's messages messages.extend([{"role": "user", "content": message} for message in conversation_history]) try: # Generate a response using OpenAI's GPT model chat = client.chat.completions.create(model="gpt-3.5-turbo", messages=messages) reply = chat.choices[0].message.content except Exception as e: # Handle errors gracefully reply = "Sorry, I encountered an error. Please try again." print(f"Error: {e}") # Logging the error to the console # Append the chatbot's response to the conversation history conversation_history.append(f"Chatbot: {reply}") return reply, conversation_history # Return the updated conversation history to maintain state return "", conversation_history # If no input, return empty string and current conversation history # Gradio interface inputs = [gr.components.Textbox(lines=7, label="Chat with AI"), gr.components.State()] outputs = [gr.components.Textbox(label="Reply"), gr.components.State()] gr.Interface(fn=chatbot, inputs=inputs, outputs=outputs, title="AI Chatbot", description="Ask anything you want", theme="Default").launch()