Salut tout le monde! Je m'appelle Nataraj et tout comme vous, je suis fasciné par les récents progrès de l'intelligence artificielle. Réalisant que je devais me tenir au courant de tous les développements, j'ai décidé de me lancer dans un parcours personnel d'apprentissage. C'est ainsi que 100 jours d'IA sont nés ! Avec cette série, je vais découvrir les LLM et partager des idées, des expériences, des opinions, des tendances et des apprentissages à travers mes articles de blog. Vous pouvez suivre le voyage sur HackerNoon ici ou sur mon site Web personnel ici . Dans l'article d'aujourd'hui, nous chercherons à créer un noyau sémantique à l'aide de GPT-4.
Semantic Kernel est un SDK open source de Microsoft qui aide les développeurs à créer des applications d'IA, notamment des chatbots, des RAG, des copilotes et des agents. C'est similaire à ce que fait Langchain. Nous pouvons probablement l'appeler la réponse de Microsoft à Langchain.
Il est conçu pour rendre les logiciels existants extensibles et faciles à exposer aux fonctionnalités d’IA. Il est également conçu en prévision du fait que les applications souhaitent mettre à jour leurs modèles d'IA vers les versions les plus récentes et les plus performantes au fil du temps.
Bien que l'espace évolue très rapidement, voici quelques définitions à garder à l'esprit lorsque nous explorons le noyau sémantique.
Pour expliquer le fonctionnement du noyau sémantique, prenons un exemple de prise d'un morceau de texte et de sa conversion en tweet de 140 caractères. Mais nous le ferons en utilisant le noyau sémantique. Nous avons fait un résumé similaire dans des articles précédents ici .
J'utiliserai la bibliothèque python du noyau sémantique, mais comme le noyau sémantique est créé par Microsoft, vous pouvez également le faire en C#. Consultez la documentation publique de Microsoft pour savoir comment procéder.
Ci-dessous, nous lançons le noyau sémantique et configurons son service de complétion de texte en lui disant d'utiliser le modèle gpt-4 d'OpenAI comme LLM à utiliser pour la complétion de texte.
import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion import os from IPython.display import display, Markdown import asyncio from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file api_key = os.environ['OPENAI_API_KEY'] kernel = sk.Kernel() kernel.add_text_completion_service("openai", OpenAIChatCompletion("gpt-4",api_key)) print("Kernel Initiated")
Dans le monde du noyau sémantique, nous avons un concept de fonction sémantique qui est différent d'une fonction native. Une fonction native correspond aux fonctions régulières que nous écrivons dans n’importe quel langage de programmation. Les fonctions sémantiques sont des encapsulations d'invites LLM répétables qui peuvent être orchestrées par le noyau. Vous aurez une meilleure idée de ce qu’est la fonction sémantique à l’étape suivante où nous en rédigerons une.
Ici, nous créons une invite sk_prompt qui résume la connexion en moins de 140 caractères (c'est notre objectif avec cet exercice). Nous passons ensuite l'invite en entrée pour créer une fonction sémantique avec le noyau et stockons ce qui nous donne en retour l'objet summary_function qui représente la fonction sémantique que nous avons créée et qui est accessible à plusieurs reprises via le noyau. Notez que lorsque nous avons créé une fonction sémantique, nous utilisons une invite client et donnons également des informations de configuration LLM telles que max_tokens, température, etc.. Revenons maintenant à l'image précédente des fonctions natives et sémantiques et cela aura plus de sens.
sk_prompt = """ {{$input}} Summarize the content above in less than 140 characters. """ summary_function = kernel.create_semantic_function(prompt_template = sk_prompt, description="Summarizes the input to length of an old tweet.", max_tokens=200, temperature=0.1, top_p=0.5) print("A semantic function for summarization has been registered.")
Maintenant, nous créons le texte que nous voulons résumer à l'aide de la variable sk_input et appelons la fonction sématique via kernal puis affichons le résultat.
sk_input = """ Let me illustrate an example. Many weekends, I drive a few minutes from my house to a local pizza store to buy a slice of Hawaiian pizza from the gentleman that owns this pizza store. And his pizza is great, but he always has a lot of cold pizzas sitting around, and every weekend some different flavor of pizza is out of stock. But when I watch him operate his store, I get excited, because by selling pizza, he is generating data. And this is data that he can take advantage of if he had access to AI. AI systems are good at spotting patterns when given access to the right data, and perhaps an AI system could spot if Mediterranean pizzas sell really well on a Friday night, maybe it could suggest to him to make more of it on a Friday afternoon. Now you might say to me, "Hey, Andrew, this is a small pizza store. What's the big deal?" And I say, to the gentleman that owns this pizza store, something that could help him improve his revenues by a few thousand dollars a year, that will be a huge deal to him. """ # using async to run the semantic function async def run_summary_async(): summary_result = await kernel.run_async(summary_function, input_str=sk_input) display(summary_result) asyncio.run(run_summary_async())
Voici le résultat que j'ai obtenu :
L’IA peut analyser les données de vente pour aider un petit propriétaire de pizzeria à optimiser son stock, augmentant ainsi potentiellement son chiffre d’affaires annuel.
Le noyau sémantique a plus de fonctionnalités, telles que l'utilisation conjointe des fonctions sémantiques et des fonctions natives, et est conçu pour créer des applications d'IA puissantes. J'écrirai davantage à leur sujet dans les prochains articles.
C'est tout pour le jour 8 des 100 jours d'IA.
J'écris une newsletter intitulée Above Average dans laquelle je parle des idées de second ordre derrière tout ce qui se passe dans la grande technologie. Si vous êtes dans la technologie et que vous ne voulez pas être dans la moyenne, abonnez-vous .
Suivez-moi sur Twitter , LinkedIn ou ** HackerNoon ** pour les dernières mises à jour sur 100 jours d'IA. Si vous êtes dans le domaine de la technologie, vous pourriez être intéressé à rejoindre ma communauté de professionnels de la technologie ici .
Jour précédent 7 : Comment créer Chat-GPT pour vos données à l'aide de Langchain ?