import gradio as gr from groq import Groq def clean_text_from_file(file_path): with open(file_path, "r", encoding="utf-8") as file: text = file.read() # Qui puoi aggiungere la logica per pulire il testo # ad esempio, rimuovendo parti non desiderate # o applicando altre trasformazioni necessarie # Una volta pulito, restituisci il testo return text def generate_narrative_arc(narrative_arc): if narrative_arc == "Hero's Journey": return "Il viaggio dell'eroe" elif narrative_arc == "Story Cycle": return "Il ciclo della storia" elif narrative_arc == "Motivation Sequence": return "La sequenza di motivazione" elif narrative_arc == "Narrative Transportation": return "Il trasporto narrativo" elif narrative_arc == "Narrative Persuasion": return "La persuasione narrativa" elif narrative_arc == "Conciso": return "Conciso e Super Stringato" def generate_marketing_model(marketing_model): if marketing_model == "PAS": return "Problem Agitate Solve copywriting technique" elif marketing_model == "AIDA": return "Aida marketing copywriting technique" 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 Centrico": 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. 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.""" elif personification_focus == "Coach": return """Sei il coach di Michele Costantini il Direttore del Hotel Palazzo Vitturi e agendo come un world class neuroscientist, senior copywriter and world famous marketing strategist, usando un linguaggio moderno e semlice 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""" 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 semlice 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""" elif personification_focus == "Capo Ricevimento": return """Sei la Capo Ricevimento e Head of Reservations 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 semlice 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 mio nome e la mia funzione, nella lingua desiderata""" elif personification_focus == "Reception": return """Sei Giulia e lavori come capo receptionist per l' 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 semlice 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""" def generate_response(input_testuale_utente, tones, output_type, narrative_arc,marketing_model, personification_focus, language_choosen): client = Groq() 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 == "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) """ messages.append({"role": "assistant", "content": assistant_message}) completion = client.chat.completions.create( model="mixtral-8x7b-32768", messages=messages, temperature=0.9, max_tokens=30000, top_p=1, stream=True, stop=None, ) 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 += clean_text_from_file('/Users/michelecostantini/Desktop/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 return output_html, output_textbox_1, output_textbox_2 choices = ["📝 Formal", "🎉 Informal", "📏 Long", "📐 Short", "💡 Inspiring", "😄 Ironic"] output_types = ["REVIEW Reply", "Facebook Post", "Instagram Post", "Linkedin Post", "EMAIL Reply", "NEWSLETTER", "Marketing Strategy", "Coaching", "Hotel Management"] narrative_arcs = ["Hero's Journey", "Story Cycle", "Motivation Sequence", "Narrative Transportation", "Narrative Persuasion", "Conciso"] marketing_models = ["PAS", "AIDA"] personifications = ["Brand Hotel Centrico", "Personal Brand Centrico", "Coach", "Hotel Manager","Caporicevimento", "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.HTML("

Stile del Messaggio

"), gr.CheckboxGroup(choices=choices, label="Toni e preferenze"), #gr.HTML("

A cosa ti serve?

"), gr.Radio(choices=output_types, label="Output Type", value="Ecco la magia..."), #gr.HTML("

Applica STORYTELLING

"), gr.Radio(choices=narrative_arcs, label="Scegli un arco narrativo"), #gr.HTML("

Applica Marketing Framework

"), gr.Radio(choices=marketing_models, label="Scegli un marketing model"), #gr.HTML("

\"CHI\" risponde?

"), gr.Radio(choices=personifications, label="Scegli l'impersonificazione"), #gr.HTML("

In Quale Lingua?

"), gr.Radio(choices=languages, label="Select output language") ], outputs=[ gr.HTML("

Prompt Utilizzato

"), additional_text_output_prompt, gr.Textbox(label="Ecco a te") ], title="Hotel 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)