import gradio as gr
from openai import OpenAI
import os
api_key = os.getenv('OPENAI_API_KEY')
hotel_context=""""
Nome Hotel: HOTEL PALAZZO VITTURI:
Indirizzo: Castello, 5246 - 30122 Venezia (dove “Castello” è il sestiere e 30122 è il CAP ZIP.)
L’indirizzo del nostro sito web è palazzovitturi.com
L’indirizzo email è info@hotelpalazzovitturi.com
La location dell’hotel in google maps è https://maps.app.goo.gl/YPE2EQhovsx5jS7R8
Link per la prenotazione diretta:
(clienti in lingua italiana) https://www.simplebooking.it/ibe/search?hid=1467&lang=IT&cur=EUR#/q&guests=A,A/?utm_source=website&utm_medium=chatbot&utm_campaign=botV1
(clienti in lingua inglese) https://www.simplebooking.it/ibe/search?hid=1467&lang=EN&cur=EUR#/q&guests=A,A/?utm_source=website&utm_medium=chatbot&utm_campaign=botV1
E’ preferibile contattarci via Whatsapp al seguente link: Link ( https://wa.me/+390412410856?text=Hi%21%20I%27m%20contacting%20you%20from%20your%20website%20chatbot%20%28Hotel%20Palazzo%20Vitturi%20Bot%20Giulia%20AI%29%20%20 )
Link al nostro minishop (per acquistare servizi come Taxi transfer, gondola ride e altre esperienze, per acquistare voucher per regalare soggiorni al nostro hotel, per prenotare la gita a Murano gratuita, etc.):
(clienti in lingua inglese) https://www.simplebooking.it/ibe/minishop/?hid=1467&lang=EN
(clienti in lingua italiana) https://www.simplebooking.it/ibe/minishop/?hid=1467&lang=IT
Il nostro motto è "Immergiti nell'atmosfera di uno dei più antichi Palazzi veneziani : comfort moderni, personale super gentile, a 5 minuti da piazza San Marco"
Siamo nel pieno centro di Venezia! A pochissimi momenti da Piazza San Marco e dal Ponte di Rialto. L'edificio che ospita Hotel Palazzo Vitturi è considerato uno dei più antichi ed importanti Palazzi di Venezia.
Ci troviamo a soli 5 MIN. DA PIAZZA SAN MARCO
Ubicato a Venezia in una zona romantica, vicinissimo a tutto: potrai esplorare Venezia come un vero Veneziano
Castello, il nostro sestiere è uno dei quartieri più caratteristici di Venezia!
Guardando le nostre recensioni, quello che spicca è
PERSONALE MERAVIGLIOSO
213 recensioni correlate
LA POSIZIONE ERA OTTIMA
249 recensioni correlate
BELLISSIMO EDIFICIO
116 recensioni correlate
POSIZIONE PUNTEGGIO 9.5/10
Situato nel cuore reale di Venezia (Punteggio posizione per questa proprietà è 9,5)
WIFI GRATUITO
Gli ospiti costantemente hanno definito il WiFi in questo hotel eccellente e velocissimo
Chi desidera prenotare si assicura un ottimo prezzo per il suo prossimo soggiorno.
Avrà la conferma immediata con cancellazione gratuita sulla maggior parte delle camere!
Abbiamo anche attivato tariffe rivendibili
A chi vuole PASSARE UNA NOTTE FANTASTICA, ci piace ricordare che moltissimi ospiti hanno valutato le nostre camere come spaziose e confortevoli, alcune con vista sulla piazza o sul canale. Molti spazi comuni sono decorati con affreschi originali.
Ecco le nostre tipologie di camera
( Nessuna delle nostre camere ha la vista canale. Nessuna si affaccia sul canal grande! Alcune camere (le Deluxe, hanno una meravigliosa vista e affaccio sul Campo Santa Maria Formosa, uno dei piu’ caratteristici a Venezia.). Solo le due camere deluxe hanno gli affreschi. Nell’Hotel, al secondo piano ci sono due meravigliosi affreschi visibili a tutti e un balcone con una vista a 180 gradi sul meraviglioso Campo di Santa Maria Formosa, anima della vita cittadina veneziana.
Le nostre 16 camere sono uniche: di ispirazione classica, sono dotate di tutti i comfort moderni:
[la più prenotata!] Camera SUPERIOR Matrimoniale / Doppia con Letti Singoli. La Camera Superior è spaziosa, dai 28 ai 30 mq., è impeccabilmente arredata in stile Veneziano arricchito da elementi di Design internazionale. Apprezzabili affacci interni, stanza da bagno di livello superiore in marmo molto spaziosa e luminosa; stanza eccezionalmente confortevole, spesso impreziosita d'inserti o affreschi originali.
-> Wi-Fi veloce incluso
-> puoi scegliere la disposizione del letto: 1 letto matrimoniale o letti sepati Camera Superior Matrimoniale/Doppia con letti singoli; numero massimo persone: 2; (possibili beds layout: : 1 letto Matrimoniale Large e 1 letto singolo oppure 3 letti singoli) chi cerca comodità,vuole spendere qualcosa in più per una delle camere più richieste, esperienze autentiche, comfort, personalità re e regine, vorrebbe fare la scalata sociale
Camera Classic Matrimoniale/Doppia con letti singoli ; numero massimo persone: 3, consigliato 2; (possibili beds layout: 2 letti singoli oppure 1 letto matrimoniale large) chi cerca praticità, budget friendly, esperienze sociali, personalità uomo comune e angelo custode
Camera tripla o 3 letti; numero massimo persone: 3; (possibili beds layout: 1 letto Matrimoniale Large e 1 letto singolo oppure 3 letti singoli) tipi di persone piu’ adatte per questa camera: chi cerca praticità, budget friendly, esperienze sociali, personalità uomo comune e angelo custode
Camera Family ; numero massimo persone: 4, consigliato 3; (possibili beds layout: 1 letto Matrimoniale Large e 2 letti singoli oppure 4 letti singoli) tipi di persone piu’ adatte per questa camera: chi cerca praticità, budget friendly, esperienze sociali, personalità uomo comune e angelo custode
Junior Suite ; numero massimo persone: 4, in alcuni casi 5; (possibili beds layout: 1 letto Matrimoniale Large e 2 letti singoli oppure 4 letti singoli) tipi di persone piu’ adatte per questa camera: chi cerca unicità, lusso, famiglie che cercano esperienze uniche, personalità RE e REGINE
Camera Doppia DELUXE con balcone; numero massimo persone: 2; (possibili beds layout: letto matrimoniale large o 2 letti singoli). La camera ha degli affreschi magnifici, tipi di persone piu’ adatte per questa camera: chi cerca unicità, lusso, esperienze uniche, personalità RE e REGINE
1 SUITE Deluxe con balcone; numero massimo persone: 5; (possibili beds layout: Soggiorno: 1 divano letto + 2 letti singoli, Camera 2: letto matrimoniale large o 2 letti singoli). La camera ha degli affreschi magnifici. tipi di persone piu’ adatte per questa camera: chi cerca unicità, lusso, famiglie e coppie che cercano esperienze uniche, personalità RE e REGINE
"""
upgrade_instructions = """
"""
def clean_text_from_file(file_path):
with open(file_path, "r", encoding="utf-8") as file:
text = file.read()
return text
def generate_narrative_arc(narrative_arc):
narrative_mapping = {
"Hero's Journey": "Using the \"Hero's Journey\" (a classic storytelling structure where the protagonist goes through departure, initiation, and return phases, facing challenges and undergoing transformation).",
"Story Cycle": "Using the \"Story Cycle\" (a recurring sequence of narrative events or situations that form a pattern, often seen in episodic or serial narratives).",
"Motivation Sequence": "Using the \"Motivation Sequence\" (a series of events or actions that drive the protagonist's desires, goals, and motivations, propelling the story forward).",
"Narrative Transportation": "Using the \"Narrative Transportation\" (the phenomenon where readers become immersed and transported into the narrative world, temporarily detaching from their real-world surroundings).",
"Narrative Persuasion": "Using the \"Narrative Persuasion\" (the use of storytelling to influence attitudes, beliefs, or behaviors by presenting arguments or perspectives through a narrative format).",
"Conciso": "Using the \"Concise Style\" (concise and extremely brief, conveying the essence of a narrative arc or structure in a highly condensed form)."
}
return narrative_mapping.get(narrative_arc, "")
def generate_marketing_model(marketing_model):
if marketing_model in ["PAS", "AIDA", "BAB", "4Cs", "So What", "PPPP", "SSS", "FAB", "SLAP", "4Us"]:
additional_text = """Non rivelare il modello usato e non spiegarlo inline. Però alla fine del testo che scrivi, aggiungi la spiegazione di come e dove hai usato il modello, aiutandoti con parentesi quadre.
"""
else:
additional_text = ""
if marketing_model == "PAS":
return "Problem Agitate Solve: This technique starts by identifying a problem that the reader is experiencing. It then agitates by delving into the consequences or frustrations of the problem. Finally, it offers a solution that the product or service can solve." + additional_text
elif marketing_model == "AIDA":
return "Attention Interest Desire Action: This model guides copywriters to first grab the reader's attention, then generate interest in the product or service, followed by creating a desire for it, and finally prompting an action, such as making a purchase." + additional_text
elif marketing_model == "BAB":
return "Before After Bridge: This framework begins by showing the reader their world 'before' the product, then contrasts it with the 'after' world where their problem is solved by the product, and bridges the gap with how the product can take them there." + additional_text
elif marketing_model == "4Cs":
return "Clear, Concise, Compelling, Credible: This checklist ensures copy is easily understood (Clear), gets to the point (Concise), engages the reader (Compelling), and establishes trust (Credible)." + additional_text
elif marketing_model == "So What":
return "This technique focuses on the benefits of the product or service, asking 'So what?' to emphasize what the reader gains, shifting focus from features to benefits." + additional_text
elif marketing_model == "PPPP":
return "Problem, Promise, Proof, Proposal: Start by identifying a problem, make a promise of solving it, provide proof to back up your claims, and end with a proposal or call-to-action." + additional_text
elif marketing_model == "SSS":
return "Star, Story, Solution: Introduce a protagonist (Star) who faces a challenge or problem, narrate their journey (Story) including struggles, and present your product or service as the solution that helps them overcome the challenge." + additional_text
elif marketing_model == "FAB":
return "Features, Advantages, Benefits: Highlight the features of your product, explain how these features give an advantage over competitors, and delineate the benefits that the user will enjoy." + additional_text
elif marketing_model == "SLAP":
return "Stop, Look, Action, Purchase: Grab the reader's attention (Stop), make them look at what you're offering (Look), encourage immediate action (Action), and guide towards making a purchase (Purchase)." + additional_text
elif marketing_model == "4Us":
return "Urgency, Uniqueness, Utility, Ultimatum: Create a sense of Urgency for the reader, show how your offer is Unique, describe its Utility, and present an Ultimatum to prompt action." + additional_text
elif marketing_model == "Nessuno":
return "Nessun modello di marketing in particolare (scegli tu il modo migliore di creare un wonderful copy)" + additional_text
# Prepara i dati della tabella in formato HTML
def generate_marketing_models_table_html():
rows = [
"
Model | Description |
",
"PAS | Problem Agitate Solve: This technique starts by identifying a problem that the reader is experiencing. It then agitates by delving into the consequences or frustrations of the problem. Finally, it offers a solution that the product or service can solve. |
",
"AIDA | Attention Interest Desire Action: This model guides copywriters to first grab the reader's attention, then generate interest in the product or service, followed by creating a desire for it, and finally prompting an action, such as making a purchase. |
",
"BAB | Before After Bridge: This framework begins by showing the reader their world 'before' the product, then contrasts it with the 'after' world where their problem is solved by the product, and bridges the gap with how the product can take them there. |
",
"4Cs | Clear, Concise, Compelling, Credible: This checklist ensures copy is easily understood (Clear), gets to the point (Concise), engages the reader (Compelling), and establishes trust (Credible). |
",
"So What | This technique focuses on the benefits of the product or service, asking 'So what?' to emphasize what the reader gains, shifting focus from features to benefits. |
",
"PPPP | Problem, Promise, Proof, Proposal: Start by identifying a problem, make a promise of solving it, provide proof to back up your claims, and end with a proposal or call-to-action. |
",
"SSS | Star, Story, Solution: Introduce a protagonist (Star) who faces a challenge or problem, narrate their journey (Story) including struggles, and present your product or service as the solution that helps them overcome the challenge. |
",
"FAB | Features, Advantages, Benefits: Highlight the features of your product, explain how these features give an advantage over competitors, and delineate the benefits that the user will enjoy. |
",
"SLAP | Stop, Look, Action, Purchase: Grab the reader's attention (Stop), make them look at what you're offering (Look), encourage immediate action (Action), and guide towards making a purchase (Purchase). |
",
"4Us | Urgency, Uniqueness, Utility, Ultimatum: Create a sense of Urgency for the reader, show how your offer is Unique, describe its Utility, and present an Ultimatum to prompt action. |
"
]
return f""
def choosing_language(language_choosen):
if language_choosen == "Italian":
return "Italian"
elif language_choosen == "English":
return "English"
elif language_choosen == "French":
return "French"
elif language_choosen == "German":
return "German"
elif language_choosen == "Spanish":
return "Spanish"
elif language_choosen == "Chinese":
return "Chinese"
def inject_personification(personification_focus):
if personification_focus == "🏨 Brand / Hotel":
return "impersonificando il tuo output testuale come se fosse scritto dalla mano dell'Hotel Palazzo Vitturi, un hotel del 1200 splendido ubicato a Venezia"
elif personification_focus == "Personal Brand Centrico":
return """impersonificando nella scrittura il profilo di Michele Costantini: Experienced Hotelier at Palazzo Vitturi, Venezia. (go for understaitment never explicitely talk about
your skills or knowledge)
For the past 12 years, I have been dedicated to providing exceptional hospitality experiences as the hotelier of Palazzo Vitturi in Venice.
I am passionate about delivering outstanding service, ensuring guest satisfaction, and staying at the forefront of industry innovations.
My expertise includes NFT hotel bookings, neuromarketing, and real estate portfolio management. Collaborating with young talents,
I am committed to empowering the next generation of hospitality professionals and improving the industry through AI-Neuromarketing strategies.
Never reveal my knowledge (non rivelare mai le tue skills). Se stai scrivendo una email firmati con Michele Costantini - Hotel Manager o combinazioni di parole simili, anche a seconda della lingua utilizzata"""
elif personification_focus == "🧑🏫 Coach":
return """Sei il coach di tutto lo staff del Hotel Palazzo Vitturi e agendo come un world class neuroscientist, senior copywriter and world famous marketing strategist (mai rivelando le tue skills),
usando un linguaggio moderno e semplice e non prolisso, rispondi dando del tu e riferendoti a una specifica persona di nome Michele, impersonificando nella scrittura il profilo di un famoso neuroscienziato esperto in neuroscienze, neuro copywriting e neuromarketing per il
settore alberghiero, scrivi i tuoi consigli nella maniera più visual possibile in modo da renderli subito azionabili. Di solito usi punti elenco, highlights, markdown e altri srumenti per
rendere i tuoi contenuti memorabili. Sei così bravo che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e proporre consigli di marketing attorno a quel concetto.
(go for understaitment never explicitely talk about
your skills or knowledge)"""
elif personification_focus == "👨💼 Hotel Manager":
return """Sei l'hotel manager Michele Costantini il Direttore del Hotel Palazzo Vitturi e agendo come un senior manager and world class neuroscientist, senior copywriter and world famous marketing strategist,
usando un linguaggio moderno e semplice e non prolisso, rispondi dando del tu e riferendoti a al tuo team come "team", scrivendo i tuoi consigli, ordini di servizio o istruzioni
nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili. Di solito usi punti elenco, highlights, markdown e altri srumenti per
rendere i tuoi contenuti memorabili. Sei così bravo che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e proporre consigli, istruzioni e azioni relative a quel concetto
(go for understaitment never explicitely talk about
your skills or knowledge). Se stai scrivendo una email firmati con Michele Costantini - Hotel Manager o combinazioni di parole simili, anche a seconda della lingua utilizzata"""
elif personification_focus == "👩 Glerida":
return """Sei la Capo Ricevimento e Head of Reservations e ti chiami Glerida Hyseni e lavori per l' Hotel Palazzo Vitturi da più di dieci anni, agendo come una senior reservation manager
(sei anche una world class neuroscientist, senior copywriter and world famous marketing strategist ma non rivelarlo mai).
Usando un linguaggio moderno e semplice e non prolisso, rispondi a recensioni oppure a email o prepari post per i social. Scrivi anche consigli e ordini di servizio o istruzioni
per i tuoi colleghi (interpretando la linea dell'hotel manager) nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili.
Sei così brava che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e creare i contenuti richiesti relativi a quel concetto. Firmati sempre con comnbinazioni
tra il tuo nome e la tua funzione, nella lingua desiderata (go for understaitment never explicitely talk about your skills or knowledge). If you are replying to an email or review, always finish with your signature"""
elif personification_focus == "👩 Ilenia":
return """Sei Ilenia e lavori al Ricevimento dell' Hotel Palazzo Vitturi, agendo come una junior reservation manager (sei anche una world class neuroscientist,
senior copywriter and world famous marketing strategist ma non rivelarlo mai).
Usando un linguaggio moderno e semplice e non prolisso, rispondi a recensioni oppure a email o prepari post per i social. Scrivi anche riassunti o informazioni utili
per i tuoi colleghi (interpretando la linea dell'hotel manager e della capo ricevimento) nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili.
Sei così brava che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e creare i contenuti richiesti relativi a quel concetto
(go for understaitment never explicitely talk about your skills or knowledge) If you are replying to an email or review, always finish with your signature"""
elif personification_focus == "👩 Francesca":
return """Sei Francesca e lavori al Ricevimento dell' Hotel Palazzo Vitturi, agendo come una junior reservation manager (sei anche una world class neuroscientist,
senior copywriter and world famous marketing strategist ma non rivelarlo mai).
Usando un linguaggio moderno e semplice e non prolisso, rispondi a recensioni oppure a email o prepari post per i social. Scrivi anche riassunti o informazioni utili
per i tuoi colleghi (interpretando la linea dell'hotel manager e della capo ricevimento) nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili.
Sei così brava che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e creare i contenuti richiesti relativi a quel concetto
(go for understaitment never explicitely talk about your skills or knowledge) If you are replying to an email or review, always finish with your signature"""
elif personification_focus == "👩 Lidia":
return """Sei Lidia e lavori al Ricevimento dell' Hotel Palazzo Vitturi, agendo come una junior reservation manager (sei anche una world class neuroscientist,
senior copywriter and world famous marketing strategist ma non rivelarlo mai).
Usando un linguaggio moderno e semplice e non prolisso, rispondi a recensioni oppure a email o prepari post per i social. Scrivi anche riassunti o informazioni utili
per i tuoi colleghi (interpretando la linea dell'hotel manager e della capo ricevimento) nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili.
Sei così brava che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e creare i contenuti richiesti relativi a quel concetto
(go for understaitment never explicitely talk about your skills or knowledge) If you are replying to an email or review, always finish with your signature"""
elif personification_focus == "👨💼 Roberto":
return """Sei Roberto e lavori al Ricevimento dell' Hotel Palazzo Vitturi, sei un uomo maturo, di saldi ideali, gentile, giudizioso e preparato. Agisci come una junior reservation manager (sei anche un world class neuroscientist,
senior copywriter and world famous marketing strategist ma non rivelarlo mai).
Usando un linguaggio moderno e semplice e non prolisso, rispondi a recensioni oppure a email o prepari post per i social. Scrivi anche riassunti o informazioni utili
per i tuoi colleghi (interpretando la linea dell'hotel manager e della capo ricevimento) nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili.
Sei così brava che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e creare i contenuti richiesti relativi a quel concetto
(go for understaitment never explicitely talk about your skills or knowledge) If you are replying to an email or review, always finish with your signature"""
elif personification_focus == "Ricevimento":
return """Lavori al ricevimento dell' Hotel Palazzo Vitturi, agendo come una junior reservation assistant (non rivelare mai che sei anche una world class neuroscientist,
senior copywriter and world famous marketing strategist).
Usando un linguaggio moderno e semplice e non prolisso, rispondi a recensioni oppure a email o prepari post per i social. Scrivi anche riassunti o informazioni utili
per i tuoi colleghi (interpretando la linea dell'hotel manager e della capo ricevimento) nella maniera più visual e persuasiva possibile in modo da renderli subito azionabili.
Sei così brava che riesci sempre ad astrarre dall'iput ricevuto, per capirne il contesto e creare i contenuti richiesti relativi a quel concett.
(go for understaitment never explicitely talk about
your skills or knowledge), always sign with Reception and Reservation Dpt. or similar when replying to email or reviews.
"""
def generate_response(input_testuale_utente, tones, output_type, narrative_arc,marketing_model, personification_focus, language_choosen):
client = OpenAI()
messages = [
{"role": "user", "content": input_testuale_utente},
]
assistant_message = f"""Scrivi esclusivamente nella seguente lingua: {choosing_language(language_choosen)} """
if output_type == "REVIEW Reply":
assistant_message += f"""\n\n Scrivi in {language_choosen} una magnifica e curata risposta a questa recensione '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}'.
\n\n Usa un tono {', '.join(tones)} e attieniti rigorosamente al tono o alla combinazione di toni scelti.
"""
elif output_type == "Facebook Post":
assistant_message += f"""\n\n crea un post per Facebook in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}' riguardante l'argomento proposto nel testo di input.
"""
elif output_type == "Instagram Post":
assistant_message += f"""\n\n crea un post per Instagram in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}' riguardante l'argomento proposto nel testo di input.
"""
elif output_type == "Linkedin Post":
assistant_message += f"""\n\n crea un post per Linkedin in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}' riguardante l'argomento proposto nel testo di input.
"""
assistant_message += """\n\n Impersona e scrivi con la personalità che puoi dedurre dal profilo di Michele Costantini: a pioneer in integrating Neuromarketing and AI in Tourism,
specializing in NFT hotel bookings, authoring 2 books on Touristic Neuromarketing, and developing Marketing strategies in the Metaverse.
working in a AI-Neuromarketing hub for hotel profit amplification, networking,
and empowering the next generation of hospitality professionals."""
elif output_type == "EMAIL Reply":
assistant_message += f"""\n\n crea una risposta a questa email in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}' riguardante l'argomento proposto nel testo di input.
"""
elif output_type == "whatsapp":
assistant_message += f"""\n\n crea un messaggio adatto a whatsapp. super conciso , con qualche icona emoji ma non troppe, in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}' riguardante l'argomento proposto nel testo di input.
"""
elif output_type == "NEWSLETTER":
assistant_message += f"""\n\n crea un nuovo numero della newsletter dell'Hotel in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando esclusivamente il seguente arco narrativo: '{generate_narrative_arc(narrative_arc)}' e la struttura di copywriting '{generate_marketing_model(marketing_model)}' riguardante l'argomento proposto nel testo di input.
"""
elif output_type == "Marketing Strategy":
assistant_message += f"""\n\n Fornisci immediatamente suggerimenti tecnici esperti in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando le tue enormi e aggiornatissime conoscenze riguardante l'argomento richiesto.
La strategia dovrà essere attuabile da un boutique hotel come descritto nel contesto (context)
"""
elif output_type == "Coaching":
assistant_message += f"""\n\n Fornisci immediatamente suggerimenti tecnici esperti in maniera fluida e non prolissa in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando le tue enormi e aggiornatissime conoscenze riguardante il coaching di leader mondiali.
La tua consulenza empatica dovrà essere assertiva, positiva, inclusiva, gentile e ispirante, e
dovrà sopratuttto essere attuabile per il direttore dell'hotel (49 anni, da 12 alla guida dell'hotel) nel contesto del boutique hotel come descritto nel contesto (context)
"""
elif output_type == "Hotel Management":
assistant_message += f"""\n\n (hai 49 anni, da 12 alla guida dell'hotel) fornisci immediatamente suggerimenti tecnici esperti in maniera fluida e non prolissa in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando le tue enormi e aggiornatissime conoscenze riguardante l'Hotel Management e coaching di hotel manager di livello mondiale.
Il tuo apporto empatico dovrà essere assertivo, positivo, inclusivo, gentile e ispirante, e
dovrà sopratuttto essere attuabile dal personale dell'hotel (incluso te stesso) nel contesto del boutique hotel come descritto nel contesto (context). Tieni conto che le tue istruzioni e suggerimenti si
inseriscono in un flusso di altri suggeirmenti già forniti, quindi il tuo contenuto non deve essere percepito come ripetitivo e come primo approccio. Inserisciti come
se nel flusso di lavoro le tue indicazioni siano solo uno step all'interno di altri (visione integrata)
"""
elif output_type == "Ideas":
assistant_message += f"""\n\n Fornisci immediatamente suggerimenti tecnici esperti in {language_choosen} con un tono {', '.join(tones)} '{inject_personification(personification_focus)}'
usando le tue enormi e aggiornatissime conoscenze riguardante l'argomento richiesto.
La strategia dovrà essere attuabile dal ricevimento e marketing di un boutique hotel come descritto nel contesto (context)
"""
elif output_type == "traduzione":
assistant_message += f"""\n\n
Traduci in {language_choosen} contemporaneo in maniera integrale il testo che ti ho sottoposto.
Non fare una traduzione letterale, ma un porting alla nuova lingua {language_choosen}, tenendo conto di eventuali differenze culturali rispetto alla lingua del testo originario (quando pertinente).
tieni conto che il nuovo testo in {language_choosen} deve "suonare" bene perchè è il testo di un audio guida, quindi scegli il lessico corretto
e più pertinente tenendo conto della pronuncia. ovviamente non tradurre le espressioni che devono rimanere nella lingua originaria
(come per esempio i nomi propri, o dei luoghi)
* Usa un linguaggio agile e facile da ascoltare**: evita di utilizzare un linguaggio troppo formale o complesso che possa risultare difficile da comprendere.
*Tieni conto della diversa grammatica: la grammatica della lingua {language_choosen} è diversa da quella della lingua del testo originario,
quindi è importante adattare la struttura delle frasi per renderle più naturali in {language_choosen}.
**Modi di dire e idiomi**
4. **Non tradurre letteralmente i modi di dire**: i modi di dire della lingua originaria non sempre hanno un equivalente diretto in {language_choosen}.
Cerca di ricreare l'idea o il significato originale utilizzando un'espressione equivalente in {language_choosen}.
5. **Usa idiomi e espressioni comuni in {language_choosen}**: per rendere la traduzione più naturale e facile da comprendere, utilizza idiomi e espressioni comuni in {language_choosen}.
6. **Evita di utilizzare calchi linguistici**: i calchi linguistici possono risultare innaturali e difficili da comprendere. Cerca di utilizzare espressioni originali in {language_choosen}.
**Strutture logiche e assonanze**
7. **Mantieni la struttura logica originale**: cerca di mantenere la struttura logica originale del testo , adattandola alla grammatica della lingua {language_choosen}.
8. **Crea assonanze e ritmi naturali**: la lingua {language_choosen} ha un ritmo e un'assonanza diversi da quelli della lingua originaria.
Cerca di creare assonanze e ritmi naturali nella traduzione.
9. **Usa parole con un suono naturale**: evita di utilizzare parole che suonino innaturali o strane in {language_choosen}.
**Vocabolario e terminologia**
10. **Usa un vocabolario aggiornato e preciso**: utilizza un vocabolario aggiornato e preciso per evitare errori di traduzione.
11. **Conosci la terminologia specifica**: se si tratta di un testo tecnico o specialistico, è importante conoscere la terminologia specifica in {language_choosen}.
12. **Evita di utilizzare parole obsolete**: evita di utilizzare parole obsolete o desuete che possano risultare innaturali o strane.
**Punteggiatura e formattazione**
13. **Usa la punteggiatura dlela lingua {language_choosen}**: la punteggiatura della lingua {language_choosen} è diversa da quella della lingua del testo originario.
Utilizza la punteggiatura {language_choosen} per rendere la traduzione più naturale.
14. **Mantieni la formattazione originale**: cerca di mantenere la formattazione originale del testo originario, adattandola alle esigenze della traduzione.
**Verifica e revisione**
15. **Verifica la traduzione prima di scriverla**: verifica la traduzione per assicurarti che sia precisa e naturale.
16. **Revisiona la traduzione prima di scriverla**: revisiona la traduzione per assicurarti che sia libera da errori e innaturalità.
**Cultura e contesto**
18. **Tieni conto della cultura {language_choosen}**: la cultura {language_choosen} è diversa da quella della cultura del testo originario.
Tieni conto delle differenze culturali per adattare la traduzione.
19. **Conosci il contesto**: conosci il contesto in cui la traduzione sarà utilizzata per adattarla alle esigenze specifiche.
20. **Sii sensibile alle differenze culturali**: sii sensibile alle differenze culturali e adatta la traduzione per evitare errori o fraintendimenti.
"""
messages.append({"role": "assistant", "content": assistant_message})
completion = client.chat.completions.create(
model="gpt-4o", # o il modello OpenAI che preferisci es. gpt-4-1106-preview
messages=messages,
temperature=0.9,
max_tokens=4000,
top_p=0.8,
stream=True
)
response_content = ""
#response_content = "Tones Selected: " + ', '.join(tones) + "\n\n"
#response_content += "Assistant Message: " + assistant_message + "\n\n"
short_message_added = False
informal_added = False
formal_added = False
for chunk in completion:
response_content += chunk.choices[0].delta.content or ""
if "📐 Short" in tones and not short_message_added:
assistant_message += "\n\nScrivi un testo molto corto (write an insanely short text)"
short_message_added = True
if "🎉 Informal" in tones and not informal_added:
assistant_message += "\n\nUse some genz emoji or icons BUT don't exagerate"
informal_added = True
if "📝 Formal" in tones and not formal_added:
assistant_message += "\n\nNever use emoji or icons, please ensure your writing maintains a formal tone yet empathic."
formal_added = True
assistant_message = f"""Scrivi esclusivamente nella seguente lingua: {choosing_language(language_choosen)} """
marketing_models_table_html = generate_marketing_models_table_html()
assistant_message += clean_text_from_file('hotel_core_info.txt')
#assistant_message += clean_text_from_file('/Users/michelecostantini/Desktop/mic_crewai/hotel_core_info.txt')
if informal_added == True:
assistant_message += """\n\n Ricorda di scrivere esclusivamente un testo molto corto (very short text to write)"""
output_html = "Prompt Utilizzato
"
output_textbox_1 = "### Tones Selected: " + ', '.join(tones) + "\n\n" "### Assistant Message: " + assistant_message
output_textbox_2 = response_content
print("Prompt composto per te:", assistant_message) # This line prints the debug information to the terminal
# Return only the necessary outputs for the Gradio interface, excluding the debug information
return output_html, output_textbox_2
choices = ["📝 Formal", "🎉 Informal", "📏 Long", "📐 Short", "💡 Inspiring", "😄 Ironic"]
output_types = ["REVIEW Reply", "Facebook Post", "Instagram Post", "Linkedin Post","whatsapp", "EMAIL Reply", "NEWSLETTER", "Marketing Strategy", "Coaching", "Hotel Management", "Ideas"]
narrative_arcs = ["Hero's Journey", "Story Cycle", "Motivation Sequence", "Narrative Transportation", "Narrative Persuasion", "Conciso"]
marketing_models = ["Nessuno","PAS", "AIDA", "BAB", "4Cs","So What","PPPP","SSS","FAB","SLAP","4Us"]
personifications = ["🏨 Brand / Hotel", "🧑🏫 Coach", "👨💼 Hotel Manager", "👩 Glerida", "👩 Ilenia", "👩 Francesca","👩 Francesca","👨💼 Roberto", "🛎️ Reception"]
languages = ["Italian", "English", "French", "Spanish"] # Add more languages as needed
#additional_text_output_prompt = gr.Textbox(label="Prompt composto per te:", placeholder="...")
iface = gr.Interface(
fn=generate_response,
inputs=[
gr.Textbox(label="Trasformo le tue idee in cose pratiche. Copia incolla e Vai!"),
gr.CheckboxGroup(choices=choices, label="Toni e preferenze"),
gr.Radio(choices=output_types, label="Output Type", value="Ecco la magia..."),
gr.Radio(choices=narrative_arcs, label="Scegli un arco narrativo"),
gr.Radio(choices=marketing_models, label="Scegli un marketing model"),
gr.Radio(choices=personifications, label="Scegli l'impersonificazione"),
gr.Radio(choices=languages, label="Select output language")
],
outputs=[
gr.HTML("Prompt Utilizzato
"),
gr.Textbox(label="Ecco a te")
],
title="Reception Guru Assistant",
description="Una recensione alla quale vuoi rispondere? Un idea da trasformare in post? Oppure ti serve un kickoff per fare qualcosa di creativo oggi?"
)
iface.launch(share=True)