|
import os |
|
import gradio as gr |
|
import google.generativeai as genai |
|
from dotenv import load_dotenv |
|
import httpx |
|
from google.generativeai import types |
|
|
|
|
|
COURSE_PDF_URL = "https://huggingface.co/spaces/JeCabrera/copywriter2a/resolve/main/Oferta%20CopyXpert.pdf" |
|
|
|
|
|
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 |
|
|
|
|
|
model = genai.GenerativeModel( |
|
model_name="gemini-2.0-flash", |
|
generation_config={ |
|
"temperature": 0.9, |
|
"top_p": 1, |
|
"max_output_tokens": 2048, |
|
} |
|
) |
|
|
|
|
|
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() |