prompt-lab / app.py
hruday96's picture
Update app.py
6d829d8 verified
raw
history blame
3.94 kB
import streamlit as st
import google.generativeai as genai
import time
# βœ… Streamlit Page Configuration for Hugging Face Spaces
st.set_page_config(page_title="PromptLab - AI Prompt Enhancer", layout="wide")
st.title("⚑ PromptLab - AI Prompt Enhancer")
# βœ… Retrieve the API key from Hugging Face secrets
GOOGLE_API_KEY = st.secrets["GEMINI_API_KEY"]
genai.configure(api_key=GOOGLE_API_KEY)
# βœ… Define Shinobi and Raikage Prompt Frameworks
SHINOBI_PROMPT = """You are an advanced prompt enhancer, specializing in creating structured, high-clarity prompts that optimize LLM performance.
Your task is to refine a given prompt using the **Shinobi framework**, ensuring the following principles:
βœ… **Concise & High-Density Prompting** β†’ Remove fluff, keeping instructions clear and actionable (~250 words max).
βœ… **Explicit Role Definition** β†’ Assign a role to the AI for better contextual grounding.
βœ… **Step-by-Step Clarity** β†’ Break the task into structured sections, avoiding ambiguity.
βœ… **Defined Output Format** β†’ Specify the response format (JSON, CSV, list, structured text, etc.).
βœ… **Zero Conflicting Instructions** β†’ Ensure clarity in constraints (e.g., avoid β€œsimple yet comprehensive”).
βœ… **Optional: One-Shot Example** β†’ Add a single example where relevant to guide the AI.
### **Enhance the following prompt using Shinobi principles:**
**Original Prompt:**
{user_prompt}
**Enhanced Shinobi Prompt:**
"""
RAIKAGE_PROMPT = """You are an elite AI strategist, specializing in designing execution-focused prompts that maximize LLM efficiency.
Your task is to refine a given prompt using the **Raikage framework**, ensuring the following principles:
βœ… **Precision & Depth** β†’ Ensure expert-level guidance, reducing vagueness and ambiguity.
βœ… **Context & Execution Approach** β†’ Include a structured methodology to solve the problem.
βœ… **Defined Output Format** β†’ Specify exact structure (JSON, formatted text, markdown, tables, or code blocks).
βœ… **Edge Case Handling & Constraints** β†’ Account for potential failures and model limitations.
βœ… **Optional: Few-Shot Prompting** β†’ If beneficial, provide 1-2 high-quality examples for refinement.
βœ… **Complies with External Factors** β†’ Adhere to best practices (e.g., ethical scraping, security policies).
### **Enhance the following prompt using Raikage principles:**
**Original Prompt:**
{user_prompt}
**Enhanced Raikage Prompt:**
"""
# βœ… Streamlit UI Components
st.subheader("πŸ› οΈ Choose Your Enhancement Mode:")
mode = st.radio("Select a mode:", ["πŸŒ€ Shinobi", "⚑ Raikage"], horizontal=True)
user_prompt = st.text_area("✍️ Enter your prompt:", height=150)
# βœ… Button to Enhance Prompt
if st.button("πŸš€ Enhance Prompt"):
if not user_prompt.strip():
st.warning("⚠️ Please enter a prompt before enhancing!")
else:
with st.spinner("⚑ Enhancing your prompt... Please wait"):
time.sleep(1) # πŸ”„ Smooth UI transition
# Select the appropriate enhancement framework
if mode == "πŸŒ€ Shinobi":
full_prompt = SHINOBI_PROMPT.format(user_prompt=user_prompt)
else:
full_prompt = RAIKAGE_PROMPT.format(user_prompt=user_prompt)
# βœ… Call Gemini API to Enhance the Prompt
try:
model = genai.GenerativeModel('gemini-2.0-flash')
response = model.generate_content(full_prompt)
# βœ… Display Enhanced Prompt
st.subheader("✨ Enhanced Prompt:")
st.text_area("", response.text, height=200) # Read-only box
# βœ… Copy to Clipboard Button
st.code(response.text, language="markdown")
except Exception as e:
st.error(f"❌ API Error: {e}")