Spaces:
Sleeping
Sleeping
File size: 3,026 Bytes
b4213c6 39ba76a c0d7296 39ba76a c0fd556 39ba76a b4213c6 39ba76a c0d7296 39ba76a c0d7296 c0fd556 c0d7296 c0fd556 b4213c6 c0d7296 39ba76a c0fd556 c0d7296 c0fd556 b4213c6 39ba76a c0fd556 b4213c6 39ba76a c0fd556 39ba76a c0d7296 39ba76a c0fd556 c0d7296 c0fd556 c0d7296 c0fd556 c0d7296 c0fd556 39ba76a c0fd556 c0d7296 c0fd556 c0d7296 39ba76a c0fd556 c0d7296 c0fd556 c0d7296 c0fd556 b4213c6 39ba76a c0d7296 39ba76a b4213c6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | import streamlit as st
import google.generativeai as genai
import os
# -------------------------------------------------
# 1️⃣ Page configuration
# -------------------------------------------------
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
# -------------------------------------------------
# Optional API key – falls back to the 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 default key is used."
)
# Optional system prompt – falls back to env var or a generic 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."
)
# 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 (runs on button press)
# -------------------------------------------------
if st.button("🚀 Review"):
# ---- Validate that code was provided ----
if not code_box.strip():
st.warning("⚠️ Please paste some Python code.")
st.stop()
# ---- Choose API key (user‑provided > fallback) ----
api_key = api_key_input.strip() or "AIzaSyBiAW2GQLid0HGe9Vs_ReKwkwsSVNegNzs"
genai.configure(api_key=api_key)
# ---- Choose system instruction (user input > env var > default) ----
system_instruction = (
sys_prompt_input.strip()
or os.getenv("USER_PROMPT")
or "You are a helpful Python code reviewer."
)
# ---- Initialise the Gemini model ----
model = genai.GenerativeModel(
model_name="models/gemini-2.5-flash",
system_instruction=system_instruction,
)
# ---- Build the message sent to Gemini ----
user_message = (
f"Code:\n```python\n{code\_box}\n```\n\n"
f"Task: {prompt_box or 'Review the code.'}"
)
# ---- Generate the response ----
with st.spinner("Analyzing your code... 🧐"):
response = model.generate_content(user_message)
# ---- Display the result ----
st.markdown("### 🤖 Response")
st.success(response.text)
# -------------------------------------------------
# 4️⃣ Footer
# -------------------------------------------------
st.markdown("---")
st.markdown("🛠️ **Built with Streamlit & Google Gemini AI** | ❤️ _Happy Coding!_ 🐍")
|