Kapitel 1. Die fünf Prinzipien des Prompting
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Prompt-Engineering ist der Prozess der Entdeckung von Eingabeaufforderungen, die zuverlässig zu nützlichen oder gewünschten Ergebnissen führen.
Eine Eingabeaufforderung ist die Eingabe, die du machst, normalerweise Text, wenn du mit einem KI-Modell wie ChatGPT oder Midjourney zusammenarbeitest. Die Eingabeaufforderung dient als Anleitung für das Modell, um die gewünschte Antwort vorherzusagen: Text von großen Sprachmodellen (LLMs) wie ChatGPT oder Bilder von Diffusionsmodellen wie Midjourney.
Hier ist ein einfaches Beispiel für eine Eingabeaufforderung für , einen Produktnamengenerator (inspiriert von einem der OpenAI-Beispiele), und die daraus resultierende Ausgabe von ChatGPT.
Eingabe:
Can I have a list of product names for a pair of shoes that can fit any foot size?
Ausgabe:
Certainly! Here's a list of product names for a pair of shoes that can fit any foot size: UniFit SoleStrides FlexiSize All-Fit Shoes OmniFit FootFlex ... AnyStep AdaptiWalkers FlexiRange UniversalSteps PerfectGlide MultiFit Shoes
Das ist schon eine bemerkenswerte Reaktion für eine naive Eingabeaufforderung, die sich wie Magie anfühlt, weil wir mit sehr wenig Aufwand hierher gekommen sind. Je besser die Modelle auf dem neuesten Stand der Technik sind, desto wahrscheinlicher ist es, dass du bei deinem ersten Versuch ein ausreichend gutes Ergebnis erzielst. Für alle Interaktionen mit einer KI, bei denen du nicht vorhast, dieselbe Aufgabe noch einmal zu erledigen, ist der naive Ansatz alles, was du brauchst.
Wenn du jedoch vorhast, diese Eingabeaufforderung in die Produktion zu übernehmen, solltest du mehr Arbeit investieren, um sie richtig zu machen. Fehler kosten dich Geld in Form von Gebühren, die OpenAI aufgrund der Länge der Eingabeaufforderung und der Antwort erhebt, sowie in Form von Zeit, die du in die Fehlerbehebung investierst. Wenn du einen Produktnamengenerator mit Tausenden von Nutzern entwickeln würdest, gäbe es einige offensichtliche Probleme, die du beheben solltest:
- Vage Richtung
-
Du gibst der KI keine Anweisungen, wie der Name aussehen soll oder welche Eigenschaften er haben soll. Willst du ein einzelnes Wort oder eine Verkettung? Können die Wörter erfunden werden, oder ist es wichtig, dass sie in echtem Englisch geschrieben sind? Willst du, dass die KI jemanden nachahmt, den du bewunderst und der für großartige Produktnamen bekannt ist?
- Unformatierte Ausgabe
-
Du bekommst eine Liste von Namen zurück, die Zeile für Zeile getrennt sind und eine unbestimmte Länge haben. Wenn du diese Eingabeaufforderung mehrmals ausführst, wirst du feststellen, dass manchmal eine nummerierte Liste zurückkommt und oft Text am Anfang steht, was es schwierig macht, die Liste programmatisch zu analysieren.
- Fehlende Beispiele
-
Du hast der KI keine Beispiele gegeben, wie gute Namen aussehen. Sie vervollständigt automatisch den Durchschnitt ihrer Trainingsdaten, d. h. das gesamte Internet (mit all seinen Verzerrungen), aber ist es das, was du willst? Idealerweise fütterst du sie mit Beispielen erfolgreicher Namen, gängiger Namen in einer Branche oder einfach mit anderen Namen, die dir gefallen.
- Begrenzte Bewertung
-
Es gibt keine einheitliche oder skalierbare Methode, um zu definieren, welche Namen gut oder schlecht sind, also musst du jede Antwort manuell überprüfen. Wenn du ein Bewertungssystem oder eine andere Form der Messung einführen kannst, kannst du die Eingabeaufforderung optimieren, um bessere Ergebnisse zu erzielen und festzustellen, wie oft sie fehlschlägt.
- Keine Aufgabenteilung
-
Du verlangst viel von einer einzigen Eingabeaufforderung auf : Es gibt viele Faktoren, die bei der Produktbenennung eine Rolle spielen, und diese wichtige Aufgabe wird naiverweise auf einen Schlag an die KI ausgelagert, ohne dass eine Aufgabenspezialisierung oder ein Einblick in die Art und Weise erfolgt, wie sie diese Aufgabe für dich erledigt.
Der Umgang mit diesen Problemen ist die Grundlage für die Kernprinzipien, die wir in diesem Buch verwenden. Es gibt viele verschiedene Möglichkeiten, ein KI-Modell mit der gleichen Aufgabe zu betrauen, und schon kleine Änderungen können einen großen Unterschied machen. LLMs arbeiten, indem sie kontinuierlich das nächste Token (etwa drei Viertel eines Wortes) vorhersagen, ausgehend von deiner Eingabeaufforderung. Jedes neue Token wird auf der Grundlage der Wahrscheinlichkeit ausgewählt, dass es als Nächstes auftaucht, mit einem Zufallsfaktor (gesteuert durch den Temperaturparameter ). Wie in Abbildung 1-1 zu sehen ist, hatte das Wort Schuhe eine geringere Wahrscheinlichkeit, nach dem Anfang des Namens AnyFit zu kommen (0,88%), während eine vorhersehbarere Antwort Athletic wäre (72,35%).
LLMs werden im Wesentlichen auf den gesamten Text des Internets trainiert und dann weiter verfeinert, um hilfreiche Antworten zu geben. Durchschnittliche Eingabeaufforderungen führen zu durchschnittlichen Antworten, was dazu führt, dass die Ergebnisse nicht dem Hype entsprechen. Was du in deine Eingabeaufforderung einträgst, verändert die Wahrscheinlichkeit jedes generierten Wortes und hat daher einen großen Einfluss auf die Ergebnisse, die du erhältst. Diese Modelle haben das Beste und das Schlechteste gesehen, was Menschen hervorgebracht haben, und sind in der Lage, fast alles nachzuahmen, wenn du weißt, wie du richtig fragen musst. OpenAI berechnet die Anzahl der Token, die in der Eingabeaufforderung und der Antwort verwendet werden. Daher müssen Prompt-Engineers dafür sorgen, dass diese Token zählen, indem sie die Eingabeaufforderungen hinsichtlich Kosten, Qualität und Zuverlässigkeit optimieren.
Hier ist das gleiche Beispiel mit der Anwendung verschiedener Prompt-Engineering-Techniken. Wir fragen nach Namen im Stil von Steve Aufträge, geben an, dass wir eine kommagetrennte Liste wollen, und liefern Beispiele für eine gut erledigte Aufgabe.
Eingabe:
Brainstorm a list of product names for a shoe that fits any foot size, in the style of Steve Jobs. Return the results as a comma-separated list, in this format: Product description: A shoe that fits any foot size Product names: [list of 3 product names] ## Examples Product description: A refrigerator that dispenses beer Product names: iBarFridge, iFridgeBeer, iDrinkBeerFridge Product description: A watch that can tell accurate time in space Product names: iNaut, iSpace, iTime Product description: A home milkshake maker Product names: iShake, iSmoothie, iShake Mini
Ausgabe:
Product description: A shoe that fits any foot size Product names: iFitFoot, iPerfectFit, iShoeSize
Zwar ist keine Eingabeaufforderung jemals perfekt, aber diese Eingabeaufforderung ist so optimiert, dass sie zuverlässig solide Produktnamen im richtigen Format liefert. Der Benutzer deines Produktnamensgenerators kann andere Namen als Steve Aufträge wählen, um die Namen zu erhalten, die ihm gefallen, er kann das Antwortformat bei Bedarf ändern und die Ausgabe dieser Eingabeaufforderung kann die Eingabe einer anderen werden. Schließlich könntest du die Beispiele in der Eingabeaufforderung auf der Grundlage von Nutzerrückmeldungen regelmäßig aktualisieren und so dein System mit der Zeit intelligenter machen.
Überblick über die fünf Prinzipien des Prompting
Der Prozess zur Optimierung dieser Eingabeaufforderung folgt den fünf Prinzipien des Prompting, die wir im weiteren Verlauf dieses Kapitels anhand dieses Beispiels analysieren und im Laufe des Buches immer wieder aufgreifen werden. Sie entsprechen genau den fünf Punkten, die wir bei der Besprechung der naiven Eingabeaufforderung angesprochen haben. Im weiteren Verlauf des Buches wirst du immer wieder auf diese Prinzipien zurückgreifen, um dir zu zeigen, wie sie in der Praxis angewendet werden. Die fünf Prinzipien des Prompting ( ) lauten wie folgt:
- Richtung geben
-
Beschreibe den gewünschten Stil im Detail oder beziehe dich auf eine relevante Persona
- Format angeben
-
Lege fest, welche Regeln zu befolgen sind, und die erforderliche Struktur der Antwort
- Beispiele liefern
-
Füge eine Reihe von Testfällen ein, bei denen die Aufgabe korrekt ausgeführt wurde.
- Qualität evaluieren
-
Identifiziere Fehler und bewerte die Antworten, um zu testen, was die Leistung beeinflusst.
- Arbeitsteilung
-
Zerlege Aufgaben in mehrere Schritte, die für komplexe Ziele miteinander verknüpft werden
Bei diesen Prinzipien handelt es sich nicht um kurzlebige Tipps oder Hacks, sondern um allgemein anerkannte Konventionen, die für die Arbeit mit jeder Art von Intelligenz, ob biologisch oder künstlich, nützlich sind. Diese Prinzipien sind modellunabhängig und sollten deine Eingabeaufforderung verbessern, egal welches generative Text- oder Bildmodell du verwendest. Wir haben diese Grundsätze erstmals im Juli 2022 in unserem Blogbeitrag "Prompt-Engineering" veröffentlicht : From Words to Art and Copy" veröffentlicht , und sie haben sich bis heute bewährt. Sie entsprechen auch ziemlich genau dem Prompt-Engineering-Leitfaden von OpenAI, der ein Jahr später erschien. Jeder, der eng mit generativen KI-Modellen arbeitet, wird wahrscheinlich auf ähnliche Strategien zur Lösung gängiger Probleme stoßen, und in diesem Buch findest du Hunderte von Beispielen, die dir zeigen, wie du deine Eingabeaufforderungen verbessern kannst.
Wir haben One-Pager für die Text- und Bilderzeugung zum Herunterladen bereitgestellt, die du als Checkliste für die Anwendung dieser Prinzipien verwenden kannst. Diese wurden für unseren beliebten Udemy-Kurs The Complete Prompt-Engineering for AI Bootcamp (70.000+ Studenten) erstellt, der auf denselben Prinzipien basiert, aber mit anderem Material als dieses Buch.
Um zu zeigen, dass diese Prinzipien auch für Eingabeaufforderungen für Bilder gelten, erklären wir dir anhand des folgenden Beispiels, wie du die fünf Prinzipien des Prompting auf dieses spezielle Szenario anwendest. Kopiere die gesamte Eingabeaufforderung und füge sie in den Midjourney Bot in Discord ein, einschließlich des Links zum Bild am Anfang, nachdem du Folgendes eingegeben hast /imagine
um die Eingabeaufforderung auszulösen (erfordert einen kostenlosen Discord-Account und einen bezahlten Midjourney-Account ).
Eingabe:
https://s.mj.run/TKAsyhNiKmc stock photo of business meeting of 4 people watching on white MacBook on top of glass-top table, Panasonic, DC-GH5
Abbildung 1-2 zeigt die Ausgabe.
Diese Eingabeaufforderung nutzt die Fähigkeit von Midjourney, ein Basisbild als Beispiel zu nehmen, indem du das Bild auf Discord hochlädst und dann die URL kopierst und in die Eingabeaufforderung einfügst(https://s.mj.run/TKAsyhNiKmc), für die das lizenzfreie Bild von Unsplash verwendet wird(Abbildung 1-3). Wenn du bei der Eingabeaufforderung auf einen Fehler stößt, versuche, das Bild selbst hochzuladen und schaue in der Midjourney-Dokumentation nach, ob es Formatierungsänderungen gibt.
Vergleichen wir diese ausgereifte Eingabeaufforderung mit dem, was du von Midjourney zurückbekommst, wenn du naiv nach einem Stockfoto auf die einfachste Weise fragst. Abbildung 1-4 zeigt ein Beispiel dafür, was du ohne Prompt-Engineering bekommst: ein Bild mit einer dunkleren, stilistischeren Version eines Archivfotos, als du normalerweise erwarten würdest.
Eingabe:
people in a business meeting
Abbildung 1-4 zeigt die Ausgabe.
Obwohl dieses Problem in der Version 5 von Midjourney nicht mehr so stark ausgeprägt ist, haben die Feedback-Mechanismen der Community (wenn Nutzer ein Bild auswählen, um es auf eine höhere Auflösung zu bringen, kann diese Auswahl zum Trainieren des Modells verwendet werden) das Modell in Richtung einer Fantasy-Ästhetik verzerrt, die für den Anwendungsfall der Stockfotos weniger geeignet ist. Die ersten Nutzer von Midjourney kamen aus der Welt der digitalen Kunst und tendierten natürlich zu Fantasy- und Sci-Fi-Stilen, was sich in den Ergebnissen des Modells widerspiegeln kann, auch wenn diese Ästhetik nicht geeignet ist.
In diesem Buch werden die Beispiele mit ChatGPT Plus (GPT-4) als Textmodell und Midjourney v6 oder Stable Diffusion XL als Bildmodell kompatibel sein, obwohl wir angeben werden, wenn es wichtig ist. Diese Basismodelle sind der aktuelle Stand der Technik und eignen sich für eine Vielzahl von Aufgaben. Die Prinzipien sollen so zukunftssicher wie möglich sein. Wenn du also dieses Buch liest, wenn GPT-5, Midjourney v7 oder Stable Diffusion XXL auf dem Markt ist, oder wenn du einen anderen Anbieter wie Google verwendest, sollte alles, was du hier lernst, immer noch nützlich sein.
1. Richtung geben
Eines der Probleme mit der naiven Eingabeaufforderung war, dass die KI nicht wusste, welche Art von Produktnamen du haben wolltest. Die Benennung eines Produkts ist bis zu einem gewissen Grad ein subjektives Unterfangen, und wenn die KI nicht weiß, welche Namen du magst, ist die Wahrscheinlichkeit gering, dass sie richtig liegt.
Übrigens würde auch ein Mensch diese Aufgabe ohne ein gutes Briefing kaum bewältigen. Deshalb verlangen Kreativ- und Brandingagenturen von ihren Kunden ein detailliertes Briefing für jede Aufgabe.
Tipp
Auch wenn es keine perfekte Zuordnung ist, kann es hilfreich sein, sich vorzustellen, welchen Kontext ein Mensch für diese Aufgabe brauchen könnte, und zu versuchen, diesen in die Eingabeaufforderung aufzunehmen.
In der Eingabeaufforderung des Beispiels haben wir die Richtung durch Rollenspiele vorgegeben, in diesem Fall durch die Nachahmung des Stils von Steve Aufträge, der für die ikonische Benennung von Produkten berühmt war. Wenn du diesen Aspekt der Eingabeaufforderung auf eine andere Person änderst, die in den Trainingsdaten berühmt ist (und auch die Beispiele auf den richtigen Stil abstimmst), erhältst du ganz andere Ergebnisse.
Eingabe:
Brainstorm a list of product names for a shoe that fits any foot size, in the style of Elon Musk. Return the results as a comma-separated list, in this format: Product description: A shoe that fits any foot size Product names: [list of 3 product names] ## Examples Product description: A refrigerator that dispenses beer Product names: Teslacool, FridgeX, Neuradrink Product description: A watch that can tell accurate time in space Product names: WatchX, iSpace, The Watch Company Product description: A home milkshake maker Product names: ShakeX, The Milkshake Company, HyperShake
Ausgabe:
ShoeX, MarsFit, The Shoe Company
Es gibt auch einige Regeln oder bewährte Methoden, die du befolgen solltest. Diese könnten in die Eingabeaufforderung als Kontext aufgenommen werden, um die KI zu einem Namen zu führen, der funktioniert. Diese Technik wird manchmal als Vorwärmen oder internes Abrufen bezeichnet und ist einfach, aber effektiv(Liu et al., 2021). Es kann sehr hilfreich sein, die KI zu Beginn des Gesprächs nach bewährten Methoden zu fragen und sie dann zu bitten, ihren eigenen Ratschlägen zu folgen. So kannst du ihn dazu bringen, seine eigene Richtung zu finden.
Eingabe:
Please give me 5 tips for naming products based on expert industry advice.
Ausgabe:
Certainly! Naming a product is crucial as it often gives the first impression to potential customers. Here are five expert tips to guide you in naming products: 1. **Simplicity & Memorability**: Opt for names that are short, easy to spell, and memorable. Long, complicated names can be difficult for customers to recall. Remember, the easier the name is to remember, the more likely it is that consumers will think of your product when making a purchase decision. ... 5. **Positive Connotations**: Names that evoke positive emotions or imagery can create a favorable perception of your product. Avoid names that have negative or controversial associations in any of the primary languages or cultures where you intend to do business. It's often worthwhile to conduct linguistic checks and market testing to ensure there aren't unintended meanings. Lastly, once you've shortlisted a few names, it's a good idea to run them by diverse focus groups or conduct surveys to gauge reactions. Also, ensure that the name you choose is available for trademarking and doesn't infringe on existing trademarks.
Dann stellst du im selben Chatfenster, in dem das Modell den Kontext der vergangenen Ratschläge kennt, deine Eingabeaufforderung für die Aufgabe, die du erledigen möchtest.
Eingabe:
Using this advice, can I have a list of product names for a pair of shoes that can fit any foot size?
Ausgabe:
Certainly! Based on the criteria given: 1. **Simplicity & Memorability** 2. **Relevance & Descriptiveness** 3. **Differentiation & Uniqueness** 4. **Adaptable & Scalable** 5. **Positive Connotations** Here's a list of potential product names for shoes that can fit any foot size: 1. **FitAll Walkers**: A simple and memorable name that instantly suggests a universal fit. ... 10. **TrueFit Universals**: Emphasizing genuine comfort and fit for all. Before finalizing any name, remember to check for trademarks to ensure there's no conflict with existing products or brands.
Eine andere erfolgreiche Strategie ist es, die besten Ratschläge für die Aufgabe, die du erfüllen willst, in die Eingabeaufforderung zu integrieren. Du könntest zum Beispiel die 5 goldenen Regeln von Brandwatch für die Benennung eines Produkts oder eine andere vertrauenswürdige externe Quelle nehmen und diese als Kontext in die Eingabeaufforderung einfügen. Dadurch wird die Eingabeaufforderung deutlich länger, was mehr Geld kostet (wenn du die API als Entwickler nutzt), aber der Kompromiss kann sich lohnen, wenn sich die Qualität der Antwort verbessert.
Eingabe:
Can I have a list of product names for a pair of shoes that can fit any foot size? Please follow the five rules below: 1. It should be readable and writable. If your product name is hard to pronounce, people won’t talk about it, and if they can’t write it down (and spell it correctly!) when they hear it, how do you expect them to Google it? Keep it simple and don’t go with any wacky spellings just for the sake of it. ... 5. It should evoke an emotion, feeling, or idea. Your product name should tie back into what your product is, what the feeling you want people to have when experiencing your product is, and/or what idea are you trying to get across. It should be emotive and inspiring.
Ausgabe:
1. FlexFit Footwear 2. OmniSize Sneakers 3. AdaptStride Shoes ... 18. OmniComfort Kicks 19. FlexSize Footwear 20. Boundless Soles
Es gibt noch unzählige andere Möglichkeiten, eine Richtung vorzugeben. Im Beispiel für die Bilderzeugung wurde die Richtung vorgegeben, indem festgelegt wurde, dass das Geschäftstreffen an einem Glastisch stattfindet. Wenn du nur dieses Detail änderst, kannst du ein völlig anderes Bild erhalten, wie in Abbildung 1-5 dargestellt.
Eingabe:
https://s.mj.run/TKAsyhNiKmc stock photo of business meeting of four people gathered around a campfire outdoors in the woods, Panasonic, DC-GH5
Abbildung 1-5 zeigt die Ausgabe.
Rollenspiele sind auch für die Bilderzeugung auf wichtig, und eine Möglichkeit, Midjourney eine Richtung zu geben, besteht darin, den Namen eines Künstlers oder Kunststils anzugeben, den sie nachahmen soll. Ein Künstler, der in der Welt der KI-Kunst eine große Rolle spielt, ist Van Gogh, der für seine kühnen, dramatischen Pinselstriche und seine lebhaften Farben bekannt ist. Beobachte, was passiert, wenn du seinen Namen in die Eingabeaufforderung einfügst, wie in Abbildung 1-6 gezeigt.
Eingabe:
people in a business meeting, by Van Gogh
Abbildung 1-6 zeigt die Ausgabe.
Damit die letzte Eingabeaufforderung funktioniert, musst du eine Menge von der anderen Richtung zurücknehmen. Wenn du z. B. das Basisbild und die Worte Stockfoto sowie die Kamera Panasonic, DC-GH5 weglässt, kommt der Stil von Van Gogh besser zur Geltung. Das Problem, auf das du stoßen könntest, ist, dass das Modell bei zu vielen Anweisungen schnell zu einer widersprüchlichen Kombination kommen kann, die es nicht auflösen kann. Wenn deine Eingabeaufforderung zu spezifisch ist, kann es sein, dass es in den Trainingsdaten nicht genug Beispiele gibt, um ein Bild zu erzeugen, das alle deine Kriterien erfüllt. In solchen Fällen solltest du entscheiden, welches Element wichtiger ist (in diesem Fall Van Gogh) und dich darauf verlassen.
Die Ausrichtung ist eines der am häufigsten verwendeten und am weitesten gefassten Prinzipien. Sie kann darin bestehen, dass du einfach die richtigen beschreibenden Worte verwendest, um deine Absicht zu verdeutlichen, oder dass du dich an den Persönlichkeiten einschlägiger Persönlichkeiten orientierst. Während zu viel Orientierung die Kreativität des Modells einschränken kann, ist zu wenig Orientierung das häufigere Problem.
2. Format angeben
KI-Modelle sind universelle Übersetzer. Nicht nur bedeutet das, dass sie von Französisch nach Englisch oder Urdu nach Klingonisch übersetzen können, sondern auch zwischen Datenstrukturen wie JSON und YAML oder natürlicher Sprache und Python-Code. Diese Modelle sind in der Lage, eine Antwort in fast jedem Format zurückzugeben. Ein wichtiger Teil des Prompt-Engineerings besteht also darin, Wege zu finden, um das gewünschte Format für die Antwort zu finden.
Hin und wieder wirst du feststellen, dass dieselbe Eingabeaufforderung ein anderes Format zurückgibt, z.B. eine nummerierte Liste statt einer durch Komma getrennten. Meistens ist das keine große Sache, weil die meisten Eingabeaufforderungen einmalig sind und in ChatGPT oder Midjourney eingegeben werden. Wenn du jedoch KI-Tools in deine Produktionssoftware integrierst, können gelegentliche Formatveränderungen zu allen möglichen Fehlern führen.
Genau wie bei der Arbeit mit einem Menschen kannst du unnötigen Aufwand vermeiden, indem du im Voraus das Format angibst, in dem du die Antwort erwartest. Bei Modellen zur Texterzeugung kann es oft hilfreich sein, JSON anstelle einer einfachen geordneten Liste auszugeben, da dies das universelle Format für API-Antworten ist, das das Parsen und Erkennen von Fehlern sowie das Rendern des Front-End-HTML einer Anwendung vereinfacht. YAML ist ebenfalls eine beliebte Wahl, weil es eine parsierbare Struktur erzwingt und trotzdem einfach und für Menschen lesbar ist.
In der ursprünglichen Eingabeaufforderung hast du mit den beiden Beispielen Anweisungen gegeben, und der Doppelpunkt am Ende der Eingabeaufforderung zeigte an, dass die Liste inline vervollständigt werden sollte. Um das Format in JSON zu ändern, musst du beide aktualisieren und das JSON unvollständig lassen, damit GPT-4 weiß, dass es vervollständigt werden soll.
Eingabe:
Return a comma-separated list of product names in JSON for "A pair of shoes that can fit any foot size.". Return only JSON. Examples: [{ "Product description": "A home milkshake maker.", "Product names": ["HomeShaker", "Fit Shaker", "QuickShake", "Shake Maker"] }, { "Product description": "A watch that can tell accurate time in space.", "Product names": ["AstroTime", "SpaceGuard", "Orbit-Accurate", "EliptoTime"]} ]
Ausgabe:
[ { "Product description": "A pair of shoes that can \ fit any foot size.", "Product names": ["FlexFit Footwear", "OneSize Step", "Adapt-a-Shoe", "Universal Walker"] } ]
Zurückbekommen wir das fertige JSON mit den Produktnamen. Diese können dann geparst und in einer Anwendung oder einem lokalen Skript programmatisch verwendet werden. Mit einem JSON-Parser wie der Standard-Json-Bibliothek von Python lässt sich auch leicht überprüfen, ob ein Fehler in der Formatierung vorliegt. Denn fehlerhaftes JSON führt zu einem Parsing-Fehler, der als Auslöser dafür dienen kann, die Eingabeaufforderung zu wiederholen oder zu untersuchen, bevor du weitermachst. Wenn du immer noch nicht das richtige Format zurückbekommst, kann es helfen, am Anfang oder Ende der Eingabeaufforderung oder in der Systemnachricht anzugeben, wenn du ein Chat-Modell verwendest: You are a helpful assistant that only responds in JSON
oder die JSON-Ausgabe in den Modellparametern anzugeben, sofern verfügbar (bei Llama-Modellen nennt man das Grammatik.
Tipp
Wenn du mit JSON noch nicht vertraut bist, findest du bei W3Schools eine gute Einführung.
Für die Bilderzeugung Modelle ist das Format sehr wichtig, denn die Möglichkeiten, ein Bild zu verändern, sind nahezu endlos. Sie reichen von offensichtlichen Formaten wie stock photo
, illustration
und oil painting
bis hin zu eher ungewöhnlichen Formaten wie dashcam footage
, ice sculpture
oder in Minecraft
(siehe Abbildung 1-7).
Eingabe:
business meeting of four people watching on MacBook on top of table, in Minecraft
Abbildung 1-7 zeigt die Ausgabe.
Wenn du ein Format festlegst, ist es oft notwendig, andere Aspekte der Eingabeaufforderung zu entfernen, die mit dem angegebenen Format kollidieren könnten. Wenn du z. B. ein Basisbild eines Stockfotos angibst, ist das Ergebnis eine Kombination aus Stockfoto und dem gewünschten Format. Bis zu einem gewissen Grad können Bilderzeugungsmodelle auf neue Szenarien und Kombinationen verallgemeinert werden, die sie in ihrer Trainingsmenge noch nicht gesehen haben, aber unserer Erfahrung nach ist die Wahrscheinlichkeit, dass du ein ungeeignetes Bild erhältst, umso größer, je mehr Schichten von nicht zusammenhängenden Elementen vorhanden sind.
Oft gibt es Überschneidungen zwischen dem ersten und dem zweiten Prinzip von , nämlich der Angabe der Richtung und der Angabe des Formats. Bei letzterem geht es darum, die Art der gewünschten Ausgabe festzulegen, zum Beispiel das JSON-Format oder das Format eines Archivfotos. Beim ersten Prinzip geht es um den Stil der gewünschten Antwort, unabhängig vom Format, z. B. Produktnamen im Stil von Steve Aufträge oder ein Bild von einem Geschäftstreffen im Stil von Van Gogh. Wenn es zu Konflikten zwischen Stil und Format kommt, ist es oft am besten, sie zu lösen , indem du dasjenige Element weglässt, das für dein Endergebnis weniger wichtig ist.
3. Beispiele bereitstellen
Die ursprüngliche Eingabeaufforderung hat der KI keine Beispiele gegeben, wie deiner Meinung nach gute Namen aussehen. Daher entspricht die Antwort in etwa dem Durchschnitt des Internets, und du kannst es besser machen. Forscher würden eine Eingabeaufforderung ohne Beispiele als "Zero-Shot" bezeichnen, und es immer eine angenehme Überraschung, wenn die KI eine Aufgabe sogar "Zero-Shot" lösen kann: Das ist ein Zeichen für ein leistungsstarkes Modell. Wenn du keine Beispiele angibst, verlangst du viel, ohne viel zu geben. Schon ein einziges Beispiel(One-Shot) ist sehr hilfreich, und in der Forschung ist es üblich, die Leistung von Modellen mit mehreren Beispielen(Some-Shot) zu testen. Eine dieser Untersuchungen ist die berühmte GPT-3-Studie "Language Models are Few-Shot Learners", deren Ergebnisse in Abbildung 1-8 dargestellt sind. Sie zeigt, dass das Hinzufügen eines Beispiels zusammen mit einer Eingabeaufforderung die Genauigkeit bei einigen Aufgaben von 10 % auf fast 50 % verbessern kann!
Wenn du einen Kollegen oder eine Kollegin unterrichtest oder einen jüngeren Mitarbeiter oder eine Mitarbeiterin in eine neue Aufgabe einweist, ist es nur natürlich, dass du Beispiele anführst, in denen diese Aufgabe bereits gut erledigt wurde. Bei der Arbeit mit künstlicher Intelligenz ist das nicht anders, und die Stärke einer Eingabeaufforderung hängt oft von den verwendeten Beispielen ab. Manchmal ist es einfacher, Beispiele zu nennen, als zu erklären, was genau du an diesen Beispielen magst. Deshalb ist diese Technik am effektivsten, wenn du kein Experte auf dem Gebiet der Aufgabe bist, die du lösen willst. Die Menge an Text, die du in eine Eingabeaufforderung einfügen kannst, ist begrenzt (zum Zeitpunkt des Schreibens etwa 6.000 Zeichen bei Midjourney und etwa 32.000 Zeichen bei der kostenlosen Version von ChatGPT), daher besteht ein großer Teil der Arbeit des Prompt-Engineerings darin, vielfältige und lehrreiche Beispiele auszuwählen und einzufügen.
Es gibt einen Kompromiss zwischen Zuverlässigkeit und Kreativität: Wenn du mehr als drei bis fünf Beispiele angibst, werden deine Ergebnisse zuverlässiger, aber du verlierst an Kreativität. Je mehr Beispiele du angibst und je weniger sie sich voneinander unterscheiden, desto mehr wird die Antwort auf deine Beispiele abgestimmt sein. Wenn du in der vorherigen Eingabeaufforderung alle Beispiele in Tiernamen änderst, wirkt sich das stark auf die Antwort aus, die dann zuverlässig nur Namen mit Tieren enthält.
Eingabe:
Brainstorm a list of product names for a shoe that fits any foot size. Return the results as a comma-separated list, in this format: Product description: A shoe that fits any foot size Product names: [list of 3 product names] ## Examples: Product description: A home milkshake maker. Product names: Fast Panda, Healthy Bear, Compact Koala Product description: A watch that can tell accurate time in space. Product names: AstroLamb, Space Bear, Eagle Orbit Product description: A refrigerator that dispenses beer Product names: BearFridge, Cool Cat, PenguinBox
Ausgabe:
Product description: A shoe that fits any foot size Product names: FlexiFox, ChameleonStep, PandaPaws
Das birgt natürlich die Gefahr, dass ein viel besserer Name, der nicht in den begrenzten Spielraum der KI passt, nicht zurückkommt. Mangelnde Vielfalt und Variation bei den Beispielen ist auch ein Problem beim Umgang mit Kanten oder ungewöhnlichen Szenarien. Ein bis drei Beispiele einzubeziehen ist einfach und hat fast immer einen positiven Effekt, aber ab dieser Zahl wird es wichtig, mit der Anzahl der Beispiele und der Ähnlichkeit zwischen ihnen zu experimentieren. Es gibt einige Belege(Hsieh et al., 2023) dafür, dass eine Richtung besser funktioniert als die Angabe von Beispielen, und es ist in der Regel nicht einfach, gute Beispiele zu sammeln, daher ist es in der Regel ratsam, zuerst das Prinzip "Give Direction" zu versuchen.
Bei der Bilderzeugung werden Beispiele in der Regel in Form eines Basisbildes in der Eingabeaufforderung bereitgestellt, in der Open-Source-Community Stable Diffusion img2img genannt. Je nachdem, welches Modell zur Bilderzeugung verwendet wird, können diese Bilder als Ausgangspunkt für das Modell verwendet werden, was sich stark auf die Ergebnisse auswirkt. Du kannst die Eingabeaufforderung unverändert lassen, aber das Basisbild austauschen, um einen völlig anderen Effekt zu erzielen, wie in Abbildung 1-9.
Eingabe:
stock photo of business meeting of 4 people watching on white MacBook on top of glass-top table, Panasonic, DC-GH5
Abbildung 1-9 zeigt die Ausgabe.
Wenn du das in Abbildung 1-10 gezeigte Bild, das ebenfalls von Unsplash stammt, ersetzt, kannst du sehen, wie das Modell in eine andere Richtung gezogen wurde und nun Whiteboards und Haftnotizen einbezieht.
Vorsicht
Diese Beispiele zeigen die Möglichkeiten von Modellen zur Bilderzeugung, aber wir raten zur Vorsicht beim Hochladen von Basisbildern für Eingabeaufforderungen. Überprüfe die Lizenzierung des Bildes, das du hochladen und in deiner Eingabeaufforderung als Basisbild verwenden willst, und vermeide es, eindeutig urheberrechtlich geschützte Bilder zu verwenden. Dies kann dich in rechtliche Schwierigkeiten bringen und verstößt gegen die Nutzungsbedingungen von für alle großen Anbieter von Modellen zur Bilderzeugung.
4. Qualität bewerten
Bislang gibt es keine Feedbackschleife, mit der die Qualität deiner Antworten beurteilen kann. Das ist in Ordnung, wenn du die Eingabeaufforderungen nur vorübergehend für eine einzige Aufgabe verwendest und sie nur selten wiederholst. Wenn du jedoch dieselbe Eingabeaufforderung mehrmals verwendest oder eine Produktionsanwendung erstellst, die auf eine Eingabeaufforderung angewiesen ist, musst du die Ergebnisse strenger messen.
Es gibt eine Reihe von Möglichkeiten, die Leistung zu bewerten, und es hängt weitgehend davon ab, welche Aufgaben du zu erfüllen hoffst. Wenn ein neues KI-Modell auf den Markt kommt, liegt der Schwerpunkt in der Regel auf , wie gut das Modell bei den Evaluierungen abgeschnitten hat. Dabei handelt es sich um eine standardisierte Reihe von Fragen mit vordefinierten Antworten oder Bewertungskriterien, mit denen die Leistung verschiedener Modelle getestet wird. Verschiedene Modelle schneiden bei unterschiedlichen Aufgabentypen unterschiedlich gut ab, und es gibt keine Garantie dafür, dass eine Eingabeaufforderung, die zuvor funktioniert hat, auch bei einem neuen Modell gut funktioniert. OpenAI hat sein Evals-Framework für den Leistungsvergleich von LLMs als Open Source zur Verfügung gestellt und ermutigt andere dazu, zusätzliche Eval-Vorlagen beizusteuern.
Zusätzlich zu den üblichen akademischen Prüfungen gibt es auch Tests, die mehr Schlagzeilen machen, wie z.B. die GPT-4-Prüfung für die Anwaltsprüfung. Die Auswertung ist bei subjektiveren Aufgaben schwierig und kann für kleinere Teams zeitaufwändig oder zu kostspielig sein. In einigen Fällen sind Forscher/innen dazu übergegangen, fortschrittlichere Modelle wie GPT-4 zu verwenden, um die Antworten von weniger ausgefeilten Modellen zu bewerten, wie bei der Veröffentlichung von Vicuna-13B, einem fein abgestimmten Modell, das auf dem Open-Source-Modell Llama von Meta basiert (siehe Abbildung 1-11).
Wenn du wissenschaftliche Arbeiten schreibst oder eine neue Version eines Basismodells bewertest, sind strengere Bewertungsmethoden notwendig, aber oft musst du nur einen Schritt über das einfache "Trial and Error" hinausgehen. Du wirst feststellen, dass ein einfaches Bewertungssystem, das in einem Jupyter Notebook implementiert ist, ausreichen kann, um die Eingabeaufforderung zu optimieren, ohne zu viel Aufwand zu verursachen. Ein gängiger Test besteht darin, herauszufinden, ob die Angabe von Beispielen die zusätzlichen Kosten für die Länge der Eingabeaufforderung wert ist, oder ob du auch ohne Beispiele in der Eingabeaufforderung auskommen kannst. Der erste Schritt besteht darin, die Antworten für mehrere Durchläufe jeder Eingabeaufforderung zu sammeln und in einer Tabelle zu speichern, nachdem wir unsere Umgebung eingerichtet haben.
Du kannst das OpenAI Python Paket mit pip install openai
installieren. Wenn du Probleme mit der Kompatibilität dieses Pakets hast, erstelle eine virtuelle Umgebung und installiere unsere requirements.txt (Anweisungen im Vorwort).
Um die API zu nutzen, musst du unter ein OpenAI-Konto erstellen und dann hier deinen API-Schlüssel abrufen.
Warnung
Das Festcodieren von API-Schlüsseln in Skripten wird aus Sicherheitsgründen nicht empfohlen. Verwende stattdessen Umgebungsvariablen oder Konfigurationsdateien, um deine Schlüssel zu verwalten.
Sobald du einen API-Schlüssel hast, ist es wichtig, ihn als Umgebungsvariable zuzuweisen, indem du den folgenden Befehl ausführst und api_key
durch deinen tatsächlichen API-Schlüsselwert ersetzt:
export
OPENAI_API_KEY
=
"api_key"
Oder unter Windows:
set
OPENAI_API_KEY
=
api_key
Wenn du es vorziehst, keinen API-Schlüssel vorzugeben, kannst du den Schlüssel beim Initialisieren des Modells manuell setzen oder ihn mit python-dotenv aus einer .env-Datei laden. Installiere zunächst die Bibliothek mit pip install python-dotenv
und lade dann die Umgebungsvariablen mit folgendem Code am Anfang deines Skripts oder Notebooks:
from
dotenv
import
load_dotenv
load_dotenv
()
# take environment variables from .env.
Der erste Schritt besteht darin, die Antworten für mehrere Durchläufe jeder Eingabeaufforderung zu sammeln und sie in einer Tabelle zu speichern.
Eingabe:
# Define two variants of the prompt to test zero-shot
# vs few-shot
prompt_A
=
"""Product description: A pair of shoes that can
fit any foot size.
Seed words: adaptable, fit, omni-fit.
Product names:"""
prompt_B
=
"""Product description: A home milkshake maker.
Seed words: fast, healthy, compact.
Product names: HomeShaker, Fit Shaker, QuickShake, Shake
Maker
Product description: A watch that can tell accurate time in
space.
Seed words: astronaut, space-hardened, eliptical orbit
Product names: AstroTime, SpaceGuard, Orbit-Accurate,
EliptoTime.
Product description: A pair of shoes that can fit any foot
size.
Seed words: adaptable, fit, omni-fit.
Product names:"""
test_prompts
=
[
prompt_A
,
prompt_B
]
import
pandas
as
pd
from
openai
import
OpenAI
import
os
# Set your OpenAI key as an environment variable
# https://platform.openai.com/api-keys
client
=
OpenAI
(
api_key
=
os
.
environ
[
'OPENAI_API_KEY'
],
# Default
)
def
get_response
(
prompt
):
response
=
client
.
chat
.
completions
.
create
(
model
=
"gpt-3.5-turbo"
,
messages
=
[
{
"role"
:
"system"
,
"content"
:
"You are a helpful assistant."
},
{
"role"
:
"user"
,
"content"
:
prompt
}
]
)
return
response
.
choices
[
0
]
.
message
.
content
# Iterate through the prompts and get responses
responses
=
[]
num_tests
=
5
for
idx
,
prompt
in
enumerate
(
test_prompts
):
# prompt number as a letter
var_name
=
chr
(
ord
(
'A'
)
+
idx
)
for
i
in
range
(
num_tests
):
# Get a response from the model
response
=
get_response
(
prompt
)
data
=
{
"variant"
:
var_name
,
"prompt"
:
prompt
,
"response"
:
response
}
responses
.
append
(
data
)
# Convert responses into a dataframe
df
=
pd
.
DataFrame
(
responses
)
# Save the dataframe as a CSV file
df
.
to_csv
(
"responses.csv"
,
index
=
False
)
(
df
)
Ausgabe:
variant prompt \ 0 A Product description: A pair of shoes that can ... 1 A Product description: A pair of shoes that can ... 2 A Product description: A pair of shoes that can ... 3 A Product description: A pair of shoes that can ... 4 A Product description: A pair of shoes that can ... 5 B Product description: A home milkshake maker.\n... 6 B Product description: A home milkshake maker.\n... 7 B Product description: A home milkshake maker.\n... 8 B Product description: A home milkshake maker.\n... 9 B Product description: A home milkshake maker.\n... response 0 1. Adapt-a-Fit Shoes \n2. Omni-Fit Footwear \n... 1 1. OmniFit Shoes\n2. Adapt-a-Sneaks \n3. OneFi... 2 1. Adapt-a-fit\n2. Flexi-fit shoes\n3. Omni-fe... 3 1. Adapt-A-Sole\n2. FitFlex\n3. Omni-FitX\n4. ... 4 1. Omni-Fit Shoes\n2. Adapt-a-Fit Shoes\n3. An... 5 Adapt-a-Fit, Perfect Fit Shoes, OmniShoe, OneS... 6 FitAll, OmniFit Shoes, SizeLess, AdaptaShoes 7 AdaptaFit, OmniShoe, PerfectFit, AllSizeFit. 8 FitMaster, AdaptoShoe, OmniFit, AnySize Footwe... 9 Adapt-a-Shoe, PerfectFit, OmniSize, FitForm
Hier verwenden wir die OpenAI API, um Antworten von auf eine Reihe von Eingabeaufforderungen zu generieren und die Ergebnisse in einem Datenrahmen zu speichern, der in einer CSV-Datei abgelegt wird. So funktioniert es:
-
Es werden zwei Eingabeaufforderungen definiert, und jede Variante besteht aus einer Produktbeschreibung, Startwörtern und möglichen Produktnamen, aber
prompt_B
bietet zwei Beispiele. -
Importanweisungen werden für die Pandas-Bibliothek, die OpenAI-Bibliothek und die os-Bibliothek aufgerufen.
-
Die Funktion
get_response
nimmt eine Eingabeaufforderung entgegen und gibt eine Antwort vom Modellgpt-3.5-turbo
zurück. Die Eingabeaufforderung wird als Benutzernachricht an das Modell übergeben, zusammen mit einer Systemnachricht, um das Verhalten des Modells festzulegen. -
Zwei Eingabeaufforderungen sind unter in der Liste
test_prompts
gespeichert. -
Eine leere Liste
responses
wird erstellt, um die generierten Antworten zu speichern, und die Variablenum_tests
wird auf 5 gesetzt. -
Eine verschachtelte Schleife wird verwendet, um Antworten zu generieren. Die äußere Schleife durchläuft jede Eingabeaufforderung, und die innere Schleife erzeugt
num_tests
(in diesem Fall fünf) Antworten pro Eingabeaufforderung.-
Die Funktion
enumerate
wird verwendet, um den Index und den Wert jeder Eingabeaufforderung intest_prompts
zu ermitteln. Dieser Index wird dann in einen entsprechenden Großbuchstaben umgewandelt (z. B. 0 wird zu A, 1 zu B), der als Variantenname verwendet wird. -
Bei jeder Iteration wird die Funktion
get_response
mit der aktuellen Eingabeaufforderung aufgerufen, um eine Antwort des Modells zu erzeugen. -
Es wird ein Wörterbuch mit dem Variantennamen, der Eingabeaufforderung und der Antwort des Modells erstellt und dieses Wörterbuch wird an die Liste
responses
angehängt.
-
-
Sobald alle Antworten generiert wurden, wird die Liste
responses
(die jetzt eine Liste von Wörterbüchern ist) in einen Pandas DataFrame umgewandelt. -
Dieser Datenrahmen wird dann mit der in Pandas eingebauten Funktion
to_csv
in eine CSV-Datei gespeichert. Dabei wird die Datei responses.csv mitindex=False
erstellt, um keine Zeilenindizes zu schreiben. -
Zum Schluss wird der Datenrahmen auf der Konsole ausgegeben.
Diese Antworten in einer Tabelle zu haben, ist bereits nützlich, denn du kannst sogar in der gedruckten Antwort sofort sehen, dass prompt_A
(zero-shot) in den ersten fünf Zeilen eine nummerierte Liste ausgibt, während prompt_B
(few-shot) in den letzten fünf Zeilen eher das gewünschte Format einer kommagetrennten Inline-Liste ausgibt. Der nächste Schritt ist die Bewertung der einzelnen Antworten. Dies geschieht am besten blind und nach dem Zufallsprinzip, um zu vermeiden, dass eine Eingabeaufforderung gegenüber einer anderen bevorzugt wird.
Eingabe:
import
ipywidgets
as
widgets
from
IPython.display
import
display
import
pandas
as
pd
# load the responses.csv file
df
=
pd
.
read_csv
(
"responses.csv"
)
# Shuffle the dataframe
df
=
df
.
sample
(
frac
=
1
)
.
reset_index
(
drop
=
True
)
# df is your dataframe and 'response' is the column with the
# text you want to test
response_index
=
0
# add a new column to store feedback
df
[
'feedback'
]
=
pd
.
Series
(
dtype
=
'str'
)
def
on_button_clicked
(
b
):
global
response_index
# convert thumbs up / down to 1 / 0
user_feedback
=
1
if
b
.
description
==
"
\U0001F44D
"
else
0
# update the feedback column
df
.
at
[
response_index
,
'feedback'
]
=
user_feedback
response_index
+=
1
if
response_index
<
len
(
df
):
update_response
()
else
:
# save the feedback to a CSV file
df
.
to_csv
(
"results.csv"
,
index
=
False
)
(
"A/B testing completed. Here's the results:"
)
# Calculate score and num rows for each variant
summary_df
=
df
.
groupby
(
'variant'
)
.
agg
(
count
=
(
'feedback'
,
'count'
),
score
=
(
'feedback'
,
'mean'
))
.
reset_index
()
(
summary_df
)
def
update_response
():
new_response
=
df
.
iloc
[
response_index
][
'response'
]
if
pd
.
notna
(
new_response
):
new_response
=
"<p>"
+
new_response
+
"</p>"
else
:
new_response
=
"<p>No response</p>"
response
.
value
=
new_response
count_label
.
value
=
f
"Response:
{
response_index
+
1
}
"
count_label
.
value
+=
f
"/
{
len
(
df
)
}
"
response
=
widgets
.
HTML
()
count_label
=
widgets
.
Label
()
update_response
()
thumbs_up_button
=
widgets
.
Button
(
description
=
'
\U0001F44D
'
)
thumbs_up_button
.
on_click
(
on_button_clicked
)
thumbs_down_button
=
widgets
.
Button
(
description
=
'
\U0001F44E
'
)
thumbs_down_button
.
on_click
(
on_button_clicked
)
button_box
=
widgets
.
HBox
([
thumbs_down_button
,
thumbs_up_button
])
display
(
response
,
button_box
,
count_label
)
Die Ausgabe ist in Abbildung 1-12 dargestellt:
Wenn du dies in einem Jupyter Notebook ausführst, zeigt ein Widget jede KI-Antwort mit einem Daumen-nach-oben- oder Daumen-nach-unten-Button an (siehe Abbildung 1-12). Dies bietet eine einfache Schnittstelle für die schnelle Kennzeichnung von Antworten mit minimalem Aufwand. Wenn du dies außerhalb eines Jupyter-Notizbuchs tun möchtest, könntest du die Daumen-hoch- und Daumen-runter-Emojis gegen Y und N austauschen und eine Schleife mit der eingebauten Funktion input()
als reinen Textersatz für iPyWidgets implementieren.
Wenn du die Antworten beschriftet hast, erhältst du die Ausgabe, die dir zeigt, wie die einzelnen Eingabeaufforderungen abschneiden.
Ausgabe:
A/B testing completed. Here's the results: variant count score 0 A 5 0.2 1 B 5 0.6
Der Datenrahmen wurde nach dem Zufallsprinzip gemischt und jede Antwort wurde blind gekennzeichnet (ohne die Eingabeaufforderung zu sehen), damit du ein genaues Bild davon bekommst, wie oft jede Eingabeaufforderung ausgeführt wurde. Hier ist die schrittweise Erklärung:
-
Es werden drei Module importiert:
ipywidgets
,IPython.display
undpandas
.ipywidgets
enthält interaktive HTML-Widgets für Jupyter Notebooks und den IPython-Kernel.IPython.display
bietet Klassen für die Anzeige verschiedener Ausgabearten wie Bilder, Sound, die Anzeige von HTML usw. Pandas ist eine leistungsstarke Bibliothek zur Datenmanipulation. -
Die Pandas-Bibliothek wird verwendet, um die CSV-Datei responses.csv einzulesen, die die Antworten enthält, die du testen willst. Dadurch wird ein Pandas-Datenrahmen namens
df
erstellt. -
df
wird mit der Funktionsample()
mitfrac=1
gemischt, das heißt, es werden alle Zeilen verwendet. Diereset_index(drop=True)
wird verwendet, um die Indizes auf den Standardindex 0, 1, 2, ..., n zurückzusetzen. -
Das Skript definiert
response_index
als 0. Damit wird verfolgt, welche Antwort aus dem Datenrahmen der Nutzer gerade sieht. -
Dem Datenrahmen
df
wird eine neue Spaltefeedback
mit dem Datentypstr
oder String hinzugefügt. -
Als Nächstes definiert das Skript eine Funktion
on_button_clicked(b)
, die immer dann ausgeführt wird, wenn eine der beiden Schaltflächen im Interface angeklickt wird.-
Die Funktion prüft zuerst, ob
description
der angeklickte Button der Daumen-hoch-Button war (\U0001F44D
; ), und setztuser_feedback
auf 1, oder wenn es der Daumen-runter-Button war (\U0001F44E
), setzt sieuser_feedback
auf 0. -
Dann aktualisiert er die Spalte
feedback
des Datenrahmens auf der aktuellenresponse_index
mituser_feedback
. -
Danach wird
response_index
hochgezählt, um zur nächsten Antwort zu gelangen. -
Wenn
response_index
immer noch kleiner ist als die Gesamtzahl der Antworten (d.h. die Länge des Datenrahmens), wird die Funktionupdate_response()
aufgerufen. -
Wenn es keine weiteren Antworten gibt, speichert es den Datenrahmen in einer neuen CSV-Datei results.csv und gibt eine Meldung sowie eine Zusammenfassung der Ergebnisse nach Varianten aus, in der die Anzahl der eingegangenen Rückmeldungen und die durchschnittliche Punktzahl (Mittelwert) für jede Variante angegeben sind.
-
-
Die Funktion
update_response()
holt die nächste Antwort aus dem Datenrahmen, verpackt sie in Absatz-HTML-Tags (wenn sie nicht null ist), aktualisiert dasresponse
Widget, um die neue Antwort anzuzeigen, und aktualisiert dascount_label
Widget, um die aktuelle Antwortnummer und die Gesamtzahl der Antworten anzuzeigen. -
Zwei Widgets,
response
(ein HTML-Widget) undcount_label
(ein Label-Widget), werden instanziiert. Die Funktionupdate_response()
wird dann aufgerufen, um diese Widgets mit der ersten Antwort und dem entsprechenden Label zu initialisieren. -
Zwei weitere Widgets,
thumbs_up_button
undthumbs_down_button
(beides Button-Widgets), werden mit Daumen-hoch- und Daumen-runter-Emoji als Beschreibung erstellt. Beide Schaltflächen sind so konfiguriert, dass sie die Funktionon_button_clicked()
aufrufen, wenn sie angeklickt werden. -
Die beiden Schaltflächen werden mit der Funktion
HBox
zu einem horizontalen Kasten (button_box
) zusammengefasst. -
Schließlich werden die Widgets
response
,button_box
undcount_label
mit der Funktiondisplay()
des ModulsIPython.display
dem Benutzer angezeigt.
Ein einfaches Bewertungssystem wie dieses kann hilfreich sein, um die Qualität von Eingabeaufforderungen zu beurteilen und auf Kanten zu stoßen. In der Regel entdeckst du in weniger als 10 Testläufen einer Eingabeaufforderung eine Abweichung, die du sonst erst beim Einsatz in der Produktion bemerkt hättest. Der Nachteil ist, dass es mühsam sein kann, viele Antworten manuell zu bewerten, und dass deine Bewertungen möglicherweise nicht die Präferenzen deiner Zielgruppe widerspiegeln. Aber selbst eine kleine Anzahl von Tests kann große Unterschiede zwischen zwei Eingabeaufforderungen aufdecken und nicht offensichtliche Probleme aufdecken, bevor sie in die Produktion gelangen.
Das Ausprobieren und Testen von Eingabeaufforderungen kann zu einer radikalen Verringerung der Länge der Eingabeaufforderung und damit der Kosten und der Latenz deines Systems führen. Wenn du eine andere Eingabeaufforderung findest, die genauso gut (oder besser) funktioniert, aber eine kürzere Eingabeaufforderung verwendet, kannst du es dir leisten, deinen Betrieb erheblich zu vergrößern. Oft wirst du bei diesem Prozess feststellen, dass viele Elemente einer komplexen Eingabeaufforderung völlig überflüssig oder sogar kontraproduktiv sind .
Der Daumen nach oben oder andere manuell gekennzeichnete Qualitätsindikatoren müssen nicht die einzigen Beurteilungskriterien sein. Die menschliche Bewertung gilt allgemein als die genaueste Form des Feedbacks. Es kann jedoch mühsam und kostspielig sein, viele Proben manuell zu bewerten. In vielen Fällen, wie z. B. bei mathematischen oder klassifikatorischen Anwendungsfällen, kann es möglich sein, eine Basiswahrheit (Referenzantworten auf Testfälle) zu erstellen, um die Ergebnisse programmatisch zu bewerten. Die folgende Liste ist nicht erschöpfend, denn es gibt viele Gründe, deine Eingabeaufforderung programmatisch zu bewerten:
- Kosten
-
Eingabeaufforderungen, für die viele Spielsteine benötigt werden oder die nur mit teureren Modellen funktionieren, sind für den Produktionseinsatz möglicherweise unpraktisch.
- Latenz
-
Je mehr Token es gibt oder je größer das benötigte Modell ist, desto länger dauert es, eine Aufgabe zu erledigen, was die Nutzererfahrung beeinträchtigen kann.
- Anrufe
-
Viele KI-Systeme benötigen mehrere Aufrufe in einer Schleife, um eine Aufgabe zu erledigen, was den Prozess stark verlangsamen kann.
- Leistung
-
Implementiere eine Art externes Feedbacksystem, z. B. eine Physik-Engine oder ein anderes Modell zur Vorhersage von Ergebnissen aus der realen Welt.
- Klassifizierung
-
Bestimme, wie oft eine Eingabeaufforderung einen gegebenen Text richtig beschriftet, indem du ein anderes KI-Modell oder eine regelbasierte Beschriftung verwendest.
- Vernunft
-
Finde heraus, in welchen Fällen der KI das logische Denken fehlschlägt oder sie sich im Vergleich zu Referenzfällen verrechnet.
- Halluzinationen
-
Finde heraus, wie häufig du auf Halluzinationen triffst, gemessen an der Erfindung neuer Begriffe, die nicht im Kontext der Eingabeaufforderung vorkommen.
- Sicherheit
-
Kennzeichne alle Szenarien, in denen das System unsichere oder unerwünschte Ergebnisse liefern könnte, mit einem Sicherheitsfilter oder Erkennungssystem.
- Ablehnungen
-
Finde heraus, wie oft sich das System fälschlicherweise weigert, eine begründete Benutzeranfrage zu erfüllen, indem du bekannte Ablehnungen markierst.
- Gegnerische
-
Mach die Eingabeaufforderung robust gegen bekannte Prompt-Injection-Angriffe, die das Modell dazu bringen können, unerwünschte Prompts anstelle der von dir programmierten auszuführen.
- Ähnlichkeit
-
Verwende gemeinsame Wörter und Phrasen(BLEU oder ROGUE) oder die Vektordistanz (erklärt in Kapitel 5), um die Ähnlichkeit zwischen generiertem und Referenztext zu messen.
Sobald du anfängst zu bewerten, welche Beispiele gut waren, kannst du die Beispiele in deiner Eingabeaufforderung leichter aktualisieren, um dein System im Laufe der Zeit intelligenter zu machen. Die Daten aus diesem Feedback können auch in die Feinabstimmung der Beispiele einfließen, was das Prompt-Engineering übertrifft, sobald du ein paar tausend Beispiele liefern kannst, wie in Abbildung 1-13 dargestellt.
Abgestuft von "Daumen hoch" oder "Daumen runter" kannst du ein Bewertungssystem mit 3, 5 oder 10 Punkten einführen, um ein detaillierteres Feedback über die Qualität deiner Eingabeaufforderungen zu erhalten. Es ist auch möglich, die relative Gesamtleistung zu ermitteln, indem du die Antworten nebeneinander vergleichst, anstatt sie einzeln zu betrachten. Daraus kannst du einen fairen modellübergreifenden Vergleich erstellen, indem du ein Elo-Rating verwendest, wie es im Schach beliebt ist und in der Chatbot Arena von lmsys.org verwendet wird.
Für die Bilderzeugung erfolgt die Auswertung in der Regel in Form von Eingabeaufforderungen, bei denen du mehrere Richtungen oder Formate eingibst und für jede Kombination ein Bild erzeugst. Die Bilder können dann gescannt oder später in einem Raster angeordnet werden, um zu zeigen, wie sich die verschiedenen Elemente der Eingabeaufforderung auf das endgültige Bild auswirken können.
Eingabe:
{stock photo, oil painting, illustration} of business meeting of {four, eight} people watching on white MacBook on top of glass-top table
In Midjourney würde dies in sechs verschiedenen Eingabeaufforderungen zusammengefasst werden, eine für jede Kombination der drei Formate (Stockfoto, Ölgemälde, Illustration) und zwei Anzahlen von Personen (vier, acht).
Eingabe:
1. stock photo of business meeting of four people watching on white MacBook on top of glass-top table 2. stock photo of business meeting of eight people watching on white MacBook on top of glass-top table 3. oil painting of business meeting of four people watching on white MacBook on top of glass-top table 4. oil painting of business meeting of eight people watching on white MacBook on top of glass-top table 5. illustration of business meeting of four people watching on white MacBook on top of glass-top table 6. illustration of business meeting of eight people watching on white MacBook on top of glass-top table
Jede Eingabeaufforderung erzeugt wie üblich ihre eigenen vier Bilder, wodurch die Ausgabe etwas schwieriger zu sehen ist. Wir haben aus jeder Eingabeaufforderung ein Bild ausgewählt, das wir hochskalieren und dann in einem Raster zusammenstellen, wie in Abbildung 1-14 zu sehen ist. Du wirst feststellen, dass das Modell nicht immer die richtige Anzahl von Personen ermittelt (generative KI-Modelle sind erstaunlich schlecht in Mathematik), aber es hat die allgemeine Absicht korrekt abgeleitet, indem es den Fotos auf der rechten Seite mehr Personen hinzugefügt hat als auf der linken.
Abbildung 1-14 zeigt die Ausgabe.
Mit Modellen, die über APIs wie Stable Diffusion verfügen, kannst du die Fotos leichter manipulieren und sie in einem Rasterformat zum einfachen Scannen anzeigen. Du kannst auch den zufälligen Seed des Bildes manipulieren, um einen Stil für maximale Reproduzierbarkeit zu fixieren. Mit Bildklassifizierern ist es auch möglich, Bilder anhand ihres sicheren Inhalts programmatisch zu bewerten oder wenn sie bestimmte Elemente enthalten, die mit Erfolg oder Misserfolg assoziiert werden.
5. Arbeitsteilung
Wenn du deine Eingabeaufforderung ausbaust, fängst du an, bis zu dem Punkt zu kommen, an dem du mit einem einzigen Anruf an die KI eine Menge abfragst. Wenn die Eingabeaufforderungen länger und komplizierter werden, kann es passieren, dass die Antworten weniger deterministisch ausfallen und Halluzinationen oder Anomalien zunehmen. Selbst wenn es dir gelingt, eine zuverlässige Eingabeaufforderung für deine Aufgabe zu finden, ist diese Aufgabe wahrscheinlich nur eine von vielen miteinander verknüpften Aufgaben, die du für deine Arbeit brauchst. Da liegt es nahe zu überlegen, wie viele andere dieser Aufgaben von KI übernommen werden könnten und wie du sie miteinander verknüpfen könntest.
Eines der Grundprinzipien der Technik ist die Aufgabenzerlegung, um Probleme in ihre Bestandteile zu zerlegen, damit du jedes einzelne Problem leichter lösen und die Ergebnisse wieder zusammenführen kannst. Wenn du deine KI-Arbeit in mehrere miteinander verknüpfte Aufrufe aufteilst, kannst du komplexere Aufgaben bewältigen und erhältst einen besseren Überblick darüber, welcher Teil der Kette fehlschlägt.
Es gibt viele Faktoren, die bei der Produktbenennung eine Rolle spielen, und eine wichtige Aufgabe wird naiverweise an die KI ausgelagert, ohne dass wir wissen, wie sie die Bedeutung dieser Faktoren abwägt (wenn überhaupt). So wie unser derzeitiges System funktioniert, erhalten wir eine Liste von Namen, aber alle Namen werden mit der gleichen Wichtigkeit angezeigt, ohne dass uns ein weiterer Kontext bei der Entscheidung hilft. Glücklicherweise sind KI-Tools in der Lage, sich selbst einzuschätzen. Wenn wir unserer Aufgabe einen zweiten Schritt hinzufügen, können wir automatisch prüfen, ob die Ergebnisse unerwünscht sind.
Eingabe:
Rate this list of product names for a pair of shoes that can fit any foot size. The rating should be out of 10, inline next to the product name: UniFit SoleStrides FlexiSize All-Fit Shoes OmniFit FootFlex ... AnyStep AdaptiWalkers FlexiRange UniversalSteps PerfectGlide MultiFit Shoes
Ausgabe:
UniFit SoleStrides: 7/10 FlexiSize All-Fit Shoes: 8/10 OmniFit FootFlex: 7/10 ... AnyStep AdaptiWalkers: 7/10 FlexiRange UniversalSteps: 7.5/10 PerfectGlide MultiFit Shoes: 9/10 This ranking is based on clarity, memorability, and how well the name communicates the unique selling point of the product (that they can fit any foot size). Remember, these ratings are subjective and the ultimate success of a product name also depends on the target market, branding, and marketing efforts.
Bei mehreren Durchläufen stuft es den Namen "OneSize Glovewalkers" durchweg als den schlechtesten ein und gibt damit zu verstehen (wenn du fragst), dass das Konzept im Zusammenhang mit Schuhen verwirrend sein könnte. Du fragst dich vielleicht, warum das Modell diesen Namen überhaupt vorschlägt, wenn es doch weiß, dass er schlecht ist? LLMs arbeiten mit der Vorhersage des nächsten Tokens in einer Sequenz und haben daher Schwierigkeiten zu wissen, wie die Gesamtantwort am Ende aussehen wird. Wenn das Modell jedoch alle Token einer vorherigen Antwort zur Verfügung hat, kann es leichter vorhersagen, ob diese Antwort als gut oder schlecht eingestuft werden würde.
Wir können weiterhin mehrere Aufrufe miteinander verknüpfen, um die Ergebnisse unserer Aufgabe zu verbessern. Zum Beispiel könnten wir diese Aufgabe in drei separate Bewertungen aufteilen: Klarheit, Einprägsamkeit und wie gut der Name das Alleinstellungsmerkmal des Produkts vermittelt. Diese Bewertungen könnten dann einem Menschen als zusätzlicher Kontext für die endgültige Entscheidung gegeben werden oder sogar zusammengerechnet werden, um den endgültigen Namen programmgesteuert auszuwählen.
Wenn du lernen willst, professionell mit KI zu arbeiten, anstatt nur mit Eingabeaufforderungen herumzuspielen, musst du erkennen, dass jeder Teil des Systems in eine Reihe von iterativen Schritten aufgeteilt werden kann. Selbst bei einer einzigen Eingabeaufforderung gilt dieses Prinzip, denn das einfache Anhängen von Let's think step by step
an die Eingabeaufforderung kann zu einer nachweislichen Verbesserung des Denkens und der Fähigkeiten führen und einen Prüfpfad für die Qualitätssicherung und Fehlerbehebung liefern. Wenn du dir die Zeit nimmst und die Token zum Denken einsetzt, ändern sich die Bewertungen und stimmen besser mit den Bewertungskriterien überein.
Eingabe:
Let's think step by step. Rate this list of product names for a pair of shoes that can fit any foot size. The rating should be out of 10, inline next to the product name: UniFit SoleStrides FlexiSize All-Fit Shoes OmniFit FootFlex ... AnyStep AdaptiWalkers FlexiRange UniversalSteps PerfectGlide MultiFit Shoes
Ausgabe:
Here's a rating out of 10 for each product name, considering factors like descriptiveness, catchiness, and overall appeal: 1. **UniFit SoleStrides**: 7/10 - Sounds unifying but may not immediately convey the "fit any size" idea. 2. **FlexiSize All-Fit Shoes**: 8.5/10 - Combines flexibility and the notion that it fits all sizes. 3. **OmniFit FootFlex**: 8/10 - Omnipresence (fitting all) and flexibility nicely conveyed. ... 18. **AnyStep AdaptiWalkers**: 7.5/10 - "AnyStep" suggests versatility, but the overall name might be less direct. 19. **FlexiRange UniversalSteps**: 8/10 - Combines flexibility and universal fit. 20. **PerfectGlide MultiFit Shoes**: 8.5/10 - "MultiFit" is clear, and "PerfectGlide" suggests a comfortable experience. Remember, the best name can also be influenced by your target audience, branding strategy, and the overall message you want to convey.
OpenAI nennt dies "dem Modell Zeit zum Nachdenken geben" und ist ein wichtiger Grundsatz des Prompt-Engineerings. In der Tat sind Denkketten-Techniken wie , bei denen das Modell aufgefordert wird, seine Schritte aufzulisten, wie die Aufteilung einer Aufgabe innerhalb derselben Eingabeaufforderung. Sobald wir die Produktbenennung anhand einer Produktidee automatisiert haben, können wir ChatGPT erneut aufrufen, um jedes Produkt zu beschreiben, was wiederum in Midjourney eingespeist werden kann, um ein Bild von jedem Produkt zu erzeugen. Ein KI-Modell zu nutzen, um eine Eingabeaufforderung für ein KI-Modell zu erstellen, ist Meta-Prompting, und es funktioniert, weil LLMs Prompt-Engineering auf menschlicher Ebene betreiben(Zhou, 2022).
Eingabe:
Describe the new product "OneFit UltraStride Shoes," a shoe that can fit any foot size, in great detail:
Ausgabe:
Introducing the revolutionary "OneFit UltraStride Shoes," the footwear innovation designed to fit any foot size with unparalleled comfort and style. These shoes are a result of cutting-edge technology and meticulous craftsmanship, ensuring a truly personalized and enjoyable walking or running experience for everyone. Design and Materials: The OneFit UltraStride Shoes boast an elegant and modern design that appeals to both fashion-forward individuals and sports enthusiasts. They feature a sleek and streamlined silhouette, crafted using premium materials for durability and aesthetic appeal. The shoe's upper is constructed from a combination of breathable mesh and flexible synthetic materials, allowing for excellent airflow and a lightweight feel. ... Color and Customization: OneFit UltraStride Shoes are available in a variety of vibrant colors and stylish patterns, catering to diverse personal preferences. You can choose from classic monochromatic options for a timeless look or opt for bold and vibrant hues to make a fashion statement. The ability to customize the shoe's appearance allows individuals to express their unique style while enjoying the benefits of the OneFit technology. Conclusion: The OneFit UltraStride Shoes represent a breakthrough in footwear technology, eliminating the hassle of finding the perfect fit for your feet. With their adaptive design, superior comfort, and stylish aesthetics, these shoes offer a truly personalized experience for individuals of all foot sizes. Stay comfortable, confident, and on-trend with the OneFit UltraStride Shoes, the ultimate choice for those seeking unmatched versatility and a perfect fit.
DALL-E ist durch GPT-4 bekannt, und deshalb kannst du seinen Namen in ChatGPT aufrufen und es macht einen vernünftigen Job bei der Erstellung einer Eingabeaufforderung für ein Werkzeug zur Bilderzeugung. Wenn du vorhast, diese Eingabeaufforderung in der Produktion zu verwenden, kannst du das Prinzip der Eingabeaufforderung mit Beispielen in Betracht ziehen, aber für unsere Zwecke ist sie auch ohne Beispiele gut genug.
Eingabe:
Convert this description into a short prompt for an AI image generation model such as DALL-E:
Ausgabe:
Create an eye-catching image that visually represents the "OneFit UltraStride Shoes," a revolutionary footwear product that adapts to any foot size. Showcase a sleek and modern shoe design incorporating a stretchable upper, an adjustable lacing system, and a cushioned insole for optimal comfort. Emphasize the shoe's versatility by displaying it in action on various surfaces, highlighting its excellent traction. Incorporate vibrant colors and patterns to convey the customizable nature of the product. The image should capture the essence of innovation, style, and personalized fit that the OneFit UltraStride Shoes offer.
Die Eingabeaufforderung kann nun in Bilderzeugungstools wie DALL-E oder Midjourney als Eingabeaufforderung eingefügt werden, die dir einen guten Ausgangspunkt für die Visualisierung des Produkts bietet. Auch wenn du dich nicht für den endgültigen Entwurf entscheidest, ist ein Bild doch viel aussagekräftiger und hilft den Leuten, sich schneller eine Meinung zu bilden. Es ist kognitiv einfacher, ein vorhandenes Bild zu kritisieren oder zu loben, als sich ein neues Bild aus einer leeren Seite oder einem Textabschnitt auszudenken.
Abbildung 1-15 zeigt die Ausgabe.
Bei der professionellen Arbeit mit ist es üblich, mehrere KI-Aufrufe miteinander zu verknüpfen und sogar mehrere KI-Modelle einzusetzen, um komplexere Ziele zu erreichen. Selbst Anwendungen, die nur eine Eingabeaufforderung enthalten, werden oft dynamisch erstellt und basieren auf externem Kontext, der aus verschiedenen Datenbanken oder anderen Aufrufen eines KI-Modells abgefragt wird. Die Bibliothek LangChain hat Werkzeuge entwickelt, um mehrere Eingabeaufforderungen und Abfragen miteinander zu verknüpfen und diesen Prozess übersichtlicher und besser strukturiert zu gestalten. Ein grundlegendes Beispiel ist die progressive Zusammenfassung, bei der Text, der zu groß ist, um in ein Kontextfenster zu passen, in mehrere Textabschnitte aufgeteilt werden kann, von denen jeder zusammengefasst wird, bevor die Zusammenfassungen schließlich zusammengefasst werden. Wenn du dich mit den Entwicklern früher KI-Produkte unterhältst, wirst du feststellen, dass sie alle unter der Haube mehrere Eingabeaufforderungen miteinander verknüpfen, was als KI-Kettenbildung bezeichnet wird, um bessere Ergebnisse in der Endausgabe zu erzielen.
Das Reason and Act (ReAct) -Framework war einer der ersten populären Versuche, KI-Agenten zu entwickeln, darunter die Open-Source-Projekte BabyAGI, AgentGPT und Microsoft AutoGen. Diese Agenten sind das Ergebnis einer Verkettung mehrerer KI-Aufrufe, um zu planen, zu beobachten, zu handeln und dann die Ergebnisse der Aktion zu bewerten. Autonome Agenten werden in Kapitel 6 behandelt, sind aber zum Zeitpunkt des Verfassens dieses Artikels noch nicht weit verbreitet in der Produktion. Diese Praxis der selbständig denkenden Agenten ist noch sehr jung und fehleranfällig, aber es gibt vielversprechende Anzeichen dafür, dass dieser Ansatz bei der Bewältigung komplexer Aufgaben nützlich sein kann und wahrscheinlich Teil der nächsten Evolutionsstufe von KI-Systemen sein wird.
Zwischen großen Technologieunternehmen wie Microsoft und Google sowie einer Vielzahl von Open-Source-Projekten auf Hugging Face und wagnisfinanzierten Start-ups wie OpenAI und Anthropic tobt ein Kampf um KI. Die neuen Modelle werden immer zahlreicher und diversifizieren sich, um um verschiedene Segmente des wachsenden Marktes zu konkurrieren. Anthropic's Claude 2 hatte zum Beispiel ein Kontextfenster mit 100.000 Token im Vergleich zu den standardmäßigen 8.192 Token des GPT-4. OpenAI reagierte bald darauf mit einer Version von GPT-4 mit einem 128.000-Token-Fenster, und Google wirbt mit Gemini 1.5 mit einer Kontextlänge von 1 Million Token. Zum Vergleich: Eines der Harry Potter-Bücher umfasst etwa 185.000 Token, so dass ein ganzes Buch in eine einzige Eingabeaufforderung passen könnte, obwohl die Verarbeitung von Millionen von Token bei jedem API-Aufruf für die meisten Anwendungsfälle unerschwinglich sein dürfte.
Dieses Buch konzentriert sich auf GPT-4 für Techniken der Texterzeugung sowie Midjourney v6 und Stable Diffusion XL für Techniken der Bilderzeugung, aber schon in wenigen Monaten könnten diese Modelle nicht mehr auf dem neuesten Stand der Technik sein. Das bedeutet, dass es immer wichtiger wird, das richtige Modell für die jeweilige Aufgabe auszuwählen und mehrere KI-Systeme miteinander zu verknüpfen. Templates sind bei der Übertragung auf ein neues Modell selten vergleichbar, aber die Wirkung der Fünf Prinzipien des Prompting wird jede Eingabeaufforderung, die du für ein beliebiges Modell verwendest ( ), stetig verbessern und dir zuverlässigere Ergebnisse liefern.
Zusammenfassung
In diesem Kapitel hast du erfahren, wie wichtig Prompt-Engineering im Kontext der generativen KI ist. Wir haben Prompt-Engineering als den Prozess der Entwicklung effektiver Eingabeaufforderungen definiert, die bei der Interaktion mit KI-Modellen zu den gewünschten Ergebnissen führen. Du hast herausgefunden, dass klare Anweisungen, die Formatierung der Ausgabe, die Einbeziehung von Beispielen, die Einrichtung eines Bewertungssystems und die Aufteilung komplexer Aufgaben in kleinere Eingabeaufforderungen die wichtigsten Prinzipien des Prompt-Engineerings sind. Wenn du diese Prinzipien anwendest und gängige Eingabeaufforderungen verwendest, kannst du die Qualität und Zuverlässigkeit der von der KI erzeugten Ergebnisse verbessern.
Du hast auch die Rolle des Prompt-Engineerings bei der Erstellung von Produktnamen und Bildern untersucht. Du hast gesehen, wie die Angabe des gewünschten Formats und die Bereitstellung von lehrreichen Beispielen die Ausgabe der KI stark beeinflussen können. Außerdem hast du das Konzept des Rollenspiels kennengelernt, bei dem du die KI auffordern kannst, Ausgaben zu erzeugen, als wäre sie eine berühmte Person wie Steve Aufträge. Das Kapitel unterstreicht die Notwendigkeit einer klaren Ausrichtung und eines klaren Kontextes, um die gewünschten Ergebnisse beim Einsatz generativer KI-Modelle zu erzielen. Außerdem erfährst du, wie wichtig es ist, die Leistung von KI-Modellen zu bewerten, und welche verschiedenen Methoden zur Messung der Ergebnisse verwendet werden, sowie die Kompromisse zwischen Qualität und Tokenverbrauch, Kosten und Latenz.
Im nächsten Kapitel wirst du in die Modelle zur Texterstellung eingeführt. Du lernst die verschiedenen Arten von Basismodellen und ihre Möglichkeiten, aber auch ihre Grenzen kennen. Das Kapitel befasst sich auch mit den Standardangeboten von OpenAI, den Wettbewerbern und den Open-Source-Alternativen. Am Ende des Kapitels wirst du ein solides Verständnis für die Geschichte der Textgenerierungsmodelle und ihre jeweiligen Stärken und Schwächen haben. Dieses Buch wird in den Kapiteln 7, 8 und 9 auf die Eingabeaufforderungen zur Bilderzeugung zurückkommen, du kannst also ruhig weiterblättern, wenn du das gerade brauchst. Mach dich bereit, tiefer in die Disziplin des Prompt-Engineerings einzutauchen und deinen Komfort bei der Arbeit mit KI zu erhöhen.
Get Prompt Engineering für generative KI now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.