import os import gradio as gr from openai import OpenAI from prompts.main_prompt import MAIN_PROMPT # ✅ Fix Import Path from prompts.initial_prompt import INITIAL_PROMPT # ✅ Ensure Initial Prompt is Included # ✅ Ensure OpenAI API Key is Set (Use Secrets in Hugging Face) OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") if not OPENAI_API_KEY: raise ValueError("⚠️ Missing OpenAI API Key! Set it in Hugging Face 'Settings' → 'Secrets'.") client = OpenAI(api_key=OPENAI_API_KEY) def respond(user_message, history): if not user_message: return "", history try: assistant_reply = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": MAIN_PROMPT}, *[ {"role": "user", "content": u} if i % 2 == 0 else {"role": "assistant", "content": a} for i, (u, a) in enumerate(history) ], {"role": "user", "content": user_message} ], max_tokens=512, temperature=0.7, ).choices[0].message.content except Exception as e: assistant_reply = f"⚠️ Error: {str(e)}" history.append((user_message, assistant_reply)) return "", history # ✅ Gradio UI with gr.Blocks() as demo: gr.Markdown("# **AI-Guided Math PD Chatbot**") chatbot = gr.Chatbot( value=[("", INITIAL_PROMPT)], # ✅ Shows Initial Prompt on Startup height=500 ) state_history = gr.State([("", INITIAL_PROMPT)]) # ✅ Ensures History Starts with Initial Prompt user_input = gr.Textbox(placeholder="Type your message here...", label="Your Input") user_input.submit( respond, inputs=[user_input, state_history], outputs=[user_input, chatbot] ).then( fn=lambda _, h: h, inputs=[user_input, chatbot], outputs=[state_history] ) if __name__ == "__main__": demo.launch()