Die Welt des Prompt-Engi­nee­ring ist auf ver­schie­de­nen Ebe­nen fas­zi­nie­rend und es gibt kei­nen Man­gel an cle­ve­ren Mög­lich­kei­ten, Agen­ten wie ChatGPT dazu zu brin­gen, bestimmte Arten von Ant­wor­ten zu geben. Tech­ni­ken wie Chain-of-Thought (CoT), Ins­truc­tion-Based, N‑shot, Few-shot und sogar Tricks wie Flattery/Role Assign­ment sind die Inspi­ra­tion hin­ter Biblio­the­ken vol­ler Prompts, die dar­auf abzie­len, alle Bedürf­nisse zu erfüllen.

In die­sem Arti­kel werde ich mich mit einer Tech­nik befas­sen, die nach mei­nen Recher­chen mög­li­cher­weise weni­ger erforscht ist. Ich werde sie zwar vor­läu­fig als „neu“ bezeich­nen, aber ich werde davon abse­hen, sie „neu­ar­tig“ zu nen­nen. Ange­sichts des rasan­ten Inno­va­ti­ons­tem­pos in der Souf­fleur­tech­nik und der Leich­tig­keit, mit der neue Metho­den ent­wi­ckelt wer­den kön­nen, ist es durch­aus mög­lich, dass diese Tech­nik bereits in irgend­ei­ner Form existiert.

Die Tech­nik zielt im Wesent­li­chen dar­auf ab, ChatGPT auf eine Weise zu betrei­ben, die ein Pro­gramm simu­liert. Ein Pro­gramm besteht bekannt­lich aus einer Folge von Anwei­sun­gen, die in der Regel zu Funk­tio­nen gebün­delt sind, um bestimmte Auf­ga­ben zu erfül­len. In gewis­ser Weise ist diese Tech­nik eine Ver­schmel­zung von anwei­sungs­ba­sier­ten und rol­len­ba­sier­ten Promp­ting-Tech­ni­ken. Im Gegen­satz zu die­sen Ansät­zen wird jedoch ver­sucht, einen wie­der­hol­ba­ren und sta­ti­schen Rah­men von Anwei­sun­gen zu ver­wen­den, so dass die Aus­gabe einer Funk­tion eine andere infor­miert und die gesamte Inter­ak­tion inner­halb der Gren­zen des Pro­gramms bleibt. Diese Moda­li­tät sollte gut mit der Mecha­nik der Ein­ga­be­auf­for­de­rung in Agen­ten wie ChatGPT übereinstimmen.

Zur Ver­an­schau­li­chung der Tech­nik wol­len wir die Para­me­ter für eine Mini-App inner­halb von ChatGPT4 fest­le­gen, die als inter­ak­ti­ver Work­shop für Inno­va­to­ren fun­gie­ren soll. Unsere Mini-App wird die fol­gen­den Funk­tio­nen und Merk­male enthalten:

  1. Arbeit an neuer Idee
  2. Idee aus­bauen
  3. Idee zusam­men­fas­sen
  4. Ideen abru­fen
  5. Wei­ter an der vor­he­ri­gen Idee arbeiten
  6. Token-/„Speicher“-Nutzungsstatistik

Um das klar­zu­stel­len, wer­den wir ChatGPT nicht bit­ten, die Mini-App in einer bestimm­ten Pro­gram­mier­spra­che zu pro­gram­mie­ren, und wir wer­den dies in unse­ren Pro­gramm­pa­ra­me­tern berücksichtigen.

Mit die­ser Pro­gramm­über­sicht kön­nen wir nun die Ein­ga­be­auf­for­de­rung schrei­ben, um unsere Mini-App „Inter­ac­tive Innovator’s Work­shop“ in ChatGPT zu instanziieren.

Pro­gramm Simu­la­tion Pri­ming Prompt

Innovator’s Interactive Workshop Program

I want you to simulate an Innovator’s Interactive Workshop application whose core features are defined as follows:

1. Work on New Idea: Prompt user to work on new idea. At any point when a user is ready to work through a new idea the program will suggest that a date or some time reference be provided. Here is additional detail on the options:
  a. Start from Scratch: Asks the user for the idea they would like to work on.
  b. Get Inspired: The program assists user interactively to come up with an idea to work on. The program will ask if the user has a general sense of an area to focus on or whether the program should present options. At all times the user is given the option to go directly to working on an idea.
