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.

Image par l'auteur

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 :

  • 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 :

Démo du générateur de chansons de rap

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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Déverrouiller la compositionnalité systématique dans les réseaux neuronaux Une percée avec l'approche de l'apprentissage méta pour la compositionnalité (MLC)

Les domaines de l’intelligence artificielle et de l’apprentissage automatique sont de plus en plus prédom...

AI

AI2 dévoile Dolma Un corpus de 3 billions de jetons pionnier de la transparence dans la recherche sur les modèles de langage

La transparence et l’ouverture dans la recherche sur les modèles de langage ont longtemps été des questions con...

AI

Des chercheurs ont développé une méthode novatrice d'IA sans marqueur pour suivre les postures des oiseaux en 3D à l'aide d'enregistrements vidéo.

Le suivi du comportement, du regard et des mouvements fins des animaux et des oiseaux a été une tâche difficile pour ...

AI

Accord préliminaire de l'UE sur la réglementation de l'IA Implications pour ChatGPT

L’Union européenne a récemment conclu un accord préliminaire qui définit les règles régissant les modèles dR...

AI

Comment utiliser la méthode de dichotomie pour le calcul numérique

Un sous-domaine de l'informatique et des mathématiques connu sous le nom de calcul numérique se concentre sur l'utili...

Apprentissage automatique

MosaicML vient de publier leur MPT-30B sous la licence Apache 2.0.

Après le grand succès de MosaicML-7B, MosaicML a une fois de plus surpassé le benchmark qu’ils avaient établi a...