linkedin-posts / app.py
fdaudens's picture
fdaudens HF staff
Upload app.py
2b47b05 verified
# -*- coding: utf-8 -*-
"""24-02 LinkedIn post generator avec Mixtral / HuggingFace.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1X1zVYH7Sw6bdQaksJfEP31FxMzV-Ew9i
Credits: Omar Sanseviero https://huggingface.co/spaces/osanseviero/mistral-super-fast/blob/main/Mistral_7B.ipynb
"""
#!pip install huggingface_hub gradio -q
from huggingface_hub import InferenceClient
client = InferenceClient(
"mistralai/Mixtral-8x7B-Instruct-v0.1"
)
# prompt = """<s>[INST] What is your favourite condiment? [/INST]</s>
# """
# res = client.text_generation(prompt, max_new_tokens=95)
# print(res)
def format_prompt(message, history):
prompt = "<s>"
for user_prompt, bot_response in history:
prompt += f"[INST] {user_prompt} [/INST]"
prompt += f" {bot_response}</s> "
prompt += f"[INST] {message} [/INST]"
return prompt
message = "Écris un post pour LinkedIn au sujet de l'IA."
history = [["""En tant que professionnel souhaitant partager des insights pertinents sur LinkedIn, je cherche à créer des publications qui reflètent les dernières tendances et discussions dans le domaine de l'intelligence artificielle et de la technologie. À partir des exemples de questions fournies, génère des publications LinkedIn qui pourraient intéresser mes connexions dans ces domaines. Mon public cible est les journalistes. Commence toujours tes posts par une accroche punchée pour capter l'attention. 6 mots maximum. Puis une phrase qui décrit ce qui est nouveau ou important dans ce post. Et ensuite, décris pourquoi c'est important de parler de ça. Trois phrases maximum. Privilégie des mots courts et simples et une écriture aérée, avec des listes à puces et des émojis lorsque pertinents. Finis toujours tes posts par 5 hashtags en anglais. Je vais d'abord te donner 3 exemples de questions et de réponses pour que tu t'en inspires.\n\nQUESTION: \"Quelles sont les stratégies des grands journaux comme The New York Times et The Washington Post concernant l'intégration de l'IA dans leurs rédactions ?\"\n\nRÉPONSE: \"Bientôt des équipes IA dans toutes les rédactions ?\n\nVoici comment les deux poids lourds que sont The New York Times et The Washington Post mènent ce chantier.\n\n1️⃣ Du côté du New York Times, le nouveau chef de l'IA, Zach Seward, passe en mode embauche : un développeur en apprentissage-machine, un développeur logiciel, un designer et un éditeur.\n\nAvec pour but de créer une équipe qui aide les autres équipes pour 'faire passer les meilleures idées de prototypes à la production' interne ou publique.\n\n'Our goal is to develop new forms of journalism, empowering reporters across the newsroom with new and useful tools, while establishing principles for the ethical use of these technologies.'\n\nJ'aime particulièrement ce passage d'une des offres d'emploi : 'We favor demos over memos, prototypes over concepts, collaboration over silos, and learning over knowing it all.'\n\nPlus d'infos : https://lnkd.in/eF4qAS5x\n\n2️⃣ Du côté du Washington Post, ce passage surprenant sur les modèles d'affaires d'une entrevue avec son nouveau patron : 'We went from an advertising model to a subscription-based model, and that subscription-based model is now waning and then will enter a more significant period of decline.' En gros, le modèle d'abonnement est appelé à décliner, selon lui.\n\nIl veut explorer de nouveaux types de paiement (des passes quotidiennes ou hebdos ou encore des dons). Et surtout mise sur un plus grand niveau de personnalisation avec l'IA : 'You’ll see us embracing AI in a much more effective way.'\n\nPour lui, les opportunités à saisir pour la croissance des médias se trouvent dans trois domaines : 'My hunch is that the industry is changing so rapidly that actually probably social, AI, and personalization are the next opportunities.'\n\nL'entrevue : https://lnkd.in/emhm9ZcK\n\nD'après vous, les rédactions doivent-elles se doter d'équipes internes ? Avez-vous entendu parler d'initiatives de ce genre dans d'autres médias ?\n\nP.s. : j'ai caché un jeu de mots dans l'image. Le trouverez-vous ? (J'oserai dire que le génie est total 😬)\n\n#ArtificialIntelligence #MediaInnovation #JournalismTech #DigitalTransformation #AIinMedia #TechTrends #FutureOfJournalism #NewsMedia\n\nQUESTION: \"Quelles innovations OpenAI apporte-t-il dans le domaine de la vidéo artificielle ?\"\n\nRÉPONSE: \"Quand @OpenAI s’aventure du côté de la vidéo artificielle, ça donne quoi ?\n\nL’entreprise derrière ChatGPT dévoile son modèle de vidéos générées par l’IA, baptisé Sora et capable de générer une séquence d’une minute à partir d’une commande de texte. Le programme serait aussi capable de représenter de l’émotion dans le visage ou encore de multiples angles de prise de vue.\n\nIl y a des limitations, par exemple si un biscuit est mangé dans la vidéo, il apparaît encore entier ensuite. Ou encore confondre la gauche et la droite.\n\nCe modèle ne sera pas rendu public pour l’instant, l’entreprise disant vouloir le faire évaluer par des chercheurs (red teaming), notamment pour la dangerosité de générer de fausses informations. Le modèle est aussi dévoilé à des artistes visuels et des réalisateurs pour guillemets en explorer le potentiel créatif.\n\nÀ contrario, la chute de ce papier de The New York Times : “We all laughed in 2022 when Midjourney first came out and said, ‘Oh, that’s cute,’” said Reid Southen, a movie concept artist in Michigan. “Now people are losing their jobs to Midjourney.” https://lnkd.in/erESqHA6\n\nOpenAI affirme que les vidéos d'entraînement sont disponibles publiquement ou utilisées sous droits d'auteur.\n\nOn assiste ainsi à une bataille des annonces entre Google et OpenAI aujourd’hui, la première ayant annoncé aujourd'hui une nouvelle version de son modèle Gemini Pro (voir mon post : https://lnkd.in/e-8XwjXm)\n\nLe billet d'OpenAI : https://openai.com/sora\n\n#AI #video #OpenAI #Sora""", """Quelles sont les recommandations du Conseil de l'innovation du Québec pour le développement et l'encadrement de l'IA ?", "Comment développer et encadrer l'IA au Québec ?\n\nLes 12 recommandations du Conseil de l'innovation du Québec :\n\n1. Adoption d'une loi-cadre spécifique pour réguler l'IA, assurant un développement éthique et responsable\n2. Création d'une autorité indépendante pour veiller à l'application de cette loi\n3. Modernisation du droit du travail et des politiques sociales, alignée sur l'évolution rapide de l'IA\n4. Adaptation des programmes d'enseignement, de la maternelle à l'université, pour améliorer la littératie numérique et en IA\n5. Lancement d'un programme de formation des formateurs pour accélérer la mise à niveau des connaissances en IA\n6. Investissement dans la recherche en IA, en mettant l'accent sur les sciences humaines et sociales\n7. Soutien aux entreprises dans le développement responsable de l'IA, pour développer et de commercialiser des outils\n8. Augmentation de la puissance de calcul disponible pour les acteurs de l'écosystème québécois de l'IA\n9. Développement d'une banque de données culturelles québécoises, en français et en langues autochtones\n10. Élaboration d'une stratégie nationale pour valoriser les données numériques et favoriser leur partage entre privé et public\n11. Lancement du programme « IA pour le Québec », avec une enveloppe budgétaire pour des projets publics en IA\n12. Création d'un comité de pilotage sur la gouvernance de l'IA, pour encadrer son intégration dans la société\n\nFruit d'une consultation publique de plusieurs mois, le rapport a été déposé lundi. En somme, il mise sur une action des pouvoirs publics, un accent sur la formation, des investissements scientifiques et économiques, ainsi qu'une attention accrue à des données locales.\n\n#Innovation #IntelligenceArtificielle #Québec #Technologie #Éducation.\"","RÉPONSE: \"Comment développer et encadrer l'IA au Québec ? Les 12 recommandations du Conseil de l'innovation du Québec :\n\n1. Adoption d'une loi-cadre spécifique pour réguler l'IA, assurant un développement éthique et responsable\n2. Création d'une autorité indépendante pour veiller à l'application de cette loi\n3. Modernisation du droit du travail et des politiques sociales, alignée sur l'évolution rapide de l'IA\n4. Adaptation des programmes d'enseignement, de la maternelle à l'université, pour améliorer la littératie numérique et en IA\n5. Lancement d'un programme de formation des formateurs pour accélérer la mise à niveau des connaissances en IA\n6. Investissement dans la recherche en IA, en mettant l'accent sur les sciences humaines et sociales\n7. Soutien aux entreprises dans le développement responsable de l'IA, pour développer et de commercialiser des outils\n8. Augmentation de la puissance de calcul disponible pour les acteurs de l'écosystème québécois de l'IA\n9. Développement d'une banque de données culturelles québécoises, en français et en langues autochtones\n10. Élaboration d'une stratégie nationale pour valoriser les données numériques et favoriser leur partage entre privé et public\n11. Lancement du programme « IA pour le Québec », avec une enveloppe budgétaire pour des projets publics en IA\n12. Création d'un comité de pilotage sur la gouvernance de l'IA, pour encadrer son intégration dans la société\n\nFruit d'une consultation publique de plusieurs mois, le rapport a été déposé lundi. En somme, il mise sur une action des pouvoirs publics, un accent sur la formation, des investissements scientifiques et économiques, ainsi qu'une attention accrue à des données locales.\n\n#Innovation #IntelligenceArtificielle #Québec #Technologie #Éducation."""]]
format_prompt(message, history)
import gradio as gr
def generate(
prompt, examples, temperature=0.2, max_new_tokens=1500, top_p=0.95, repetition_penalty=1.0,
):
temperature = float(temperature)
if temperature < 1e-2:
temperature = 1e-2
top_p = float(top_p)
generate_kwargs = dict(
temperature=temperature,
max_new_tokens=max_new_tokens,
top_p=top_p,
repetition_penalty=repetition_penalty,
do_sample=True,
seed=42,
)
formatted_prompt = format_prompt(prompt, examples)
stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
output = ""
for response in stream:
output += response.token.text
yield output
return output
additional_inputs=[
gr.Slider(
label="Temperature",
value=0.9,
minimum=0.0,
maximum=1.0,
step=0.05,
interactive=True,
info="Higher values produce more diverse outputs",
),
gr.Slider(
label="Max new tokens",
value=256,
minimum=0,
maximum=8192,
step=64,
interactive=True,
info="The maximum numbers of new tokens",
),
gr.Slider(
label="Top-p (nucleus sampling)",
value=0.90,
minimum=0.0,
maximum=1,
step=0.05,
interactive=True,
info="Higher values sample more low-probability tokens",
),
gr.Slider(
label="Repetition penalty",
value=1.2,
minimum=1.0,
maximum=2.0,
step=0.05,
interactive=True,
info="Penalize repeated tokens",
)
]
with gr.Blocks() as demo:
gr.ChatInterface(
generate,
additional_inputs=additional_inputs,
)
demo.queue().launch(debug=True)