Langchain x OpenAI x Streamlit – Générateur de chansons de rap🎙️
Langchain x OpenAI x Streamlit - Rap Song Generator🎙️
Apprenez comment créer une application web qui intègre le framework Langchain avec le modèle Streamlit et GPT3 d’OpenAI.
Streamlit 🔥
Streamlit est une bibliothèque Python open-source qui facilite la création et le partage d’applications web personnalisées et esthétiques pour l’apprentissage automatique et la science des données. En quelques minutes seulement, vous pouvez créer et déployer des applications de données puissantes.
Nous l’utiliserons pour créer une interface utilisateur de base pour notre application, puis nous connecterons les composants de l’interface utilisateur pour servir la réponse LLM via Langchain et le client OpenAI. 🙌
Documentation de Streamlit
Langchain 🔗
LangChain est un framework permettant de développer des applications alimentées par des modèles linguistiques. Il permet de créer des applications qui sont :
- Araucana XAI Explicabilité locale avec des arbres de décision pour la santé
- Kevin Baragona, Co-Fondateur et PDG de DeepAI – Série d’interviews
- Les meilleurs outils d’amélioration et d’agrandissement d’images IA (2023)
- Conscientes des données : connectez un modèle linguistique à d’autres sources de données
- Agentiques : permettez à un modèle linguistique d’interagir avec son environnement
Nous utiliserons le framework Langchain pour construire des chaînes en utilisant des tâches/prompts individuels. Un LLM traitera chaque lien de la chaîne 🔗 de manière séquentielle, ce qui nous permettra d’exécuter des requêtes plus complexes à travers le modèle. La sortie d’un prompt deviendra l’entrée du suivant, et ainsi de suite.
Documentation de Langchain
OpenAI | GPT3.5 🤖
Le client OpenAI de Langchain nous permettra d’exploiter la puissance de leurs modèles GPT de pointe. Nous utiliserons le modèle ‘gpt-3.5-turbo’, mais vous pouvez utiliser n’importe quel modèle de votre choix.
Voici une brève description du modèle que nous allons utiliser à partir du site web d’OpenAI :
Modèle GPT-3.5 le plus performant et optimisé pour le chat à 1/10e du coût de
text-davinci-003
. Il sera mis à jour avec notre dernière itération de modèle 2 semaines après sa sortie.4 096 tokens maximum
Lire la suite ici !
🧑💻Commençons par le code </>
Tout d’abord, à propos de l’application —
Nous allons créer un générateur de chansons de rap. Ce sera notre propre application web alimentée par LLM.
En fonction d’un sujet donné, elle générera un titre de chanson approprié, puis elle générera également des couplets pour ce titre. Voici une démo de l’application :
Excitant ? Commençons à construire !🧑🏻💻💪🏻
🙋🏻 Les instructions d’importation et la configuration initiale —
Il y a 3 packages principaux dont nous avons besoin pour ce projet. Installez-les et d’autres packages si nécessaire.
Ensuite, nous importerons la clé API et la définirons en tant que variable d’environnement. De plus, puisqu’il existe plusieurs modèles GPT que nous pouvons choisir pour notre application, j’ai défini celui que je souhaite dans une variable. Vous pouvez le modifier selon vos besoins.
#pip3 install streamlit#pip3 install langchain#pip3 install openaiimport osimport streamlit as stfrom langchain.prompts import PromptTemplatefrom langchain.chains import LLMChain, SimpleSequentialChain, SequentialChainfrom langchain.chat_models import ChatOpenAI#import API key from config filefrom config import OPEN_API # environment variable & the model to usemodel_id = 'gpt-3.5-turbo'os.environ["OPENAI_API_KEY"] = OPEN_API
✒️ Éléments d’interface utilisateur (streamlit) –
Streamlit a une API très conviviale qui nous permet de créer facilement une interface utilisateur pour nos applications ML/Data Science.
Dans le code ci-dessous, nous avons d’abord créé un titre pour notre application, juste en dessous nous avons une zone de saisie pour l’utilisateur où il/elle entrera un sujet pour la chanson.
Ensuite, nous avons 2 autres en-têtes, l’un pour le titre et l’autre pour les couplets. Chacun de ces en-têtes a ses propres zones de sortie, où les sorties seront attachées une fois qu’elles seront générées.
# titre principal et la zone de saisiest.title("🎙️ Générateur de chansons de rap 🎙️🔥") prompt = st.text_input("sujet de la chanson ?") # deuxième en-tête et la zone de sortie pour le titre de la chansonst.markdown("#### Titre de la chanson")title_box = st.empty()# troisième en-tête et la zone de sortie pour les coupletsst.markdown("#### Couplets")verse_box = st.empty()
Lorsqu’une entrée est fournie, elle sera stockée dans la variable ‘prompt’. Cette variable sera ensuite utilisée pour générer la sortie.
💥 Modèles de prompts, Chaînes & LLM (langchain, OpenAI) –
Maintenant, nous devons créer des modèles à la fois pour la génération du titre et la génération des couplets.
- Dans le premier prompt, l’entrée est le ‘sujet’ que l’utilisateur a saisi à partir de l’interface utilisateur. Ce ‘sujet’ sera utilisé pour formater la chaîne de modèle. Ce modèle sera utilisé pour afficher le ‘titre’ de la chanson.
- Le deuxième prompt utilisera le ‘titre’ généré ci-dessus comme entrée et utilisera cela pour formater la deuxième chaîne de modèle, qui générera des couplets basés sur ce ‘titre’ d’entrée. La sortie de cette chaîne de modèle sera les ‘couplets’.
Une fois que nous avons 2 modèles, nous créerons 2 chaînes pour chacun d’eux. La première chaîne sera la chaîne de titre et elle utilisera le modèle de titre.
De même, la deuxième chaîne sera la chaîne de couplets et elle utilisera le modèle de couplets.
La sortie que nous obtiendrons sera au format dictionnaire, donc pour chaque chaîne, nous pouvons spécifier ce qu’il faut utiliser comme clé. Cela peut être fait en définissant “output_key = quelque chose” sur les deux chaînes.
# modèle de prompt pour générer le titremodele_titre = PromptTemplate( input_variables = ["sujet"], template = "générer un titre de chanson de rap sur le sujet : {sujet}")# modèle de prompt pour générer les coupletsmodele_couplets = PromptTemplate( input_variables = ["titre"], template = "générer 2 couplets rimant pour une chanson de rap intitulée : {titre}")# construction des chaîneschaine_titre = LLMChain(llm=llm, prompt=modele_titre, verbose=True, output_key="titre") chaine_couplets = LLMChain(llm=llm, prompt=modele_couplets, verbose=True, output_key="couplet") # combinaison des chaîneschaine_sequentielle = SequentialChain( chains=[chaine_titre, chaine_couplets], input_variables=["sujet"], output_variables=["titre", "couplet"], verbose=True,)
À la fin, nous combinons les deux chaînes et elles s’exécuteront séquentiellement lorsque nous commencerons l’exécution. Les variables d’entrée dans cette chaîne combinée seront [« sujet »] et les variables de sortie seront [« titre », « couplet »] telles que définies lors de la combinaison des chaînes.
📺 Affichage à l’écran —
Une fois que nous avons une entrée de l’utilisateur, nous exécuterons la chaîne combinée que nous venons de créer. Nous passerons le prompt en tant que “sujet” car c’est le nom que nous avons défini pour notre paramètre “input_variables”.
La réponse sera un dictionnaire et nous pouvons extraire le texte requis à partir de celui-ci en utilisant les clés que nous avons également définies précédemment dans les variables « output_variables » et « output_keys ».
# exécution des chaînes si un prompt est fourniif prompt: response = chaine_sequentielle({ "sujet" : prompt }) titre = response["titre"] corps = response["couplet"] # afficher chaque sortie dans sa propre zone de sortie title_box.markdown(titre) verse_box.markdown(corps)
Pour exécuter l’application, utilisez la commande —
streamlit run filename.py
C’est tout pour cet article. J’espère que cela en valait la peine et suivez-moi pour plus de mises à jour futures!
🖤 Merci d’avoir lu, consultez ces articles connexes —
L’adoption précoce de l’IA générative : saisir les opportunités et atténuer les risques
Explorons pourquoi les entreprises intègrent l’IA générative dans leurs activités malgré ses imperfections, et comment elles le font…
krnk97.medium.com
Comment créer un clone de YouTube – YouTube API
Comment développer une application de recherche de vidéos YouTube en utilisant HTML, CSS et JavaScript (jQuery) et l’API YouTube.
enlear.academy
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Pensez comme ceci et répondez-moi cette approche d’IA utilise un guidage actif pour orienter les grands modèles de langage
- Un nouveau modèle d’apprentissage automatique accélère l’évaluation des catalyseurs de décarbonisation de mois à millisecondes
- Une étude révèle que ChatGPT améliore la productivité des travailleurs pour certaines tâches d’écriture
- Affiner les modèles de diffusion stables sur les processeurs Intel
- Analyse exploratoire des données dans Google Sheets
- Tutoriel Docker pour les Data Scientists
- DAE Talking Génération de visages parlants haute fidélité basée sur la parole avec un autoencodeur de diffusion