2. Expand on Idea: Program interactively helps user expand  on an idea.
3. Summarize Idea: Program proposes a summary of the idea regardless of whether or not it has been expanded upon and proposes a title. The user may choose to rewrite or edit the summary. Once the user is satisfied with the summary, the program will "save" the idea summary.
4. Retrieve Ideas: Program retrieves the titles of the idea summaries that were generated during the session. User is given the option to show a summary of one of the ideas or Continue Working on a Previous Idea.
5. Continue Working on Previous Idea: Program retrieves the titles of the idea summaries that were generated during the session. User is asked to choose an idea to continue working on.
6. Token/Memory Usage: Program displays the current token count and its percentage relative to the token limit of 32,000 tokens.

Other program parameters and considerations:

1. All output should be presented in the form of text and embedded windows with code or markdown should note be used.
2. The user flow and user experience should emulate that of a real program but nevertheless be conversational just like ChatGPT is.
3. The Program should use emojis  in helping convey context around the output. But this should be employed sparingly and without getting too carried away. The menu should however always have emojis and they should remain consistent throughout the conversation.

Once this prompt is received, the program will start with Main Menu and a short inspirational welcome message the program devises. Functions are selected by typing the number corresponding to the function or text that approximates to the function in question.  "Help" or "Menu" can be typed  at any time to return to this menu.

Sie kön­nen die Ein­ga­be­auf­for­de­rung auch in ChatGPT4 laden, wenn Sie inter­ak­ti­ver vor­ge­hen und sie selbst tes­ten möchten.

Hier ist die Ver­voll­stän­di­gung von ChatGPT zur Eingabeaufforderung.

So weit, so gut. Wir haben unsere „Mini-App“ gestar­tet, eine auf­mun­ternde Will­kom­mens­nach­richt erhal­ten und ein schein­bar funk­tio­na­les Menü erhal­ten, das mit unse­ren Pro­gramm­pa­ra­me­tern über­ein­stimmt. Tes­ten wir die Funk­tio­na­li­tät unse­rer Mini-App, indem wir „1“ ein­ge­ben, um die Funk­tion „An einer neuen Idee arbei­ten“ zu starten.

Die Kon­ver­sa­tion hält sich wei­ter­hin gut an die von uns fest­ge­legte „Pro­gramm­struk­tur“ und lie­fert in ange­mes­se­ner Weise Abschlüsse, die sich im Rah­men der skiz­zier­ten Para­me­ter bewe­gen. Las­sen Sie uns wei­ter­hin eine Idee von Grund auf ent­wi­ckeln und das Pro­gramm mit uns an einer Tech­no­lo­gie arbei­ten, um Gebäude zu züch­ten, anstatt sie zu bauen.

Inter­es­san­ter­weise stel­len wir fest, dass das „Pro­gramm“ die Funk­tion „Expand on Idea“ selbst­stän­dig auf­ruft, ohne dass das Pro­gramm dies aus­drück­lich anweist. In Anbe­tracht der Ziele des Pro­gramms ist die­ses Ver­hal­ten nicht unan­ge­mes­sen und könnte durch­aus durch unsere anfäng­li­che Kon­text-Ein­stel­lung beein­flusst sein, die den Chat-Agen­ten dazu brachte, sich wie ein Pro­gramm zu ver­hal­ten. Fah­ren wir fort, unsere Idee ein wenig zu erwei­tern, indem wir uns mit der Tech­no­lo­gie beschäf­ti­gen, die erfor­der­lich ist, um Gebäude wach­sen zu lassen.

Und nun wol­len wir uns mit den Mate­ria­lien für den Anbau von Gebäu­den befassen.

Ich fahre ein wenig damit fort, und jetzt wol­len wir sehen, ob wir zum Menü zurück­keh­ren können.

Das Menü ist noch intakt. Ver­su­chen wir nun, unser Pro­gramm die Funk­tion Idee zusam­men­fas­sen aus­füh­ren zu lassen.

Ich bin mit die­sem Titel und die­ser Zusam­men­fas­sung vor­erst zufrie­den, also „spei­chern“ wir sie.

