import streamlit as st import google.generativeai as genai import os # ------------------------------------------------- # 1️⃣ UI – page setup # ------------------------------------------------- st.set_page_config(page_title="Python Code Reviewer 🤖", layout="centered") st.title("🐍 Python Code Reviewer 🤖") st.markdown( "### Paste your code and a short prompt – the AI will review it for you!" ) # ------------------------------------------------- # 2️⃣ Input fields # ------------------------------------------------- # API key (optional – fallback to hard‑coded key) api_key_input = st.text_input( "🔑 Google API Key (optional – leave blank to use the built‑in key)", type="password", help="Enter your own Gemini API key if you have one. Otherwise the app uses the default key." ) # System prompt (optional – fallback to env var or default) sys_prompt_input = st.text_input( "🗒️ System Prompt (optional)", placeholder="e.g., 'You are a friendly Python code reviewer.'", help="Custom instructions for the model. If left empty, the USER_PROMPT env var is used." ) # Code to be reviewed code_box = st.text_area( "💻 Your Python code:", height=200, placeholder="# Paste your Python code here" ) # What the model should do with the code prompt_box = st.text_area( "📝 What should the AI do with this code?", height=80, placeholder="e.g., 'Find bugs and suggest improvements.'" ) # ------------------------------------------------- # 3️⃣ Main logic – run when button pressed # ------------------------------------------------- if st.button("🚀 Review"): # ---- Validate input ---- if not code_box.strip(): st.warning("⚠️ Please paste some Python code.") st.stop() # ---- Choose API key ---- # User‑provided key > hard‑coded fallback api_key = api_key_input.strip() or "AIzaSyBiAW2GQLid0HGe9Vs_ReKwkwsSVNegNzs" genai.configure(api_key=api_key) # ---- Choose system instruction ---- # User input > env var > generic default system_instruction = ( sys_prompt_input.strip() or os.getenv("USER_PROMPT") or "You are a helpful Python code reviewer." ) # ---- Initialise model ---- model = genai.GenerativeModel( model_name="models/gemini-2.5-flash", system_instruction=system_instruction, ) # ---- Build the user message ---- user_message = ( f"Code:\n```python\n{code\_box}\n```\n\n" f"Task: {prompt_box or 'Review the code.'}" ) # ---- Call Gemini ---- with st.spinner("Analyzing your code... 🧐"): response = model.generate_content(user_message) # ---- Show result ---- st.markdown("### 🤖 Response") st.success(response.text) # ------------------------------------------------- # 4️⃣ Footer # ------------------------------------------------- st.markdown("---") st.markdown("🛠️ **Built with Streamlit & Google Gemini AI** | ❤️ _Happy Coding!_ 🐍")