Spaces:
Sleeping
Sleeping
| # # app.py (Advanced Design for VoltAIon - AI Chatbot) | |
| # import gradio as gr | |
| # import os | |
| # import requests | |
| # # API Setup | |
| # API_KEY = os.getenv("AIML_API_KEY") | |
| # API_URL = "https://api.aimlapi.com/v1/chat/completions" | |
| # # Keep conversation history | |
| # chat_history = [] | |
| # def query_gpt5(user_input): | |
| # global chat_history | |
| # if not API_KEY: | |
| # return [("System", "β οΈ API Key not set. Please set AIML_API_KEY in secrets.")] | |
| # headers = {"Authorization": f"Bearer {API_KEY}"} | |
| # messages = [{"role": "system", "content": "You are an expert assistant for battery materials and sustainable energy."}] | |
| # # Append conversation history | |
| # for role, content in chat_history: | |
| # messages.append({"role": role, "content": content}) | |
| # messages.append({"role": "user", "content": user_input}) | |
| # data = {"model": "openai/gpt-4o", "messages": messages} | |
| # try: | |
| # response = requests.post(API_URL, headers=headers, json=data) | |
| # response.raise_for_status() | |
| # resp_json = response.json() | |
| # if "choices" in resp_json: | |
| # bot_reply = resp_json["choices"][0]["message"]["content"] | |
| # chat_history.append(("user", user_input)) | |
| # chat_history.append(("assistant", bot_reply)) | |
| # return [(u, a) for u, a in chat_history if u != "system"] | |
| # elif "error" in resp_json: | |
| # return [("System", f"β Error: {resp_json['error']}")] | |
| # else: | |
| # return [("System", f"Unexpected API response: {resp_json}")] | |
| # except Exception as e: | |
| # return [("System", f"β οΈ API request failed: {e}")] | |
| # # Reset chat | |
| # def reset_chat(): | |
| # global chat_history | |
| # chat_history = [] | |
| # return [] | |
| # # Gradio UI with chat style | |
| # with gr.Blocks(theme=gr.themes.Soft(primary_hue="green", secondary_hue="emerald")) as demo: | |
| # with gr.Row(): | |
| # with gr.Column(scale=1): | |
| # gr.Markdown( | |
| # """ | |
| # # β‘ VoltAIon - AI Research Assistant | |
| # π€ *Your Sustainable Energy & Battery Materials Expert* | |
| # --- | |
| # Ask any question about **battery chemistry, EV storage, lithium-ion, or renewable energy solutions.** | |
| # """) | |
| # clear_btn = gr.Button("π Reset Chat", variant="secondary") | |
| # with gr.Column(scale=2): | |
| # chatbot = gr.Chatbot(label="VoltAIon Chat", height=500, bubble_full_width=False, show_copy_button=True) | |
| # user_input = gr.Textbox(placeholder="Type your question here...", label="Your Question") | |
| # submit_btn = gr.Button("π Ask AI", variant="primary") | |
| # submit_btn.click(query_gpt5, inputs=user_input, outputs=chatbot) | |
| # user_input.submit(query_gpt5, inputs=user_input, outputs=chatbot) | |
| # clear_btn.click(reset_chat, outputs=chatbot) | |
| # # Launch for Hugging Face | |
| # if __name__ == "__main__": | |
| # demo.launch() | |
| # app.py (Fixed VoltAIon - AI Chatbot) | |
| import gradio as gr | |
| import os | |
| import requests | |
| # β Directly add your API key here for testing (replace with your key) | |
| API_KEY = os.getenv("AIML_API_KEY") or "YOUR_API_KEY_HERE" | |
| API_URL = "https://api.aimlapi.com/v1/chat/completions" | |
| # Keep conversation history | |
| chat_history = [] | |
| def query_gpt5(user_input): | |
| global chat_history | |
| if not API_KEY: | |
| return [("System", "β οΈ API Key not set. Please set AIML_API_KEY in secrets.")] | |
| headers = {"Authorization": f"Bearer {API_KEY}"} | |
| messages = [{"role": "system", "content": "You are an expert assistant for battery materials and sustainable energy."}] | |
| # Append previous chat history | |
| for role, content in chat_history: | |
| messages.append({"role": role, "content": content}) | |
| messages.append({"role": "user", "content": user_input}) | |
| data = {"model": "openai/gpt-4o", "messages": messages} | |
| try: | |
| response = requests.post(API_URL, headers=headers, json=data, timeout=20) | |
| response.raise_for_status() | |
| resp_json = response.json() | |
| if "choices" in resp_json and len(resp_json["choices"]) > 0: | |
| bot_reply = resp_json["choices"][0]["message"]["content"] | |
| chat_history.append(("user", user_input)) | |
| chat_history.append(("assistant", bot_reply)) | |
| return chat_history | |
| elif "error" in resp_json: | |
| return [("System", f"β Error: {resp_json['error']}")] | |
| else: | |
| return [("System", f"Unexpected API response: {resp_json}")] | |
| except requests.exceptions.RequestException as e: | |
| return [("System", f"β οΈ API request failed: {e}")] | |
| # Reset chat | |
| def reset_chat(): | |
| global chat_history | |
| chat_history = [] | |
| return [] | |
| # Gradio UI | |
| with gr.Blocks(theme=gr.themes.Soft(primary_hue="green", secondary_hue="emerald")) as demo: | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| gr.Markdown( | |
| """ | |
| # β‘ VoltAIon - AI Research Assistant | |
| π€ *Your Sustainable Energy & Battery Materials Expert* | |
| --- | |
| Ask any question about **battery chemistry, EV storage, lithium-ion, or renewable energy solutions.** | |
| """ | |
| ) | |
| clear_btn = gr.Button("π Reset Chat", variant="secondary") | |
| with gr.Column(scale=2): | |
| chatbot = gr.Chatbot(label="VoltAIon Chat", height=500, bubble_full_width=False, show_copy_button=True) | |
| user_input = gr.Textbox(placeholder="Type your question here...", label="Your Question") | |
| submit_btn = gr.Button("π Ask AI", variant="primary") | |
| submit_btn.click(query_gpt5, inputs=user_input, outputs=chatbot) | |
| user_input.submit(query_gpt5, inputs=user_input, outputs=chatbot) | |
| clear_btn.click(reset_chat, outputs=chatbot) | |
| if __name__ == "__main__": | |
| demo.launch() | |