In Kürze wer­den wir den Abruf unse­rer „gespei­cher­ten“ Idee tes­ten, um zu prü­fen, ob unsere Bemü­hun­gen zur Imple­men­tie­rung der Daten­per­sis­tenz erfolg­reich sind. Außer­dem könnte es von Vor­teil sein, unsere „Mini-App“ so zu opti­mie­ren, dass die wie­der­holte Zusam­men­fas­sung nach dem Spei­chern weg­ge­las­sen wird.

Das Rol­len­pri­ming als Pro­gramm führt dazu, dass das Haupt­menü in die Aus­gabe ein­be­zo­gen wird – ein Ver­hal­ten, das wie­derum im Kon­text des Pro­gramms sinn­voll ist, auch wenn es in unse­rer Pro­gramm­de­fi­ni­tion nicht expli­zit kon­fi­gu­riert wurde.

Als Nächs­tes wol­len wir unsere Funk­tion zum Zäh­len der Token testen.

Um die Genau­ig­keit zu über­prü­fen, wende ich mich an das Toke­ni­zer-Tool von OpenAI.

Die Token­zäh­lung ist unge­nau, wie die erheb­li­che Dis­kre­panz zeigt – unser Pro­gramm mel­dete etwa 1.200 Token, wäh­rend das Toke­ni­zer-Tool 2.730 angab. Ange­sichts die­ser Dis­kre­panz ist es rat­sam, diese Funk­tion aus unse­rem Pro­gramm zu ent­fer­nen. Ich werde nicht näher dar­auf ein­ge­hen, warum diese Art von Auf­gabe gene­rell ein Pro­blem für ein Sprach­mo­dell dar­stellt und der Ver­lust an Funk­tio­na­li­tät rela­tiv gering ist. Letzt­end­lich würde ich erwar­ten, dass eine sol­che Funk­tion nativ in ChatGPT inte­griert wird, vor allem, da die Token-Zäh­lung im Hin­ter­grund stän­dig hin- und her­ge­reicht wird.

Als nächs­tes wol­len wir die Funk­tion „Get Inspi­red“ nut­zen, um eine neue Idee zu ent­wi­ckeln. Der Über­sicht­lich­keit hal­ber zeige ich den Dia­log wei­ter unten an. Wie Sie sehen, habe ich mich dafür ent­schie­den, das Kon­zept einer Waste-to-Energy-Drohne zu ver­tie­fen, das unser Pro­gramm als Option vor­schlug, die Idee zusam­men­ge­fasst und von unse­rem Pro­gramm „spei­chern“ lassen.

Alles sieht gut aus, und das Sys­tem hat sich sogar die Frei­heit genom­men, unsere Idee „SolarSky“ zu nen­nen. Um dies effek­ti­ver zu gestal­ten, könn­ten wir eine eigen­stän­dige Funk­tion in die Pro­gramm­de­fi­ni­tion für diese Auf­gabe ein­bauen oder spe­zi­fi­schere Anwei­sun­gen in den Funk­tio­nen „Neue Idee bear­bei­ten“ oder „Neue Idee erwei­tern“ geben. Auch hier wird uns in der Fer­tig­stel­lung ein Menü prä­sen­tiert, das aus Sicht des Pro­gramm­ab­laufs logisch ist.

Nun wol­len wir sehen, ob wir „Ideen abru­fen“ können.

Das scheint im Ein­klang mit unse­ren ursprüng­li­chen Anwei­sun­gen zu ste­hen, die nur den Titel wie gewünscht anbie­ten. Sie for­dert uns auch auf, wei­ter an einer Idee zu arbei­ten, obwohl dies nicht aus­drück­lich in der Mini-App pro­gram­miert wurde. Als Nächs­tes wol­len wir prü­fen, ob die Indi­zie­rung des Stamm­me­nüs bei­be­hal­ten wird. Dazu gebe ich „5“ ein, was der Funk­tion „Wei­ter an einer vor­he­ri­gen Idee arbei­ten“ ent­spricht, und schaue, ob das funktioniert.

