Ich habe eine einzige Bitte, und sie ist immer dieselbe: Du hast eine Aufforderung dafür, also verstecke sie bitte nicht in den Weiten des Codes. Alles, was ich brauche, ist, einen Satz hinzuzufügen: Benutze immer Finnisch. Das ist alles. Und plötzlich ist alles weltweit im Einsatz.
Aber jetzt ist das nur Zeitverschwendung für mich, für meine aktiven Nutzer und für jeden anonymen Nutzer, den ich bekomme, einschließlich derer, die einen solchen Dienst benötigen würden.
Das ist wunderbare Arbeit. Aber wegen dieses einen fehlenden Features… nein. Ich würde es meinen Nutzern anbieten wollen, denn wenn sie es benutzen können, kann es jeder benutzen. Aber es hat absolut keinen Sinn, dies, Zusammenfassungen usw. auf Finnisch in einem finnischen Forum auf Englisch zu generieren.
Wir haben einen Plan für die Anpassung von Prompts in DiscourseAI, der es unseren Benutzern ermöglicht, alle in den verschiedenen Teilen des Plugins verwendeten Prompts schnell zu ändern. Ich glaube, dass wir dies im Laufe dieses Jahres angehen können.
In der Zwischenzeit können wir solche Anfragen in diesem Thema zentralisieren.
Das ist eine knifflige Angelegenheit! Das Anpassen von Prompts ist ein so schwieriges Problem.
Wenn wir uns die Details ansehen, nehmen wir:
CompletionPrompt.seed do |cp|
cp.id = -306
cp.name = "explain"
cp.prompt_type = CompletionPrompt.prompt_types[:text]
cp.messages = { insts: <<~TEXT }
Du bist ein Tutor, der einem Schüler einen Begriff in einem bestimmten Kontext erklärt.
Ich werde dir alles geben, was du wissen musst, in <input></input>-Tags, die den Begriff, den ich
erklären möchte, in <term></term>-Tags, den Kontext, in dem er verwendet wurde, in <context></context>-Tags, den Titel des
Themas, in dem er verwendet wurde, in <topic></topic>-Tags und optional den vorherigen Beitrag in der Konversation
in <replyTo></replyTo>-Tags enthalten.
Verwende all diese Informationen, um einen Absatz mit einer kurzen Erklärung
zu schreiben, was der Begriff bedeutet. Formatiere die Antwort mit Markdown. Antworte nur mit der Erklärung und
nichts weiter.
TEXT
end
Wie können wir das lösen und anpassbar machen?
Das Übersetzungssystem verwenden, die Anweisungen in server.en.yml verschieben
“Completion Prompt” zugunsten des Ai Persona-Modells aufgeben
Einen Editor für das “Completion Prompt”-Modell bereitstellen
Uns mit Prompt-Engineering aus der Affäre ziehen
1. Das Übersetzungssystem verwenden, die Anweisungen in server.en.yml verschieben
Vorteile
Wir werden automatisch mit Unterstützung für mehrere Sprachen ausgeliefert
Das System existiert bereits, es muss nichts Neues gebaut werden
Sehr anpassbar durch Lokalisierungs-Overrides in der Admin-Oberfläche
Nachteile
Viele LLMs funktionieren nicht gut mit “nicht Englisch”, die Übersetzung kann zu einer weitaus schlechteren Leistung führen
Wenn Leute Tags übersetzen, wird es komplett kaputt gehen (z. B. <title>)
2. Zentralisierung auf AI Persona
Vorteile
Wir haben bereits den Großteil der Benutzeroberfläche
Triviale Möglichkeit, Dinge zum KI-Assistenten hinzuzufügen/zu entfernen
Nachteile
Wir werden nicht mit Übersetzungen ausgeliefert
Wir müssen eine Benutzeroberfläche erstellen, um eine Persona für die Verwendung durch eine Funktion zu kennzeichnen: (ist sie für illustrierte Beiträge? ist sie für den Composer-Helfer? ist sie für den Bot-Titelgenerator?) Einige davon sind 1-zu-1 und einige sind 1-zu-viele
Einige der Personas ergeben für Bot-Konversationen keinen Sinn, sie erfordern <replyTo>-Tags und <item>-Tags und <input>-Tags.
3. Eine Benutzeroberfläche für Completion Prompts bereitstellen
Vorteile
Klare Trennung von Personas, reduzierte Verwirrung
Schön, neue Completion Prompts für Benutzer hinzufügen zu können … wollen Sie etwas unterhalb von “übersetzen”, kein Problem
Einfach zu bearbeiten
Nachteile
Komplexer Umgang mit “Drift” - wenn ein Benutzer einen Prompt überschreibt und wir das Original korrigieren, um einen <something_new>-Tag hinzuzufügen, woher soll er das wissen?
4. Uns mit Prompt-Engineering aus der Affäre ziehen
Wenn wir diese Magie schaffen, könnte es mit ein paar zusätzlichen benutzerdefinierten Anweisungen schön sein, z. B. “WICHTIG: Alle Antworten müssen auf Finnisch erfolgen”, aber es wird schwierig sein, dies konsistent zum Laufen zu bringen.
Vorteile
Magie, es funktioniert einfach
Nachteile
In der Realität sehr unwahrscheinlich, dass es konsistent funktioniert, benutzerdefinierte Anweisungen in der richtigen Sprache werden das Modell weitaus besser verankern
Persönlich tendiere ich zu (3). Insbesondere, da es uns die Möglichkeit gibt, benutzerdefinierte Prompts hinzuzufügen und eine starke Trennung zu gewährleisten. Aber ich verstehe (2) als Ausweg vollkommen, vielleicht schaffen wir es und es vereinheitlicht eine Menge Code, was sehr schön ist. Wir müssen damit experimentieren und die Idee zuerst testen, um einen Gewinner zu ermitteln.
Wir (als Endbenutzer-Administratoren) müssen in diesen Situationen keine ganzen Prompts entwickeln. Wir müssen nur die Aufforderung hinzufügen, eine bestimmte Sprache im Prompt zu verwenden. Ich weiß nichts über das Programmieren, aber generell ist das Hinzufügen einer Textzeichenfolge zu einem Text ziemlich trivial, nicht wahr? Und Sie senden hier nur Text?
Und der Prompt selbst muss natürlich auf Englisch sein.
es geht um die spezifische Sprachausgabe und nicht um die allgemeine Prompt-Anpassung… aber wenn wir ein Sprachauswahlmenü hätten, könnten wir die KI bitten, den Prompt (außer den Tags) zu übersetzen und dann diesen Prompt zu speichern/senden?
Prompt ins Finnische übersetzenAI
Übersetze dies ins Finnische, außer den <>-Tags:
Du bist ein Tutor, der einem Schüler einen Begriff in einem bestimmten Kontext erklärt. Ich werde dir alles zur Verfügung stellen, was du wissen musst, in <input> Tags, die den Begriff, den ich dich erklären lassen möchte, in <term> Tags, den Kontext, in dem er verwendet wurde, in <context> Tags, den Titel des Themas, in dem er verwendet wurde, in <topic> Tags und optional den vorherigen Beitrag in der Konversation in <replyTo> Tags enthalten. Nutze all diese Informationen, um einen Absatz mit einer kurzen Erklärung des Begriffs zu schreiben. Formatiere die Antwort mit Markdown. Antworte nur mit der Erklärung und nichts anderem.
Sinä olet ohjaaja, joka selittää termin oppilaalle tietyssä kontekstissa. Minä tarjoan sinulle kaiken tarvittavan tiedon <input> tageissa, joka sisältää termin, jonka haluat minun selittävän <term> tageissa, kontekstin, jossa sitä käytettiin <context> tageissa, aiheen otsikon, jossa sitä käytettiin <topic> tageissa, ja valinnaisesti, edellisen viestin keskustelussa <replyTo> tageissa. Käyttäen kaikkea tätä tietoa, kirjoita kappale lyhyellä selityksellä siitä, mitä termi tarkoittaa. Muotoile vastaus käyttäen Markdownia. Vastaa vain selityksellä eikä millään muulla.
Könnten die technischen Details ein separater Teil des Prompts sein? Dann hätten wir einen Prompt, der etwa so aussieht:
Wende dieses Verhalten an (Admins können bearbeiten oder anhängen):
Du bist ein Tutor, der einem Schüler einen Begriff in einem bestimmten Kontext erklärt.
Schreibe einen AbsatzSatz mit einer kurzen Erklärung, was der Begriff bedeutet.
Antworte nur mit der Erklärung und nichts anderem.
Benutze viele Emojis
Mit diesen technischen Details (unveränderlich, wir aktualisieren, um Drift zu vermeiden):
Der Begriff, den ich dich erklären lassen möchte, befindet sich in <term> Tags
Der Kontext, in dem er verwendet wurde, befindet sich in <context> Tags
Der Titel des Themas, in dem er verwendet wurde, befindet sich in <topic> Tags
Der vorherige Beitrag in der Konversation befindet sich in <replyTo> Tags (optional)
Nein, das ist eine wirklich schlechte Idee. Es werden zwei Übersetzungen vorgenommen, die die Aufforderung jedes Mal ändern. Alles, was benötigt wird, ist die Formulierung „Antworte in [beliebige Sprache]“[1]. Dein Problem ist zu entscheiden, welche Sprache das sein soll, und ich möchte dieselbe vorschlagen, die dieses Forum als Standard-Locale verwendet.
oder „benutze“… das ist nur eine Frage der Formulierung, aber es muss auf Englisch sein. Nun, das stimmt für OpenAI, andere sind für mich unbekanntes Gebiet ↩︎
Ich habe Vorher/Nachher getestet, und zumindest für GPT-4-Turbo und Portugiesisch gibt es bei der Verwendung des Korrekturlesers überhaupt keine Änderung. Ich schätze, das Modell war schlau genug, meinen Text in der Originalsprache zu belassen.
KI-Bildunterschrift
Ich habe es auf Bildunterschriften erweitert, und dort funktioniert es sehr gut:
Danke Leute! Zumindest werden jetzt Untertitel in der gewünschten Sprache erstellt (und die Qualität ist wie erwartet, aber das kommt von OpenAI, zumindest für mich).\n\nZusammenfassungen… Ich weiß es noch nicht, da ich die schon seit einer Weile nicht mehr erstellen konnte. Aber das ist eine ganz andere Geschichte.