from openai import OpenAI import gradio as gr import os # Set your OpenAI API key client = OpenAI(api_key="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") 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 answer the questions from the users friendly. If they ask weird questions or input things you do not understand, just say: 'Sorry, this question is beyond my understanding. Please try another one!"}, ] # 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(share=True)