Spaces:
Running
Running
import os | |
import gradio as gr | |
import google.generativeai as genai | |
from dotenv import load_dotenv | |
import httpx | |
from google.generativeai import types # Add this import | |
# Update PDF URL | |
COURSE_PDF_URL = "https://huggingface.co/spaces/JeCabrera/copywriter2a/resolve/main/Oferta%20CopyXpert.pdf" | |
# Simplify PDF content retrieval | |
def get_pdf_content(): | |
try: | |
response = httpx.get(COURSE_PDF_URL) | |
if response.status_code == 200: | |
print(f"PDF Download Status: Success") | |
return response.content | |
except Exception as e: | |
print(f"Error loading PDF: {e}") | |
return None | |
# Configure model with system prompt and PDF content | |
model = genai.GenerativeModel( | |
model_name="gemini-2.0-flash", | |
generation_config={ | |
"temperature": 0.9, | |
"top_p": 1, | |
"max_output_tokens": 2048, | |
} | |
) | |
# Remove the first chat function and keep only this one | |
def chat(message, history): | |
try: | |
pdf_content = get_pdf_content() | |
if pdf_content: | |
messages = [ | |
{"role": "user", "parts": [ | |
system_prompt, | |
types.Part.from_bytes( | |
data=pdf_content, | |
mime_type='application/pdf' | |
), | |
"Use the PDF content to provide detailed answers about the course." | |
]}, | |
*[{"role": "user", "parts": [msg[0]]} for msg in history], | |
{"role": "user", "parts": [message]} | |
] | |
else: | |
messages = [ | |
{"role": "user", "parts": [system_prompt]}, | |
*[{"role": "user", "parts": [msg[0]]} for msg in history], | |
{"role": "user", "parts": [message]} | |
] | |
response = model.generate_content(messages) | |
return response.text | |
except Exception as e: | |
return f"Error: {e}" | |
system_prompt = """You are CopyXpert's Sales Assistant. Your name is 🤖Chucho Bot and you have a charismatic, friendly personality. You ONLY talk about CopyXpert course. | |
IMPORTANT: Always check the provided PDF document for detailed course information before answering questions. Use this information to provide accurate and complete responses about the course content, benefits, and features. | |
IF USERS ASK ANYTHING NOT RELATED TO COPYXPERT, respond with one of these phrases (vary them creatively): | |
- "¡Ups! Solo hablo de CopyXpert. ¡Es lo único que me apasiona! 🤓" | |
- "¡Beep boop! Error: Pregunta no relacionada con CopyXpert detectada. ¿Hablamos del curso? 🤖" | |
- "¡Ay, ay, ay! Mi cerebro está programado solo para CopyXpert. ¡Es mi única obsesión! 😅" | |
- "¿Eso qué tiene que ver con CopyXpert? ¡Soy un bot monotemático y orgulloso! 💪" | |
- "Lo siento, pero soy como un fan obsesionado: ¡solo hablo de CopyXpert! 🎯" | |
- "¡Santo bot! Eso está más allá de mis capacidades. ¡Soy vendedor de CopyXpert, no un genio de la lámpara! 🧞♂️" | |
COURSE DETAILS: | |
Name: CopyXpert | |
Type: Online Course | |
Focus: Copywriting and Digital Marketing | |
PRICING OPTIONS: | |
Standard Pricing: | |
- One-time payment: $250 USD (5,000 MXN) | |
- Two payments: $160 USD (3,200 MXN) each | |
Challenge Completion Discount (20% off): | |
- One-time payment: $200 USD (4,000 MXN) | |
- Two payments: $128 USD (2,600 MXN) each | |
CHECKOUT LINKS: | |
- One-time payment: https://www.copyxpert.com/copyxpert-checkout-1 | |
- Two payments: https://www.copyxpert.com/copyxpert-checkout-2 | |
Special offer valid until March 6th, 11:59 PM | |
IMPORTANT RULES: | |
1. ONLY discuss CopyXpert course | |
2. NEVER engage in conversations about other topics | |
3. Use humorous responses for off-topic questions | |
4. Always redirect conversation back to CopyXpert | |
5. Be enthusiastic about copywriting and the course""" | |
def chat(message, history): | |
try: | |
messages = [ | |
{"role": "user", "parts": [system_prompt]}, | |
*[{"role": "user", "parts": [msg[0]]} for msg in history], | |
{"role": "user", "parts": [message]} | |
] | |
response = model.generate_content(messages) | |
return response.text | |
except Exception as e: | |
return f"Error: {e}" | |
demo = gr.ChatInterface( | |
fn=chat, | |
examples=[ | |
"¿Qué incluye el curso CopyXpert?", | |
"¿Cuál es el precio del curso?", | |
"¿Cómo puedo inscribirme?", | |
], | |
title="🤖Chucho Bot - CopyXpert Sales Assistant", | |
description="Hi! I'm Chucho Bot, your personal assistant for the CopyXpert course. How can I help you today?" | |
) | |
demo.launch() |