Hallo alle miteinander! Ich bin Nataraj und genau wie Sie bin ich von den jüngsten Fortschritten der künstlichen Intelligenz fasziniert. Als mir klar wurde, dass ich über alle Entwicklungen auf dem Laufenden bleiben musste, beschloss ich, eine persönliche Lernreise anzutreten, und so waren 100 Tage KI geboren! In dieser Reihe lerne ich etwas über LLMs und teile in meinen Blogbeiträgen Ideen, Experimente, Meinungen, Trends und Erkenntnisse. Sie können die Reise hier auf HackerNoon oder hier auf meiner persönlichen Website verfolgen. Im heutigen Artikel werden wir versuchen, mithilfe von GPT-4 einen semantischen Kernel zu erstellen.
Semantic Kernel ist ein Open-Source-SDK von Microsoft, das Entwickler bei der Erstellung von KI-Anwendungen wie Chatbots, RAGs, Copiloten und Agenten unterstützt. Es ähnelt der Funktionsweise von Langchain. Wir können es wahrscheinlich als Microsofts Antwort auf Langchain bezeichnen.
Es wurde entwickelt, um vorhandene Software erweiterbar und einfach für KI-Funktionen verfügbar zu machen. Es ist außerdem so konzipiert, dass Anwendungen ihre KI-Modelle im Laufe der Zeit auf die neuesten und besten Versionen aktualisieren möchten.
Obwohl sich der Bereich sehr schnell weiterentwickelt, sollten Sie bei der Erforschung des semantischen Kernels einige Definitionen im Hinterkopf behalten.
Um zu erklären, wie Semantic Kernel funktioniert, nehmen wir ein Beispiel, bei dem ein Textstück in einen Tweet mit 140 Zeichen umgewandelt wird. Aber wir werden dies mit Semantic Kernel tun. Eine ähnliche Zusammenfassung haben wir in früheren Beiträgen hier vorgenommen .
Ich werde die Python-Bibliothek des Semantic Kernels verwenden, aber da der Semantic Kernel von Microsoft erstellt wird, können Sie dies auch in C# tun. Informationen dazu finden Sie in der öffentlichen Dokumentation von Microsoft.
Im Folgenden initiieren wir den semantischen Kernel und richten seinen Textvervollständigungsdienst ein, indem wir ihn anweisen, das gpt-4-Modell von OpenAI als LLM für die Textvervollständigung zu verwenden.
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")
In der Welt des semantischen Kernels haben wir ein Konzept der semantischen Funktion, das sich von einer nativen Funktion unterscheidet. Eine native Funktion sind die regulären Funktionen, die wir in einer beliebigen Programmiersprache schreiben. Semantische Funktionen sind Kapselungen wiederholbarer LLM-Eingabeaufforderungen, die vom Kernel orchestriert werden können. Eine bessere Vorstellung davon, was eine semantische Funktion ist, erhalten Sie im nächsten Schritt, in dem wir eine schreiben.
Hier erstellen wir eine Eingabeaufforderung sk_prompt , die die Verbindung in weniger als 140 Zeichen zusammenfasst (das ist unser Ziel mit dieser Übung). Anschließend übergeben wir die Eingabeaufforderung als Eingabe, um mit dem Kernel und dem Speicher eine semantische Funktion zu erstellen, die uns im Gegenzug das Objekt summary_function zurückgibt, das die von uns erstellte semantische Funktion darstellt und auf das wiederholt über den Kernel zugegriffen werden kann. Beachten Sie, dass wir beim Erstellen einer semantischen Funktion eine Kundenaufforderung verwenden und auch LLM-Konfigurationsinformationen wie max_tokens, Temperatur usw. angeben. Gehen Sie nun zurück zum vorherigen Bild der nativen vs. semantischen Funktionen und es wird mehr Sinn ergeben.
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.")
Nun erstellen wir den Text, den wir zusammenfassen möchten, über die Variable sk_input und rufen über Kernal die sematische Funktion auf und zeigen dann das Ergebnis an.
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())
Hier ist die Ausgabe, die ich erhalten habe:
KI kann Verkaufsdaten analysieren, um einem kleinen Pizzaladenbesitzer dabei zu helfen, seinen Lagerbestand zu optimieren und so möglicherweise seinen Jahresumsatz zu steigern.
Semantic Kernel verfügt über mehr Funktionen wie die gemeinsame Verwendung semantischer Funktionen und nativer Funktionen und ist darauf ausgelegt, leistungsstarke KI-Anwendungen zu erstellen. Ich werde in zukünftigen Beiträgen mehr darüber schreiben.
Das war's für Tag 8 von 100 Tagen KI.
Ich schreibe einen Newsletter mit dem Titel Above Average, in dem ich über die Erkenntnisse zweiter Ordnung spreche, die hinter allem stecken, was in der Big-Tech-Branche passiert. Wenn Sie in der Technikbranche tätig sind und nicht durchschnittlich sein möchten, abonnieren Sie es .
Folgen Sie mir auf Twitter , LinkedIn oder ** HackerNoon ** für die neuesten Updates zu 100 Tagen KI. Wenn Sie im technischen Bereich tätig sind, könnten Sie daran interessiert sein, meiner Community von technischen Fachleuten hier beizutreten.
Vorheriger Tag 7: Wie erstellt man mit Langchain Chat-GPT für Ihre Daten?