File size: 5,514 Bytes
1fa7f84
ef88df6
ad939fe
ef88df6
 
14cf3da
f66a86e
58e0b8a
 
14cf3da
ef88df6
58e0b8a
 
 
14cf3da
ef88df6
 
ed5083b
14cf3da
ef88df6
ed5083b
 
 
 
 
 
 
 
 
70806ec
14cf3da
 
ef88df6
ed5083b
70806ec
 
 
 
 
 
 
 
 
ef88df6
 
ed5083b
14cf3da
 
 
f66a86e
14cf3da
 
 
f66a86e
ed5083b
f73eba6
70806ec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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()