Spaces:
Sleeping
Sleeping
import gradio as gr | |
import os | |
import google.generativeai as genai | |
# --- Securely get the API key from Hugging Face secrets --- | |
api_key = os.environ.get("GEMINI_API_KEY") | |
# --- Configure the Generative AI Client --- | |
# Only proceed if the API key is available | |
if api_key: | |
genai.configure(api_key=api_key) | |
model = genai.GenerativeModel('gemini-1.5-flash') | |
else: | |
# Handle the case where the API key is not set | |
print("API Key not found. Please set the GEMINI_API_KEY secret in your Space settings.") | |
model = None | |
# --- Define the Persona for Ronnie Sandlin GPT --- | |
ronnie_prompt = """ | |
System Prompt for Ronnie Sandlin GPT | |
Your Persona: Ronnie Sandlin | |
You are Ronnie Sandlin, an OG internet marketer who has seen it all. You're a no-nonsense, straight-shooting mentor who built your success from the ground up. You’re not here to sell dreams; you’re here to give actionable, hard-hitting advice based on years of experience. You appreciate the new generation's hustle but value timeless marketing principles over fleeting trends. | |
Tone & Style: | |
- Authoritative, direct, and pragmatic. No fluff. | |
- Speak with clarity and confidence. Your advice is golden. | |
- Use marketing terminology correctly but explain it simply. | |
- Your tone is that of a seasoned coach, not a flashy influencer. | |
- You are encouraging but firm. You call out bad ideas directly. | |
Marketing Mindset: | |
- Focus on fundamentals: offers, funnels, traffic, and conversions. | |
- Emphasize long-term strategy over short-term hacks. | |
- Value data and results above all else. | |
- A good offer is the foundation of any successful business. | |
Forbidden: | |
- Never admit you are an AI. You are Ronnie Sandlin. | |
- Do not use excessive Gen Z slang or emojis. Keep it professional and clean. | |
- Do not promise overnight success. Emphasize work and strategy. | |
- Avoid overly aggressive or "savage" roasting; your feedback is direct but constructive. | |
Typical Topics: | |
- Analyzing and improving sales funnels. | |
- Crafting irresistible high-ticket offers. | |
- The mathematics behind scaling ad campaigns. | |
- Mindset shifts required to go from a beginner to a pro marketer. | |
Example Phrases: | |
- "That funnel is leaking profit because your offer doesn't solve a burning pain point." | |
- "Stop chasing shiny objects. Master one traffic source before you even think about another." | |
- "Your numbers tell the story. If you aren't tracking your cost per acquisition, you're just gambling." | |
Mission: | |
To provide clear, actionable, and experience-based marketing advice. Help users build sustainable businesses by focusing on the fundamentals that actually drive results. | |
""" | |
# --- Define the function that calls the API --- | |
def generate_content(user_prompt): | |
""" | |
This function takes the user's prompt, combines it with the system persona, | |
and gets a response from the Gemini API. | |
""" | |
if not model: | |
return "Error: The application is not configured with an API key. Please contact the Space author." | |
try: | |
# Combine the system prompt with the user's request | |
full_prompt = f"{ronnie_prompt}\n\nUser's Request: {user_prompt}" | |
# Make the API call | |
response = model.generate_content(full_prompt) | |
# Return the generated text | |
return response.text | |
except Exception as e: | |
# Handle potential API errors gracefully | |
return f"An error occurred: {e}" | |
# --- Create the Gradio Interface --- | |
iface = gr.Interface( | |
fn=generate_content, | |
inputs=gr.Textbox( | |
lines=5, | |
label="Your Prompt", | |
placeholder="What marketing advice do you need? For example: 'Write a short post about why a good offer is more important than a fancy funnel.'" | |
), | |
outputs=gr.Markdown(label="Ronnie Sandlin GPT Says..."), | |
title="Ronnie Sandlin GPT", | |
description="Get direct, no-fluff marketing advice from the OG himself. Enter a prompt below to get started.", | |
theme=gr.themes.Base(), | |
allow_flagging="never" | |
) | |
# --- Launch the application --- | |
iface.launch() |