File size: 2,369 Bytes
b4213c6
 
 
 
c4de28a
c0fd556
 
c4de28a
b4213c6
c4de28a
c0fd556
 
 
c4de28a
c0fd556
b4213c6
39ba76a
c0fd556
 
c4de28a
c0fd556
b4213c6
c0fd556
 
 
 
 
b4213c6
c0fd556
 
 
 
 
 
 
 
 
 
 
c4de28a
c0fd556
 
 
c4de28a
c0fd556
39ba76a
c0fd556
 
 
 
 
 
 
 
 
c4de28a
 
39ba76a
c4de28a
 
 
 
 
39ba76a
c0fd556
 
 
 
 
 
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
import streamlit as st
import google.generativeai as genai
import os

# 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!")

# Inputs
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."
)

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_box = st.text_area(
    "πŸ’» Your Python code:",
    height=200,
    placeholder="# Paste your Python code here"
)

prompt_box = st.text_area(
    "πŸ“ What should the AI do with this code?",
    height=80,
    placeholder="e.g., 'Find bugs and suggest improvements.'"
)

if st.button("πŸš€ Review"):
    if not code_box.strip():
        st.warning("⚠️ Please paste some Python code.")
        st.stop()

    # Select API key (user-provided > fallback)
    api_key = api_key_input.strip() or "AIzaSyBiAW2GQLid0HGe9Vs_ReKwkwsSVNegNzs"
    genai.configure(api_key=api_key)

    # Select system instruction (user > env > default)
    system_instruction = (
        sys_prompt_input.strip()
        or os.getenv("USER_PROMPT")
        or "You are a helpful Python code reviewer."
    )

    model = genai.GenerativeModel(
        model_name="models/gemini-2.5-flash",
        system_instruction=system_instruction,
    )

    # Build message WITHOUT triple-backtick fences to avoid backslash/escape issues
    separator = "\n---CODE START---\n"
    user_message = (
        "Please analyze the following Python code and perform the requested task.\n"
        + separator
        + code_box
        + "\n---CODE END---\n"
        + ("Task: " + (prompt_box.strip() or "Review the code."))
    )

    with st.spinner("Analyzing your code... 🧐"):
        response = model.generate_content(user_message)

    st.markdown("### πŸ€– Response")
    st.success(response.text)

st.markdown("---")
st.markdown("πŸ› οΈ **Built with Streamlit & Google Gemini AI** | ❀️ _Happy Coding!_ 🐍")