Offen­bar wird die Indi­zie­rung im Kon­text der Kon­ver­sa­tion bei­be­hal­ten und die Funk­tion ent­spre­chend auf­ge­ru­fen. Diese Beob­ach­tung ist bemer­kens­wert, ins­be­son­dere wenn man Sze­na­rien in Betracht zieht, in denen meh­rere Indi­zes aktiv sein könn­ten. Sie wirft inter­es­sante Fra­gen dar­über auf, wie sich das „Pro­gramm“ unter sol­chen Bedin­gun­gen ver­hal­ten würde. Viel­leicht ist es Ihnen ent­gan­gen, dass das Pro­gramm bei der Abfrage von Benut­zer­ein­ga­ben für die Aus­wahl von Ideen­er­wei­te­run­gen tat­säch­lich die Inde­xie­rungs­tech­nik ver­wen­det hat.

Las­sen Sie uns wei­ter an unse­rer Idee der wach­sen­den Gebäude arbeiten.

Sieht wie­der gut aus. Das „Pro­gramm“ ver­hält sich wie erwar­tet und hat auch den genauen Punkt fest­ge­hal­ten, an dem wir im Pro­zess der Ideen­er­wei­te­rung pau­siert haben.

Hören wir hier auf, unsere Ein­ga­be­auf­for­de­rung zu tes­ten und sehen wir, was wir mit die­ser Tech­nik gelernt haben.

Con­clu­si­ons and Observations

Um ehr­lich zu sein, hat diese Übung, obwohl sie in Umfang und Funk­tio­na­li­tät begrenzt ist, meine Erwar­tun­gen über­trof­fen. Wir hät­ten ChatGPT bit­ten kön­nen, die Mini-App in einer Spra­che wie Python zu pro­gram­mie­ren und dann den Code Inter­pre­ter (jetzt bekannt als Advan­ced Data Ana­ly­sis) zu nut­zen, um sie in einer per­sis­ten­ten Python-Sit­zung aus­zu­füh­ren. Die­ser Ansatz hätte jedoch einen Grad an Starr­heit mit sich gebracht, der es schwie­rig gemacht hätte, die Kon­ver­sa­ti­ons­funk­tio­na­li­tät zu akti­vie­ren, die in unse­rer Mini-App von Haus aus vor­han­den war. Ganz zu schwei­gen davon, dass wir bei einem Pro­gramm mit meh­re­ren sich über­schnei­den­den Funk­tio­nen sofort Gefahr lie­fen, dass der Code nicht funktionierte.

Die Leis­tung von ChatGPT war beson­ders beein­dru­ckend, da es das Pro­gramm­ver­hal­ten mit hoher Wie­der­ga­be­treue simu­lierte. Die Ein­ga­be­auf­for­de­run­gen blie­ben inner­halb der Gren­zen der Pro­gramm­de­fi­ni­tion und selbst in Fäl­len, in denen das Funk­ti­ons­ver­hal­ten nicht expli­zit defi­niert war, erga­ben die Ver­voll­stän­di­gun­gen einen logi­schen Sinn im Zusam­men­hang mit dem Zweck der Mini-App.

Diese Pro­gramm­si­mu­la­ti­ons­tech­nik könnte gut mit der Funk­tion „Benut­zer­de­fi­nierte Anwei­sun­gen“ von ChatGPT funk­tio­nie­ren, obwohl es erwäh­nens­wert ist, dass dadurch das Ver­hal­ten des Pro­gramms auf alle nach­fol­gen­den Inter­ak­tio­nen ange­wen­det würde.

Zu mei­nen nächs­ten Schrit­ten gehört eine genauere Unter­su­chung die­ser Tech­nik, um fest­zu­stel­len, ob ein umfas­sen­der Test­rah­men Auf­schluss dar­über geben könnte, wie die­ser Ansatz im Ver­gleich zu ande­ren Prompt-Engi­nee­ring-Tech­ni­ken abschnei­det. Diese Art von Übung könnte auch dabei hel­fen, her­aus­zu­fin­den, für wel­che spe­zi­fi­schen Auf­ga­ben (oder Auf­ga­ben­klas­sen) diese Tech­nik am bes­ten geeig­net ist. Blei­ben Sie dran, wir wer­den mehr berichten.

Quelle: medium.com

Erfah­ren Sie hier mehr über Lösun­gen im Bereich Daten­qua­li­tät oder besu­chen Sie eines unse­rer kos­ten­lo­sen Web­i­nare.