Spaces:
Sleeping
Sleeping
| import openai | |
| import os | |
| import gradio as gr | |
| from dotenv import load_dotenv | |
| import io | |
| from PIL import Image | |
| # Load environment variables (where your OpenAI key will be stored) | |
| load_dotenv() | |
| # Load the OpenAI API key from environment variables | |
| openai.api_key = os.getenv("OPENAI_API_KEY").strip() | |
| # Function to analyze the ad image (text analysis with GPT-4) | |
| def analyze_ad(image): | |
| # Convert the image to bytes (you can keep this for future multimodal capabilities) | |
| image_bytes = io.BytesIO() | |
| image.save(image_bytes, format='PNG') | |
| image_bytes = image_bytes.getvalue() | |
| # Placeholder: Using a simple prompt for text-based analysis (future multimodal support) | |
| prompt = """ | |
| This is an advertisement. Please generate a marketing persona based on this ad and provide scores (out of 10) on the following: | |
| 1. Relevance to Target Audience | |
| 2. Emotional Engagement | |
| 3. Brand Consistency | |
| 4. Creativity | |
| 5. Persuasiveness | |
| Explain your reasoning for each score and provide a final persona description. | |
| """ | |
| # Send the prompt to GPT-4-turbo for analysis | |
| response = openai.chat.completions.create( | |
| model="gpt-4-turbo", | |
| messages=[ | |
| {"role": "system", "content": "You are a marketing expert analyzing an advertisement."}, | |
| {"role": "user", "content": prompt} | |
| ], | |
| temperature=0.7, | |
| max_tokens=400 | |
| ) | |
| # Extract the response text from the API output | |
| result = response['choices'][0]['message']['content'] | |
| # Return the result for display | |
| return result | |
| # Function to process the image and run the analysis | |
| def upload_and_analyze(image): | |
| # Call the analyze_ad function to generate marketing insights | |
| result = analyze_ad(image) | |
| return result | |
| # Gradio interface for Hugging Face deployment | |
| iface = gr.Interface( | |
| fn=upload_and_analyze, | |
| inputs=gr.Image(type="pil", label="Upload Advertisement Image"), # Upload the ad image | |
| outputs=gr.Textbox(label="Marketing Persona and Ad Analysis"), | |
| title="Advertisement Persona and Scoring Analyzer", | |
| description="Upload an advertisement image and get a marketing persona along with scores for Relevance, Emotional Engagement, Brand Consistency, Creativity, and Persuasiveness." | |
| ) | |
| # Launch the app | |
| if __name__ == "__main__": | |
| iface.launch() | |