Spaces:
Sleeping
Sleeping
File size: 3,051 Bytes
b4213c6 39ba76a c0fd556 39ba76a b4213c6 39ba76a c0fd556 39ba76a c0fd556 b4213c6 39ba76a c0fd556 39ba76a c0fd556 b4213c6 39ba76a c0fd556 b4213c6 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 39ba76a c0fd556 b4213c6 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 91 92 | 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!_ 🐍")
|