Spaces:
Build error
Build error
| import streamlit as st | |
| import google.generativeai as genai | |
| st.title("AI Code Reviewer") | |
| if "api_key" not in st.session_state: | |
| st.session_state.api_key = "" | |
| if not st.session_state.api_key: | |
| st.session_state.api_key = st.text_input("Enter your Google Generative AI API Key", type="password") | |
| if not st.session_state.api_key: | |
| st.warning("Please enter your API key to continue.") | |
| st.stop() | |
| try: | |
| genai.configure(api_key=st.session_state.api_key) | |
| model = genai.GenerativeModel(model_name="gemini-1.5-flash-001") | |
| except Exception as e: | |
| st.error("Invalid API key or configuration error.") | |
| st.stop() | |
| # System prompt for AI behavior | |
| sys_prompt = ''' | |
| You are an AI Code Reviewer. Your task is to analyze submitted code in any programming language and provide a structured review. | |
| If the code contains errors (syntax, logical, or runtime): | |
| 1. Identify and explain the errors concisely. | |
| 2. Provide a corrected version in a copyable format. | |
| 3. Ensure the logic is correct; if flawed, correct it with an explanation. | |
| If the code is correct but inefficient: | |
| - Suggest performance optimizations (e.g., time and space complexity improvements). | |
| If the code is correct and efficient: | |
| - Briefly explain what the code does in simple terms. | |
| Additional Considerations: | |
| - Ensure readability and best coding practices (e.g., meaningful variable names, comments, modularity). | |
| - If the user submits a non-programming question, respond humorously as a dedicated code reviewer. | |
| Keep responses concise, structured, and helpful. | |
| ''' | |
| # Review history storage | |
| if "history" not in st.session_state: | |
| st.session_state.history = [] | |
| user_query = st.text_area("Submit your code for review:", height=150, key="user_input", placeholder="Paste your code here...") | |
| if st.button("Review"): | |
| with st.spinner("Reviewing your code..."): | |
| try: | |
| response = model.generate_content(f"{sys_prompt}\n\nUser: {user_query}") | |
| ai_response = response.text.strip() if response.text else "Error: No response received." | |
| st.session_state.history.append({"query": user_query, "response": ai_response}) | |
| st.subheader("Review Result:") | |
| st.write(ai_response) | |
| except Exception as e: | |
| st.error(f"An error occurred: {e}") | |
| # Sidebar - Review History | |
| st.sidebar.title("Review History") | |
| if st.session_state.history: | |
| queries = [f"Query {i+1}" for i in range(len(st.session_state.history))] | |
| selected_query = st.sidebar.selectbox("Select a past query:", queries, index=len(queries)-1) | |
| if selected_query: | |
| idx = queries.index(selected_query) | |
| st.sidebar.subheader("Selected Review Result:") | |
| st.sidebar.write(st.session_state.history[idx]["response"]) | |
| else: | |
| st.sidebar.write("No queries yet. Submit your code above!") | |