Werk:AI mit Arnie/Function Calling, Memory & RAG (Assistant API)
In diesem Video werden wir den ersten „leichten“ KI-Agenten erstellen, beziehungsweise eine Application, die aber viele Dinge machen kann. Sie wird Memory haben, das heißt, wir können uns mit ihr unterhalten, und sie wird sich merken, wer wir sind – genauso wie ChatGPT. Sie wird RAG haben. Sie wird also eine Vector Database verwenden, um die Dinge zu speichern, die sie sich merken soll. Sie wird zusätzlich noch Tools haben, wie zum Beispiel einen Taschenrechner, Python-Bibliothek und Function Calling an die SERer-API oder die Google-API.
Das heißt, wir haben wirklich eine richtig starke, gute Application, die eigentlich alles machen kann – genauso wie ChatGPT. Aber diese Application kannst du entweder in einem separaten Interface laufen lassen oder aber auch in Webseiten einbauen und überall einbauen. Das Einbauen und externe Hosten sehen wir uns später an, denn jetzt geht es natürlich erstmal in die Entwicklung. Und wie gesagt, wir machen das Ganze so einfach wie möglich. Da du im letzten Video schon gesehen hast: Das muss nicht so kompliziert sein.
Also, wir gehen hier in diese Chatflows und wir klicken „Add New“. Jetzt können wir natürlich das Plus klicken, und bei diesem Plus siehst du diese Agents. Klicken wir auf die Agents, dann siehst du, dass wir hier AutoGPT, Baby AGI und so weiter hinzufügen können. Und ich muss sagen, Baby AGI, das ist der aller-, allererste Framework, der versucht hat, viele LLMs zu kombinieren. Und Baby AGI ging tatsächlich schon, ich glaube, Anfang April 2023 online. Also in der KI-Welt ist das natürlich schon eine Weile. Und ich habe auch relativ schnell schon Tutorials darüber gemacht.
Mittlerweile funktionieren die Dinge aber sehr, sehr, sehr viel einfacher, weil OpenAI etwas rausgebracht hat, nämlich die Assistant API. Und über die Assistant API können wir wahnsinnig viele Dinge machen. Das heißt, wir holen uns unseren OpenAI-Assistent hier rein. Und dieser OpenAI-Assistent kann wahnsinnig viele Dinge machen. Und du siehst hier bei diesen roten Dingen, dass wir nur zwei Sachen ankreuzen müssen.
Wir müssen einen Assistenten auswählen oder natürlich auch neu erstellen. Und wir müssen ein paar Tools hinzufügen. Die Tools, also irgendein Tool, muss man hinzufügen, sonst funktioniert der Agent nicht. Wir fügen jetzt erstmal das einfachste Tool hinzu. Das heißt, wir klicken nochmal Plus, wir scrollen runter auf die Tools. Das heißt, damit machen wir Function Calling – jetzt. Wo sind die Tools? Die sind da unten, und wir werden einfach mal einen Calculator hier reinschmeißen. Das heißt, einen Taschenrechner. Diesen Taschenrechner, den verbinden wir jetzt einfach mit diesen Tools. Und jetzt machen wir Function Calling an diesen Taschenrechner, immer wenn unser Assistent gewisse Dinge nicht weiß.
Jetzt müssen wir natürlich den Assistenten hinzufügen. Und du klickst einfach mal bei Open und wir erstellen einen neuen, falls du noch keinen hast. Wir müssen die OpenAI-Credentials hinzufügen. Wir haben natürlich schon Credentials. Unsere Credentials heißen „Kurs“, die haben wir schon gespeichert. Falls du noch keine Credentials hast, dann klickst du natürlich „Create New“. Du gibst denen einen Namen und holst dir den OpenAI-API-Key hier rein. Und hier muss danach einfach der Key rein, den du dir erstellst. Das sparen wir uns, du hast schon gesehen, wie wir die OpenAI-API-Keys erstellen und hier reinholen.
Danach müssen wir uns das Assistant-Modell aussuchen. Das heißt, wir klicken hier drauf, und wir können uns über die Assistant API jetzt Zugriff holen. Ich würde dir generell raten: Aktuell, zum Zeitpunkt, wo ich den Kurs aufnehme, ist das GPT-4o, das Omni-Modell, aktuell wirklich das Beste. Das kann viel, das ist auch relativ günstig ... also verwenden wir GPT-4 Omni für unseren Assistenten. Wir geben unserem Assistenten einen Namen. Und wie soll unser Assistent hier heißen? Ich nenne den ganz einfach mal „Kurstest“. Das ist jetzt nicht wirklich wichtig.
Jetzt müssen wir ihm aber sagen, was dieser Assistent kann. Also, wobei soll er uns helfen? Und du siehst das auch hier schon: Wir haben 512 Charaktere, die wir hier tatsächlich einfügen können. Wir können hier einfach nur beschreiben, wobei er uns hilft. Ich will bei diesem Assistenten natürlich danach auch die RAG-Technologie mit einbauen. Das heißt, ich will Dinge hochladen. Und das ist hier einfach unser LangChain-Experte zum Beispiel. Ja, LangChain-Experte ist schon okay. Wir machen einen etwas witzigen Assistenten hier.
Du musst hier natürlich wissen: Du kannst hiermit wirklich Chatbots bauen, die auch für Unternehmen richtig, richtig gut sind. Das heißt, das musst du auf deinen spezifischen Use Case zuschneiden. Ich habe schon einige dieser Chatbots gebaut und verkauft. Für diese kann man relativ gutes Geld verlangen. Also, Leute sind bereit, zu bezahlen für solche Chatbots – ein Pauschalpreis, weil es viele Leute immer interessiert, so um die 1.000 im ersten Verkauf. Ja, die Dinge kann man schnell machen, aber natürlich muss man auch die Kunden bekommen, die Kunden betreuen und so weiter. Und die Preise können, um ehrlich zu sein, auch noch viel höher sein.
Danach können wir das Assistent-Icon hinzufügen, wenn wir das mögen. Wir können hier eine URL reinpacken, wenn uns das Ding nicht gefällt. Aber komm schon, ich denke, das Ding ist hübsch. Danach die Assistent Instructions, das heißt, wie soll sich dieses Ding verhalten? Ich will hier einfach mal ein paar Zeilen eingeben. Wie gesagt, das musst du natürlich wieder für dich selbst anpassen. „Du hilfst bei der Verwendung von LangChain. Du beachtest dein hochgeladenes Wissen, falls möglich. Und wenn jemand fragt, wo bekomme ich mehr Info, leitest du ihn auf diesen Link weiter.“ Das musst du natürlich nicht unbedingt mit einfügen. Das heißt, du musst nicht unbedingt noch mehr Links mit einfügen. Aber ich will ganz einfach was einfügen, dass Leute einfach auch auf einen Link kommen. Ich verwende hierfür einfach diese About-Page von dieser School, also diese School-Landing-Page von mir, wo ich einen kleinen gratis KI-Kurs habe und die Community, wo immer viele Leute online sind. Das heißt, wir gehen zurück und fügen hier einfach meinen School-Link ein.
Und im Groben war es das schon. Du kannst die Dinge natürlich so gut beschreiben, wie du nur willst. Erinnere dich daran: Das ist einfach nur der System-Prompt. Danach die Temperatur. Und wir können hier draufgehen: Je höher diese Dinge sind, umso kreativer wird das Ding. Und je niedriger, umso weniger kreativ. Ich denke, besonders kreativ muss man tatsächlich nicht sein, wenn man ein LangChain-Assistent sein will. Und natürlich: Du kannst auch hier klicken, wenn du die Temperatur erhöhen oder tiefer machen willst. Ich denke, ich will die Temperatur einfach mal auf 0,7 hier stellen. Danach Assistent P – hier können wir einstellen, wie divers die Antworten sein sollen. Ich will das einfach mal auf 1 lassen.
Und wir haben noch zusätzliche Tools. Das heißt, wir machen immer noch Function Calling völlig automatisch eingebaut dank der OpenAI API. Das heißt, wir haben hier den Code Interpreter und File Search. OpenAI stellt uns hier den Code Interpreter zur Verfügung. Das Ding wird Python-Code ausführen können und den File Search mitsamt einer Vector Database. Das ist das Coole hier von diesen Assistenten.
Jetzt haben wir die Code Interpreter-Files. Gehen wir hier drauf, dann siehst du, wir können hier natürlich Dinge hochladen, wenn wir wollen. Ich muss jedoch sagen, dass wir nicht unbedingt noch solche Dinge hochladen müssen. Aber das hier ist praktisch die File Search. Wir wollen natürlich ein paar Files hochladen, damit die Dinge in einer Vector Database gespeichert werden. Dazu klicken wir „Add Vector Store“, „Select Vector Store“, „Create New“. Jetzt könnte ich hier natürlich einen wirklich neuen Vector Store erstellen. Vector- Store Name sagen wir mal „Arni“. Die Expiration – sollen die Dinge gelöscht werden, zum Beispiel nach sieben Tagen, oder gespeichert werden? Ich denke, das ist schon okay so. Wir lassen die einfach mal aktiviert, und wir klicken „Add“.
Jetzt haben wir hier unsere Vector Database sofort erstellt, und zwar in unserem Assistenten, ohne auf zum Beispiel Pinecone zuzugreifen. Das ist natürlich der absolute Wahnsinn. Wir klicken jetzt einfach nur noch „Upload Files“.
Und ich werde hier ein Beispiel machen. Wir machen das so: Wir gehen auf die LangChain-Dokumentation. Und hier bekommen wir wirklich einige Informationen zu LangChain. Das funktioniert jetzt eigentlich fast genauso wie in „VectorShift“, was wir uns schon angesehen haben. Ich will das so einfach wie möglich machen. Ich kopiere die Dinge einfach bis hier unten, also „Copy“. Ich erstelle einfach mal eine Textdatei auf meinem Computer. Die mache ich da oben. Ich nenne die „LangChain“. Okay, habe sogar schon eine LangChain-Datei hier. Ich füge die Dinge ein. Das heißt, wir haben jetzt in einem Textdokument die LangChain-Dokumentation, zumindest einige Dinge davon. Das ist nur ein Beispiel. Ich speichere das Ding.
Wir können jetzt natürlich wieder zurückgehen in Flowise. Ich klicke „Upload Files“. Ich habe hier diese LangChain-Dokumentation. Ich öffne das Ding, und die Sachen werden hochgeladen. So verwenden wir RAG mit unserem OpenAI-Assistenten. Das ist natürlich der absolute Wahnsinn. Also klicken wir „Add“. Wie gesagt, das ist alles wirklich so einfach. Und was haben wir jetzt? Wir haben eine kleine App, die Function Calling macht und viele Dinge tun kann. Das heißt, ich klicke jetzt einfach mal hier drauf, und ich starte. Moment, zuerst natürlich noch speichern. Wir nennen das jetzt einfach mal „RAG Agent“. Das ist noch kein wirklicher Agent. Das Ding kann einfach nur gut Function Calling machen. Hier haben wir noch keine super Experten. Aber auch das kann man natürlich schon Agent nennen, wenn man so will. Ich klick mal „Save“. Und jetzt sehen wir uns an, wie das funktioniert.
„Hey, ich bin Arni. Kennst du LangChain?“ „Ja, ich kenne LangChain. LangChain ist ein Framework … „ und so weiter. Und ich bekomme sogar den Link auf „School“. Das heißt, wenn ich das in einem neuen Tab öffne, dann werde ich weitergeleitet auf diese School-About-Page. Natürlich könnte ich das auch wieder rausnehmen. Dafür machen wir ganz, ganz kurz „Bearbeiten“. Sagen wir, mir geht der Link auf die Nerven. Also, ich lösche einfach die Dinge von hier weg, komplett aus, damit wir nur noch Sachen über LangChain fragen und nicht mehr unbedingt hier die Dinge andauernd zurückbekommen.
Jetzt machen wir was anderes. „Was ist 99 x 99?“ Wir werden jetzt mit großer Wahrscheinlichkeit Function Calling an unseren Calculator machen. Und – haben wir auch gemacht. Der Calculator wurde verwendet. Wir haben hier unser Ergebnis. Und wenn wir 99 x 99 hier ausrechnen, dann sehen wir auch, dass das richtig ist. LLMs sind generell nicht richtig gut in Mathe. Und wir können natürlich auch unseren Code Interpreter verwenden, da wir den natürlich auch mit eingebaut haben. Ich könnte mal sowas hier fragen: „Erstelle ein Kuchendiagramm mit drei gleichmäßigen Stücken. Einmal LLM, einmal Diffusion, einmal Transformer.“ Ja, ich weiß, das macht überhaupt keinen Sinn. Mir ist nichts Besseres eingefallen. Ich will dir einfach nur zeigen, dass wir auch Function Calling an unseren Code Interpreter machen können, weil das halt relativ praktisch ist.
Hier ist das Kuchendiagramm, das die Verteilung von Diffusion, Transformer und LLM jeweils zu einem Drittel zeigt. Jeder Bereich repräsentiert 33,3 % des gesamten Kuchens: LLM, Transformer und Diffusion. Und ja, das Diagramm macht überhaupt keinen Sinn. Aber du siehst, wir können einfach die ganzen Dinge von der LangChain-Dokumentation abfragen. Wir können Function Calling an den Taschenrechner machen. Wir können auch Function Calling an den Code Interpreter machen. Und natürlich, wenn du andere Files hinzufügen willst, dann musst du natürlich nochmal „Plus“ klicken. Denn du weißt ja natürlich, dass du alles hier hinzufügen kannst. Wir könnten zum Beispiel runtergehen auf die Document Loaders, und hier kannst du verschiedene Document Loaders mit einbauen. Du kannst API-Document Loaders mit einbauen, und du könntest sogar Zugriff auf die LangChain-API geben und danach die Dinge abfragen.
Und bei diesen Document Loaders – da kannst du natürlich einbauen, was auch immer du willst: Sigma-Dateien, ganze Folder mit Files kannst du hier einbauen. Und wir haben ja gesagt, dass wir natürlich auch die Suche einbauen können, die Websuche. Ich könnte hier ja sowas mal fragen wie: „Wie hoch ist aktuell der Bitcoinpreis?“ Höchstwahrscheinlich weiß unser LLM das Ganze nicht, weil wir bis jetzt noch keinen Zugriff auf das Internet haben. „Ich habe derzeit keinen Zugriff auf das Internet.“ Sehr gut, das Ding lügt schon mal nicht. Aber wir können ihm natürlich Internetzugriff geben. Wir klicken „Plus“. Wir wollen hier auf „Tools“ runtergehen. Und bei den Tools können wir verschiedene Dinge einbauen: die Brave Search API, die Google Custom Search, wir könnten auch hier einen Python Interpreter dazu schmeißen oder die SERPer-Suche.
Die SERPer-Suche funktioniert meiner Meinung nach fast am besten. Und die Google-Suche – die kannst du über die Vertex AI aktivieren. Die Vertex AI haben wir uns natürlich schon mal angesehen. Deshalb will ich dir hier vielleicht die SERPer API zeigen. Das heißt, wir schmeißen hier die SERPer API rein. Wir stöpseln die SERPer API an bei diesen „Allowed Tools“. Und jetzt brauchen wir die Credentials. Wenn du keine Credentials hast, natürlich „Create New Credentials“. Wir geben dem Ganzen einen Namen, natürlich „Kurs“. Und jetzt müssen wir zur SERPer API hingehen. Wir googeln einfach „SERPer API Key“. Wir klicken auf SERPer API Key. Wir müssen uns hier einen Account machen, falls du noch keinen Account hast. Ich habe schon einen Account, also logge ich mich einfach ein. Wir klicken auf „API Key“. Wir klicken zum Beispiel „Reset Key“, falls wir Angst haben, dass jemand unseren Key schon gesehen hat. Wir klicken „Copy Key“. Wir gehen natürlich zurück in Flowise. Wir fügen unseren Key hier ein. Sagen wir, das machen wir KursSERer. Wir klicken hier „Add“. Und jetzt haben wir die SERPer API hier mit dazugefügt.
Das heißt, wir klicken jetzt „Speichern“. Wir gehen auf unser Chatsymbol. Und wir fragen einfach mal Folgendes: „Wie hoch ist der Bitcoinpreis? Durchsuche das Web.“ Ich denke, jetzt sollten wir die SERPer API verwenden, um das Web zu durchsuchen. „Der aktuelle Bitcoinpreis liegt bei 67.849,90 Cent.“ Und du siehst, hier wurde ein Tool verwendet – dieser kleine Schraubenschlüssel, das sich „Search“ nennt. Und du siehst auch, wie das hier verwendet wurde. Und ich will einfach mal kontrollieren, ob wir den richtigen Bitcoinpreis haben oder ob uns die SERPer API im Stich gelassen hat. 67.849 – und der Bitcoinpreis ist bei 68.036. Also 67.994. Natürlich schwankt der Bitcoinpreis auch sekündlich. Aber du siehst, wir haben auf den Cent genau den Bitcoinpreis bekommen: 67.967 aktuell. Flowise 67.849. Natürlich, die Preise werden sekündlich ein klein wenig schwanken.
Das heißt, wir haben jetzt wirklich ein Tool gebaut mit einem Taschenrechner. Das LLM kann rechnen. Mit der SERPer API – das LLM hat Zugriff auf das Internet. Zusätzlich haben wir natürlich noch einen System-Prompt, einen Namen. Das Ding hilft uns, die Dinge zu durchsuchen von LangChain. Wir haben die LangChain-Dokumentation hochgeladen. Das heißt, wir können alles befragen von LangChain. Du kannst natürlich noch mehrere Files hier hochladen. Also lad die Dinge hoch, an denen du das Ding eben trainieren willst. OpenAI leiht uns hier sozusagen die Vector Database aus. Wir haben den Code Interpreter, der Python laufen lassen kann. Wir haben hier mit drei einfachen Tools die beste Application gebaut, die man aktuell – Stand jetzt – bauen kann über die OpenAI API, und zwar über die Assistant API, weil die Dinge so gut sind. Und ja, man könnte hier sogar Bildgenerierungen einbauen und vieles, vieles mehr.
Du kannst hier kreativ werden. Der generelle Framework ist immer der gleiche. Du weißt, wie man all die Dinge mittlerweile macht. Und wenn du dich fragst, warum das so gut funktioniert: Wenn du zurück in den Playground gehst, kannst du mal auf „Assistance“ gehen. Und du siehst auch hier: Wir haben unseren Kurs-Test hier. Das heißt, unser Assistent wurde automatisch hier im Playground erstellt. Und den können wir auch hier weiterhin anpassen und bearbeiten. Wir können auch hier weitere Funktionen hochladen. Wir können auch hier weitere Dinge hinzufügen, weitere Tools hinzufügen. Wir können Function Calling machen an die Dinge, die wir wollen. Wir können mit diesen Assistenten arbeiten so einfach, wie es noch nie möglich war.
Viele Leute verkomplizieren die RAG-Technologie und die ganzen Dinge enorm, weil die OpenAI Assistant API die Dinge mittlerweile so stark vereinfacht hat. In diesem Video hast du gelernt, wie du einen anständigen, kleinen KI-Agenten machst. Es ist noch kein wirklicher KI-Agent, weil wir noch nicht viele verschiedene Dinge hier mit reingeholt haben. Aber es ist der Anfang.
Wir haben einen wirklich hilfreichen Chatbot. Der Chatbot kann beides ausführen – mit dem Code Interpreter und Tabellen zeichnen. Er kann das Internet durchsuchen mit der SERPer API. Er kann den Taschenrechner verwenden. Er hat die RAG-Technologie mit integriert. Und er ist „conversational“. Das heißt, das Ding erinnert sich, worüber man spricht. Sage ich hier zum Beispiel: „Ich heiße Arni.“ Dann kann ich mit diesem Typen einfach sprechen. Ich werde jetzt einfach mal eine Antwort zurückbekommen. „Hallo Arni, wie kann ich dir weiterhelfen?“ Ich könnte ja mal kurz fragen: „Kann LangChain Apps bauen?“ „Ja, LangChain kann verschiedene Apps bauen …“ und so weiter. Das nehmen wir jetzt von der Dokumentation. Und jetzt kann ich ja nochmal sowas fragen: „Weißt du, wie ich heiße?“ Das habe ich vorhin glatt vergessen zu sagen. Denn dieser Chatbot ist auch konversationell. „Ja, hast du mir gesagt. Du heißt Arni.“
Wir haben einen Chatbot, mit dem wir uns unterhalten können, der sich merkt, was wir sagen, mit der Vector Database, mit der RAG-Technologie, mit Internetsuche, mit verschiedenen Tools wie Taschenrechner, Python-Skripts und vieles, vieles mehr. Natürlich können wir diesen kleinen KI-Agenten – diese App – auch als Standalone-App veröffentlichen, in Webseiten einbauen und in viele andere Dinge einbauen, hier über die API oder über die Embeddings. Das will ich allerdings erst später zeigen, da ich in den nächsten zwei Videos noch ein paar coole Dinge von Flowise zeigen will.
Wir können auch Open-Source-LLMs verwenden. Wir können RAG verwenden mit Open-Source-LLMs, wenn wir hier nicht über die APIs arbeiten wollen und wirklich so günstig wie möglich arbeiten wollen. Einige wollen auch das machen. Und wir können natürlich auch die gesamten KI-Agenten machen – KI-Agenten, die mehrere LLMs als Experten reinholen. Und das will ich in den nächsten Videos zeigen, bevor wir unsere Applications veröffentlichen für andere Menschen. Denn wenn wir das machen, müssen wir sie auch extern hosten über einen anderen Server. Aktuell haben wir alles lokal laufen.