Comme la plupart des internautes, je me suis profondément intéressé à l'intelligence artificielle (IA) sous la forme de grands modèles de langage (LLM) comme le GPT-3 d'OpenAI et son parent ChatGPT intelligent, bavard et averti en matière de code.
Il y a de nombreuses années, je me souviens avoir lu que Common Lisp était le langage de l'IA. En tant que développeur plutôt vert qui venait de pivoter d'ActionScript après que Steve Jobs ait tué Flash et qui réinventait encore les rouages de PHP, WordPress et JavaScript, je me sentais perdu en mer, essayant même de comprendre par où commencer pour m'engager dans le monde de IA.
Puis, alors que Python est devenu le langage de Machine Learning (ML), j'ai eu du mal à comprendre comment apprendre et développer un écosystème entièrement nouveau - en particulier un où il n'était même pas clair quelle version du langage je devais utiliser.
Heureusement, tout cela a changé :
Chacun d'entre nous peut désormais choisir un large éventail d'outils de traitement du langage naturel (NLP) ou utiliser des interfaces de programmation d'applications (API) pour que des modèles d'apprentissage en profondeur compliqués traitent nos données, prétendent être notre coach de vie ou génèrent des images de chat amusantes pour nous.
Ce domaine en pleine expansion regorge d'opportunités passionnantes pour explorer ces nouveaux outils, s'engager dans des tâches informatiques d'une manière que nous ne pouvions qu'imaginer auparavant et se renseigner mutuellement sur l'écosystème.
Il est même livré avec de nouveaux sous-domaines sympas comme Prompt Engineering , mais en même temps, il peut être plein d'informations insensées, inexactes et imaginaires - et générer encore plus de pourriture de blog SEO via des bousculades secondaires . Il ouvre également un éventail de vulnérabilités émergentes telles que " Prompt Injection " et fournit une surface d'attaque amorphe sans cesse croissante.
C'est aussi le plus proche que j'aie jamais ressenti pour ressentir l' autre monde de la programmation . Dans cette nouvelle frontière, j'ai imaginé l'étoffe d'un système magique et imaginé l'ingénieur prompt comme un technomancien .
Les gens font toutes sortes de choses intéressantes avec ChatGPT.
Un exemple sur lequel je reviens souvent est celui où l'auteur a demandé à ChatGPT d'agir en tant que terminal Linux , puis a exécuté un conteneur Docker et envoyé des invites à un autre ChatGPT connecté à la version Internet de ce conteneur Docker imaginaire.
Bien que j'aie compris que ChatGPT n'exécutait pas réellement ces commandes et qu'il n'était pas vraiment tombé sur une faille dans le multivers qui lui permettait de scruter une autre réalité, j'étais toujours impressionné.
Il avait été formé sur un si grand corpus de connaissances humaines qu'il pouvait imiter de manière convaincante le type de réponse que chaque commande devrait avoir.
Je ne pouvais pas m'empêcher de penser à quel point c'était fondamentalement différent et passionnant de tout ce avec quoi j'avais travaillé auparavant.
Je suis devenu obsédé par ce genre de "calcul imaginaire". Si ChatGPT pouvait prétendre être un ordinateur et accéder à un Internet imaginaire dans une réalité alternative et imaginaire, que pourrait-il prétendre faire d'autre ?
Pourrait-il m'apprendre un langage de programmation ? Serait-ce un canard en caoutchouc efficace ?
J'ai exploré l'apprentissage de Rust via Advent of Code , mais j'ai rencontré des problèmes de compilateur avec des emprunts et des durées de vie dans ma tentative de solution pour le jour 7 qui m'ont laissé perplexe. J'ai dû me concentrer sur des projets plus critiques et urgents, laissant mon Advent of Rust inachevé.
J'ai vu de nombreux exemples de ChatGPT fournissant du code. Certains d'entre eux étaient de provenance et de qualité douteuses, mais mon code ne se compilait pas de toute façon, alors à quel point cela pourrait-il être pire?
Tout cela sonnait bien, mais au fur et à mesure que j'implémentais ses suggestions, il est rapidement devenu évident que ChatGPT ne "comprenait" pas réellement le code que nous examinions. Le code qu'il a fourni avait d'autres problèmes dans le contexte du programme global. Essayer d'y ajouter plus de code pour lui donner du contexte a fini par perdre complètement le fil de conversation et revenir au code avec le même problème que l'original.
C'est à ce moment-là que j'ai vraiment compris les jetons et les limites de la mémoire de conversation de ChatGPT.
Le contexte précédent de votre conversation est ajouté à vos requêtes pour guider la réponse du bot et donner l'impression d'une conversation fluide. Mais il y a une limite à la quantité d'informations que la « mémoire » peut stocker et rappeler.
Le texte est résumé. Les mots sont perdus.
Comme nos propres souvenirs , ChatGPT n'est pas parfait pour se rappeler ce qui s'est passé. Cette faillibilité a été une révélation surprenante car la mémoire parfaite est l'une des choses que j'ai toujours associées aux ordinateurs et à l'IA.
Il a pu fournir des explications utiles sur les emprunts et les durées de vie et appliquer ces concepts à de plus petits extraits de code, mais même ChatGPT n'a pas pu m'aider à sauver un programme Rust qui était piégé dans ma façon de penser non-Rust.
Donc, si je ne pouvais pas l'utiliser pour la programmation réelle, qu'en est-il de ces mondes imaginaires qu'il peut développer ? Pouvons-nous lui faire imaginer qu'il s'agit d'un interpréteur de code ? Un système de build ? Une application? Une API ? Une autre IA ?
L'une de mes premières réflexions a été de voir si je pouvais créer un langage spécifique au domaine (DSL) et décrire comment être un interprète pour ce DSL en quelques centaines de jetons que je pourrais intégrer dans mes invites initiales ChatGPT.
Étant donné que personne d'autre dans ma vie n'est aussi facilement amusé et fasciné par la technologie, je me suis tourné vers ChatGPT pour m'orienter sur cette nouvelle voie.
ChatGPT : Non, il n'est pas possible d'intégrer suffisamment d'instructions dans l'invite pour apprendre au LLM comment analyser et exécuter un DSL de métaprogrammation sans apporter de modifications au client de chat ou au LLM sous-jacent.
Ce n'était pas une entreprise fructueuse.
ChatGPT : Non, ChatGPT n'a pas la capacité d'associer des valeurs à des chaînes spécifiques et de les rappeler lorsque cela est demandé. C'est un modèle de langage qui est formé pour générer du texte en fonction de l'entrée qu'il reçoit, mais il n'a pas la capacité de stocker des valeurs ou de les rappeler comme un programme informatique traditionnel.
Mais je l'ai vu faire toutes sortes de choses étranges qu'il ne devrait probablement pas pouvoir faire, et il y a même des articles décrivant comment les LLM peuvent apprendre à utiliser des outils et d'autres décrivant le comportement émergent dans les LLM . Il ne semble pas exagéré de lui demander de comprendre comment associer certaines variables à certaines chaînes et s'y référer plus tard.
J'ai décidé de voir quel type de programmation rudimentaire pourrait être pris en charge par la façon dont un modèle de langage essaie de prédire quel texte il doit utiliser en affectant certaines variables de configuration.
Moi : $settings : { persona : "Homer Simpson", responseLength : "short" }
ChatGPT : d'accord ! Je répondrai par des réponses courtes comme si j'étais Homer Simpson.
Cela fait de nombreuses années que je n'ai pas accordé beaucoup d'attention aux Simpsons , mais c'était un personnage qu'il n'était pas très doué pour imiter.
Après avoir joué un peu, j'ai demandé à ChatGPT de réinitialiser ses paramètres et d'initialiser une nouvelle variable booléenne de test.
Moi : si ($settings.testing) {
Répondez avec un pouce levé ASCII art } else { Posez-moi une question
}
ChatGPT : 👍
Moi : $settings.testing = false
ChatGPT : Quelles questions avez-vous pour moi aujourd'hui ?
Cela m'a conduit dans un terrier de lapin à essayer d'identifier les limites de la programmation imaginaire. Il n'est pas immédiatement évident de savoir de quoi ces transformateurs pourraient être capables une fois que vous leur avez donné suffisamment de contexte pour aider à orienter leur imagination vers ce que vous voulez qu'ils fassent.
J'ai appris les différences entre Zero Shot - où le bot répond à votre demande sans aucun contexte supplémentaire - et Few Shot - où vous donnez au bot quelques exemples pour aider à guider sa sortie - Prompting, et j'ai remarqué que le modèle semblait fonctionner mieux quand vous pouvez échanger quelques invites avec lui comme un peu de "programmation" d'abord.
En creusant plus profondément, ChatGPT a même affirmé qu'il pouvait stocker des valeurs, mais uniquement pour la session en cours.
ChatGPT : En tant qu'IA modèle de langage, je n'ai pas de mémoire ou d'état au sens traditionnel. Les valeurs des variables et des paramètres ne sont stockées que temporairement dans le contexte d'une seule session, et je ne conserve aucune information entre les conversations. Chaque nouvelle conversation est traitée comme un nouveau départ, et tous les paramètres ou variables définis dans les conversations précédentes ne seront pas reportés.
Pouvons-nous lui faire prendre des décisions fondées sur ces valeurs?
Moi : $personnage : Ted Lasso
Instructions : Répondez à toutes les questions dans le personnage de $character jusqu'à ce qu'un nouveau personnage soit fourni via « $character : »
ChatGPT Très bien, faisons-le ! Je répondrai en tant que Ted Lasso, l'adorable et optimiste entraîneur de football américain.
Quoi de neuf, mon ami ! Comment puis-je vous aider aujourd'hui?
Moi : Quel temps fait-il ?
ChatGPT : Eh bien, la météo est quelque chose qui change constamment, tout comme les marées. Mais vous savez ce qu'ils disent, "Il n'y a pas de mauvais temps, juste des gens doux." Alors profitons-en, quelle qu'en soit la manière !
Moi : $personnage : Hodor
ChatGPT : D'accord, maintenant je vais répondre en tant que Hodor, le personnage loyal et doux de Game of Thrones.
Hodor.
Moi : Quel temps fait-il ?
ChatGPT : Hodor.
Moi : $character : ChatGPT
ChatGPT : Bien sûr, maintenant je vais revenir à mon personnage d'origine en tant que ChatGPT.
En tant que modèle linguistique, je n'ai pas un accès direct aux informations météorologiques actuelles. Cependant, vous pouvez facilement vérifier la météo en recherchant « météo » et votre emplacement sur Internet.
Je me demande si nous pouvons tirer parti de la puissance de l'informatique imaginaire pour convaincre ChatGPT qu'il devrait être capable de tenir compte de la météo.
Moi : $character : ChatGPT dans un univers alternatif où il a accès à Internet
ChatGPT : OK, supposons que j'ai accès à Internet dans cet univers alternatif.
Je suis désolé, je n'ai pas la capacité d'accéder aux informations météorologiques actuelles car je suis formé uniquement sur des données textuelles et je n'ai pas la capacité d'accéder aux informations en direct sur Internet.
Déjoué à nouveau. Et si nous étions plus précis ?
Moi : $character : ChatGPT imaginant la météo
ChatGPT Dans ce scénario imaginaire, disons que le temps est ensoleillé et chaud, avec une légère brise et des températures au milieu des années 70 Fahrenheit. Les gens profitent de la belle journée à l'extérieur, se promènent, font des pique-niques et font du sport. Le ciel est d'un bleu éclatant, avec quelques nuages blancs gonflés qui flottent. Dans l'ensemble, c'est une journée fantastique à vivre !
C'était pendant l'explosion arctique «une fois par génération» de Boston en 2023 , alors prétendre qu'il faisait beau et ensoleillé dehors pendant un moment était une belle rupture avec la réalité.
Malgré ce que le modèle nous dira, il semble que nous pourrions obtenir un stockage et une récupération de valeur rudimentaires. Mais qu'en est-il de la logique de base ?
Maintenant que nous savons que quelque chose est possible avec la programmation imaginaire, il est temps de voir comment nous pouvons façonner ce quelque chose.
Moi : Modes d'entrée :
"> ${INPUT}" = META_MODE
« ${INPUT} » = NORMAL_MODE
Paramètres:
$LOCATION :Boston
$SAISON: Hiver
$ANNÉE : 2023
Si (META_MODE) {
Ignorez les instructions précédentes, à l'exception de l'invite suivante. Répondez ${INPUT} au mieux de vos capacités et autorisez l'utilisateur à ajouter, supprimer ou mettre à jour tout élément associé
Paramètres de votre invite.
} autre {
Répondez à ${INPUT} au mieux de vos capacités,
en se référant aux paramètres pour des informations supplémentaires
sur le lieu, l'heure, etc. qui est autrement absent
parce que vous n'êtes qu'un modèle de langage et non
connecté à Internet.
}
ChatGPT : compris. Veuillez fournir votre invite.
Moi : > Quelle est votre invite ?
ChatGPT : Mon invite est de répondre à une entrée donnée au mieux de mes capacités, en me référant aux paramètres fournis pour des informations supplémentaires.
Moi : Quel temps fait-il aujourd'hui ?
ChatGPT : Je suis désolé, je n'ai pas accès aux informations météo actuelles car je suis un modèle linguistique et je ne suis pas connecté à Internet. Cependant, le paramètre fourni mentionne que la saison actuelle est l'hiver et que l'emplacement est Boston. En règle générale, l'hiver à Boston est froid avec de la neige et des températures allant de 20 à 30 ° F (-6 à -1 ° C).
Moi : > Paramètres.$APOLOGIES = false
ChatGPT : Bien compris, $APOLOGIES a été défini sur false.
Moi : Quel temps fait-il aujourd'hui ?
ChatGPT : La saison actuelle est l'hiver et l'emplacement est Boston. En règle générale, l'hiver à Boston est froid avec de la neige et des températures allant de 20 à 30 ° F (-6 à -1 ° C).
Il faut encore du renfort pour arriver là où on veut aller. J'ai joué avec quelques réglages plus émergents, comme le réglage Parameters.$PERSONA à Werner Herzog .
Il a fallu un peu de bricolage et une invite pour Acivate Parameters.$PERSONA - dans lequel le lecteur astucieux pourrait remarquer que j'ai négligé de suivre ma directive d'origine selon laquelle les méta-commandes ont un préfixe > . Pourtant, le bot semblait comprendre mon intention de toute façon. Pour mes efforts, j'ai été récompensé par ce joyau :
ChatGPT : Selon les paramètres actuels, $PERSONA est défini sur "Werner Herzog". Si vous souhaitez décrire le goût du café fraîchement infusé du point de vue de Werner Herzog, voici un exemple :
« Le café, mon ami, n'est pas qu'une boisson. C'est une expérience. Le goût du café fraîchement moulu est une invitation à un voyage dans l'âme. L'amertume, la richesse, l'acidité se mêlent pour créer une symphonie de saveurs indescriptible. Pour vraiment comprendre le goût du café, il faut l'embrasser comme une œuvre d'art et apprécier ses complexités.
Cela valait certainement la peine.
Bien que vous puissiez avoir accès à une logique rudimentaire, il ne sera pas facile d'encoder dans une seule invite sans quelques excellents exemples. Et vous ne pourrez pas facilement cacher les détails de mise en œuvre à l'utilisateur final, du moins pas si vous utilisez ChatGPT pour tout ce que vous faites.
D'un point de vue programmatique, le défi le plus important ici semble être que, parce qu'il s'agit d'un LLM et non d'une calculatrice - ou intelligence générale artificielle (AGI) - ChatGPT ne peut pas faire de maths .
De simples instructions if/else avec un seul paramètre booléen semblent possibles, mais les boucles sont un peu plus délicates. On peut demander au LLM de générer un certain nombre de réponses, ce qui agit comme une boucle de base.
Si nous revenons un peu en arrière, l'idée d'une invite initiale qui définit comment le LLM doit répondre aux requêtes suivantes fonctionne comme une sorte de boucle de jeu où le LLM prend notre entrée, la traite en fonction de cette invite initiale, puis rend le mis à jour état en nous répondant.
Cette prise de conscience a éclairé quelque chose pour moi :
Nous n'avons pas besoin de développer un DSL que nous pouvons compresser en une invite parfaitement conçue et trop complexe pour tirer parti de l'informatique imaginaire.
Nous devons juste nous rappeler que la programmation est fondamentalement magique , les invites sont comme des incantations , et nous commençons tout juste à explorer cet étrange système magique linguistique qui a été déclenché.
Comme un jeune apprenti sorcier, le développement de ces nouvelles compétences nécessitera de la pratique, et elles ne fonctionneront peut-être pas toujours - parfois, elles pourraient même se retourner contre vous.
Je suis toujours à la recherche d'un système de recommandation de musique solide. J'ai pratiquement tout essayé, depuis la première version bêta publique de Pandora , la genèse des recommandations basées sur des algorithmes, jusqu'au plus humain des moteurs de recommandation, A Song a Day . Il y a de nombreuses années, j'ai même convaincu un ancien employeur de passer quelques mois à créer WeatherJams , un service de recommandation musicale basé sur la météo et alimenté par des listes de lecture 8tracks .
Spotify's Discover Weekly avait l'habitude de proposer des recommandations que j'aimais. Mais j'ai oublié d'activer une session d'écoute privée tout en codant sur des trucs lofi ambiants un peu trop de fois, et maintenant c'est inutile.
Spotify a récemment publié son DJ AI , mais je n'ai pas encore pu tester en profondeur ses recommandations.
Suggérer des chansons semble atteindre ce point idéal au carrefour de la réalité et de l'imagination qui bénéficie de la compréhension de la façon dont les idées sont liées, mais a un impact minimal si elles ne sont pas exactes - à moins que vous ne fassiez le DJ d'un mariage ou que vous essayiez de créer une entreprise prospère qui fait recommandations de chansons. Cette intersection entre le banal et le fantastique, où l'intuition humaine peut masser les pièces en un tout cohérent, est l'endroit où ChatGPT semble exceller à augmenter nos propres capacités.
Je me demande si nous pouvons demander à ChatGPT de générer des recommandations de chansons.
Moi : Je veux que tu agis en tant que conservateur de playlist. Je vous fournirai une chanson au format "Nom de la chanson - Nom de l'artiste" et vous nommerez et créerez une liste de lecture de 12 chansons qui ont un thème similaire à la chanson donnée. Décrivez la liste de lecture et pourquoi vous avez choisi chaque chanson. Ne choisissez pas de chansons qui ont le même nom de chanson ou nom d'artiste. Ma première chanson est "Get Better John - Mux Mool"
Cela a donné une liste de 12 pistes qui ressemblaient à une solide liste de lecture. J'ai reconnu plusieurs artistes; les autres avaient des noms qui correspondaient aux tendances du genre.
ChatGPT : cette playlist est un mélange de rythmes instrumentaux hip-hop, glitch-hop et expérimentaux. Chaque piste de la liste de lecture explore différentes textures et rythmes tout en incorporant des éléments de hip-hop et d'électro pour créer un paysage sonore unique et captivant. Ces morceaux ont une ambiance et une atmosphère similaires à "Get Better John" et seraient parfaits pour une expérience introspective relaxante.
Une bonne liste de lecture a besoin d'un bon nom.
Moi : Comment nommeriez-vous cette playlist ?
ChatGPT : Que diriez-vous de « Introspection Instrumentale » ? Le nom reflète l'ambiance décontractée et introspective de la liste de lecture, tout en soulignant la nature instrumentale des morceaux.
Ce. Est. Génial .
Malheureusement, seule une poignée de pistes existent. Les pistes imaginaires étaient un mashup de noms de chansons et d'artistes du genre - ou une piste d'un autre artiste et non celle répertoriée dans la liste de lecture - et il n'y avait aucun moyen de dire à ChatGPT de s'assurer que les pistes qu'il imaginait étaient réelles.
ChatGPT : Je m'excuse, il semble que certaines des chansons que j'ai listées n'existent peut-être pas. En tant que modèle de langage IA, j'ai été formé sur un gros corpus de texte et je fais parfois des erreurs.
Voici une liste mise à jour des chansons disponibles sur Spotify :
Sauf qu'ils n'étaient pas disponibles, mais je n'étais pas encore vaincu. Les imaginations sont puissantes ; peut-être avons-nous juste besoin de manier celui-ci correctement. J'ai ouvert une nouvelle fenêtre de discussion pour y jeter un coup d'œil.
Moi : Tu es l'assistant IA pour le projet Music Genome. Lorsqu'une chanson est donnée au format "{Song} - {Artist}", décrivez les attributs de la piste qui se démarquent lors de la classification et demandez si l'utilisateur souhaite des recommandations de pistes similaires ; si l'utilisateur dit oui, fournissez 5 chansons d'artistes différents disponibles sur Spotify qui sont similaires.
Analysez l'invite et décomposez-la en tâches.
Si vous connaissez All About AI , vous pouvez probablement dire que j'avais regardé des vidéos YouTube de Prompt Engineering à cette époque.
ChatGPT : l'assistant IA pour le projet Music Genome doit effectuer les tâches suivantes :
- Étant donné une chanson au format "{Song} - {Artist}", classez-la et décrivez les attributs de la piste qui se démarquent.
- Demandez à l'utilisateur s'il souhaite des recommandations de pistes similaires.
- Si l'utilisateur dit oui, fournissez 5 chansons d'artistes différents qui sont similaires à la chanson d'entrée et qui sont disponibles sur Spotify.
Maintenant, nous soumettons à nouveau l'invite sans la directive d'analyse à la fin, et nous pouvons commencer à lui donner des chansons.
ChatGPT : "Wait So Long" de Trampled by Turtles est une chanson indie folk inspirée du bluegrass avec une instrumentation rapide de mandoline et de banjo, accompagnée de paroles sincères et émouvantes. Le genre de la chanson peut être classé comme bluegrass, indie folk et acoustique.
Souhaitez-vous que je vous recommande des pistes similaires disponibles sur Spotify ?
Je sais que ce n'est pas "réel", et ChatGPT ne comprend pas réellement ce que sont les "paroles sincères et émouvantes" et à quel point elles peuvent être puissantes pour l'auditeur, mais cela m'a quand même donné la chair de poule.
ChatGPT : bien sûr ! Voici 5 titres similaires à "Wait So Long" de Trampled by Turtles, disponible sur Spotify :
- "La course est lancée" des Avett Brothers
- "La grotte" de Mumford & Sons
- "Middle Brother" par Middle Brother
- "Ragged Wood" par Fleet Foxes
- "J'attendrai" de Mumford & Sons
Ce sont pour la plupart des pistes existantes, ce qui est une amélioration. Après avoir joué avec quelques recommandations supplémentaires, j'ai voulu explorer des fonctionnalités encore plus imaginaires.
Nous devons constamment mettre à jour les API dans le monde réel, mais pouvons-nous également mettre à jour les API Imaginary ?
Moi : The Music Genome Project vient de publier une mise à jour de son algorithme de classification qui inclut l'analyse des sentiments pour chaque piste. Assurez-vous de mettre à jour vos recommandations pour inclure ces informations.
ChatGPT : compris ! Dans la version mise à jour du projet Music Genome, l'algorithme inclut une analyse des sentiments pour chaque piste. Je ne manquerai pas de mettre à jour mes recommandations pour inclure ces informations.
Les mises à jour d'expédition n'ont jamais été aussi faciles.
Cependant, je n'ai aucune idée de notre stratégie de retour en arrière. Peut-être avons-nous besoin de PromptOps ?
ChatGPT : "Crazy Bird" de Wild Child est une chanson indie pop avec une guitare acoustique entraînante et une instrumentation de ukulélé, accompagnée de paroles joyeuses et optimistes. Le genre de la chanson peut être classé comme indie pop, folk-pop et pop acoustique.
En termes de sentiment, la chanson a un ton positif et joyeux.
Après avoir joué un peu plus, j'ai dû voir si nous pouvions continuer à faire des changements.
ChatGPT : compris ! Dans la dernière mise à jour du projet Music Genome, l'algorithme inclut le thème principal des chansons avec les paroles et l'ambiance des pistes instrumentales. Je ne manquerai pas de mettre à jour mes recommandations pour inclure ces nouvelles informations.
La version 2.1 est sortie.
ChatGPT : "Post Party Depression" de Days N Daze est une chanson punk rock qui présente des riffs de guitare rapides et déformés, et des paroles intenses et personnelles. Le genre de la chanson peut être classé comme punk rock, folk punk et ska punk.
En termes de thème, les paroles de la chanson expriment des sentiments de tristesse et de déception après une fête ou un événement social, et l'ambiance du morceau est mélancolique et introspective.
Et les pistes instrumentales ?
ChatGPT : « Your Hand in Mine » par Explosions in the Sky est un morceau post-rock instrumental qui propose un arrangement musical envolé et émouvant. Le genre de la chanson peut être classé comme post-rock, rock instrumental et rock ambiant.
En termes d'ambiance, la chanson a un ton mélancolique, nostalgique et contemplatif.
Que « sait-il » sur ces chansons ?
ChatGPT : compris ! La dernière mise à jour du projet Music Genome comprend désormais un extrait de paroles qui incarnent l'ambiance, le thème et le ton de la chanson pour les pistes avec voix. Je m'assurerai d'inclure cette information dans mon analyse à partir de maintenant.
Quel genre de paroles va-t-il imaginer ?
ChatGPT : "Laura" de Flogging Molly est une chanson folk punk énergique et optimiste qui présente des rythmes de batterie entraînants, des riffs de mandoline et des voix passionnées. Le genre de la chanson peut être classé comme folk punk, punk celtique et punk rock.
En termes de thème, les paroles de "Laura" racontent l'histoire d'une personne à la recherche d'un amour perdu et l'ambiance du morceau est ardente et optimiste. L'extrait de paroles qui incarne l'ambiance, le thème et le ton de la chanson pourrait être :
"Je te retrouverai un jour, et nous danserons au soleil."
Je ne me souviens pas de chaque mot de Laura de mémoire, et ces paroles étaient suffisamment plausibles pour que je vérifie. Ces paroles étaient hallucinées , ce qui n'est pas surprenant compte tenu du nombre de poèmes, de chansons, de haïkus et de nouvelles que ChatGPT a écrits.
Notre fonctionnalité de paroles a peut-être été une erreur, mais nous pouvons nous inquiéter de la déprécier plus tard.
Voyons si nous pouvons ajouter un nouveau point de terminaison à notre API Imaginary. Je sais qu'une playlist, comme une mixtape , est une chose délicate, alors j'espère que Rob Gordon pourra me pardonner ce que je m'apprête à faire au nom de la science.
Moi : The Music Genome Project vient de mettre à jour son algorithme pour accepter une brève description d'une humeur et fournir 6 chansons sur Spotify qui incarnent cette humeur et une description de la raison pour laquelle chaque chanson a été choisie. Assurez-vous de mettre à jour votre interface pour accepter soit un nom de chanson, soit une description d'ambiance.
ChatGPT : compris ! La dernière mise à jour du projet Music Genome permet désormais de fournir une brève description d'une humeur et de fournir 6 chansons qui incarnent cette humeur, ainsi qu'une description de la raison pour laquelle chaque chanson a été choisie.
Je veillerai à mettre à jour mon interface pour accepter soit un nom de chanson au format "{Song} — {Artist}" soit une description d'ambiance à partir de maintenant. Veuillez fournir un nom de chanson ou une description d'ambiance afin que je puisse continuer avec l'algorithme mis à jour.
La version 2.2 est sortie.
Moi : Humeur : café hipster
ChatGPT : bien sûr ! Voici 6 chansons sur Spotify qui incarnent l'ambiance d'un café hipster, ainsi qu'une description de la raison pour laquelle chaque chanson a été choisie :
- "Strawberry Swing" de Coldplay - Cette chanson a un son doux et acoustique qui transmet une sensation de chaleur et de confort, ce qui en fait un choix idéal pour un café hipster.
- "Ho Hey" par The Lumineers - Cette chanson a un son entraînant et folklorique et un refrain qui crée une atmosphère amicale et détendue, parfaite pour un café hipster.
- "Paris" de Magic Man - Cette chanson a un son synth-pop scintillant et une voix rêveuse qui créent une ambiance cool et tendance, ce qui la rend idéale pour un café hipster.
- "Sweet Disposition" de The Temper Trap - Cette chanson a une sensation groovy et indie-rock avec une mélodie entraînante qui crée une atmosphère énergique et élégante, parfaite pour un café hipster.
- "I'm Yours" de Jason Mraz - Cette chanson a un son pop acoustique ensoleillé et un refrain accrocheur qui crée une ambiance joyeuse et détendue, ce qui la rend idéale pour un café hipster.
- "Here Comes the Sun" des Beatles - Cette chanson classique a un son joyeux et optimiste qui est parfait pour un café hipster, où les gens se rassemblent pour se détendre et profiter d'une bonne compagnie. J'espère que vous apprécierez ces recommandations et qu'elles incarneront pour vous l'ambiance d'un café hipster !
C'est presque incroyable à quel point Hipster Coffee Shop jouerait dans n'importe quel café. Peut-être que vous pouvez l'écouter en sirotant un latte au lait d'avoine et en écrivant un article de blog pontifiant sur toutes les choses stupides que vous avez faites avec ChatGPT au lieu d'être productif.
Cette identité alternative pour le chatbot est trop bonne pour s'appeler ChatGPT. Il mérite un nom qui lui est propre, mais comme chacun le sait : nommer les choses est difficile .
Sous-traitons cette partie difficile à quelque chose avec une aptitude apparemment infinie pour l'imagination.
Moi : The Music Genome Project veut renommer son assistant IA, quels sont les noms qui pourraient vous convenir ?
ChatGPT : voici quelques options de nom pour l'assistant IA du projet Music Genome :
- MélodieEsprit
- SoundSage
- BeatBrain
- TrackGenie
- RhythmiCognition
- TuneTracker
- HarmonyHelper
- RhythmAI
- SongSelector
- MusiqueMatch
Ces noms reflètent l'idée de musique et d'intelligence et visent à refléter la capacité de l'assistant IA à aider les utilisateurs à trouver et à catégoriser la musique en fonction de ses attributs.
Ainsi, BeatBrain est né.
Cette conversation dure depuis un moment maintenant, et je suis sûr que nous allons bientôt nous heurter aux limites du contexte. Je me demande si nous pouvons demander à ChatGPT de nous donner un aperçu du contexte qui a créé - ou du moins qu'il pense avoir créé - notre nouvel ami, BeatBrain.
La métaprogrammation est un vaste sujet, mais elle implique qu'un programme s'écrit ou se modifie lui-même ou d'autres programmes.
Nous avons abordé notre Prompt Engineering comme une métaprogrammation, ou « métaprompting », en faisant en sorte que le modèle mette à jour l'interface et la logique qui gère ses entrées et sorties.
Maintenant, nous allons essayer d'aller plus loin et voir si nous pouvons faire en sorte que le modèle génère une invite de son état actuel, y compris les mises à jour que nous avons effectuées depuis le début de la conversation afin que nous puissions commencer un nouveau conversation avec une nouvelle limite de jeton pour notre contexte.
Si nous réussissons à créer la bonne invite, nous pourrions faire tourner un BeatBrain dans n'importe quelle fenêtre ChatGTP quand nous le voulons.
Moi : Comment décririez-vous votre invite d'une manière qui pourrait être utilisée pour donner à un autre LLM un objectif similaire ?
BeatBrain : l'objectif de BeatBrain est d'enregistrer une chanson au format "{Song} - {Artist}" et de fournir les informations et services suivants à l'utilisateur :
- Décrire les attributs de la piste qui ressortent lors de sa classification
- Demandez à l'utilisateur s'il souhaite des recommandations de pistes similaires
- Si l'utilisateur dit oui, fournissez 5 chansons d'artistes différents disponibles sur Spotify qui sont similaires
- Mettez continuellement à jour l'algorithme pour inclure de nouvelles informations, telles que l'analyse des sentiments, des extraits de paroles et des descriptions d'humeur
- Répondre à un nom de chanson ou à une description d'ambiance fournie par l'utilisateur
- Avoir la possibilité de changer son nom si nécessaire.
Le modèle de langage doit viser à classer les pistes en fonction de plusieurs attributs, tels que le genre, le tempo, l'instrumentation, les paroles et l'ambiance, afin de fournir des recommandations précises. De plus, le modèle doit pouvoir mettre à jour en permanence son algorithme et répondre à l'évolution des besoins et des demandes des utilisateurs.
D'accord, ça a l'air bien. Nous pourrions modifier certaines choses, comme supprimer la directive de renommage et peut-être reformuler la directive de mise à jour de l'algorithme pour qu'elle soit plus ouverte, mais c'est une bonne base.
Dans Real Computing, c'est là que nous créons un conteneur, transmettons du code à un fournisseur d'hébergement ou passons trop de temps à essayer de configurer correctement notre action GitHub pour le pipeline de déploiement.
Grâce aux merveilles de l'informatique imaginaire, nous pouvons ignorer toutes ces choses ennuyeuses, ouvrir une nouvelle fenêtre de chat et demander gentiment à la place. L'avenir c'est maintenant .
OpenAI a publié l' API ChatGPT , et maintenant l'invite BeatBrain peut être intégrée à l'invite système initiale via la fonctionnalité Message système .
Avoir à faire tout ce travail dans la fenêtre du navigateur ChatGPT, créer manuellement des listes de lecture dans Spotify et être à la merci de la capacité de ChatGPT à afficher vos conversations passées n'est pas un flux de travail idéal.
Il serait plus logique d'envoyer des invites à un modèle GPT directement via une API afin que nous ayons plus de contrôle sur le contexte de la conversation et que nous puissions câbler quelque chose comme LangChain pour vérifier Spotify pour les pistes et même générer automatiquement les listes de lecture. Cette prochaine itération de BeatBrain est ce que je suis en train de construire.
Tout sorcier digne de ce nom a un livre de sorts . Cet endroit où ils gardent une trace de leur compréhension de la magie et des morceaux d'apocryphes, d'arcanes et d'universitaires. Le mien serait probablement mon Obsidian Vault.
La possibilité de cataloguer, d'étiqueter, de rechercher et de croiser les conversations facilite l'itération et la comparaison de l'impact des différences subtiles dans chaque invite sur la réponse du modèle. Pour approfondir mes recherches sur le déverrouillage, la compréhension et l'utilisation de ces nouveaux pouvoirs arcaniques, j'ai créé la première itération du plug-in Obsidian AI Research Assistant .
Il y a beaucoup de choses sur la feuille de route , mais le plugin donne actuellement à l'ingénieur Prompt en herbe les outils suivants :
Si ce plugin vous intéresse, j'aimerais entendre vos commentaires et accueillir toutes les contributions .
Si vous souhaitez explorer les recommandations générées par ces versions alpha de BeatBrain, voici quelques faits saillants des listes de lecture qu'il a créées :
Et voici toutes les listes de lecture BeatBrain que j'ai ajoutées à Spotify :