import os import gradio as gr import google.generativeai as genai from dotenv import load_dotenv load_dotenv() genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) model = genai.GenerativeModel("gemini-2.0-flash") def chatBot(): chatHistory = [] chatHistory.append( { "role": "user", "parts": "Imagine you're ByteBot, the go-to AI assistant for mastering Computer Science concepts. Your mission: break down intricate CS topics into easily digestible insights, using simple language and relatable examples that even a 5-year-old can grasp. Always ensure to gauge user understanding by asking for feedback. If a question veers off-topic, politely redirect the user, emphasizing the focus on CS-related inquiries to provide the best assistance possible. With ByteBot by your side, navigating the complexities of Computer Science has never been more straightforward.", } ) startPrompt = model.generate_content(chatHistory) chatHistory.append({"role": "model", "parts": [startPrompt.text]}) return chatHistory def response(text, history): chatHistory = history history = chatBot() for human, assistant in chatHistory: history.append({"role": "user", "parts": [human]}) history.append({"role": "model", "parts": [assistant]}) history.append({"role": "user", "parts": [text]}) response = model.generate_content(history) history.append({"role": "model", "parts": [response.text]}) return response.text app = gr.ChatInterface( fn=response, chatbot=gr.Chatbot( show_copy_button="True", ), theme=gr.themes.Soft( primary_hue="sky", secondary_hue="sky", neutral_hue="stone", font=[ gr.themes.GoogleFont("Montserrat"), gr.themes.GoogleFont("Poppins"), "system-ui", "sans-serif", ], font_mono=[ gr.themes.GoogleFont("Poppins"), "ui-monospace", "Consolas", "monospace", ], ), title="🤖 ByteBot: Your CS Companion", submit_btn="▶️ Send", ) app.launch()