13 KiB
LLM-Testdatei
Dieses Dokument testet, ob das LLM, das die Dokumentation übersetzt, den general_prompt
in scripts/translate.py
und den sprachspezifischen Prompt in docs/{language code}/llm-prompt.md
versteht. Der sprachspezifische Prompt wird an general_prompt
angehängt.
Hier hinzugefügte Tests werden von allen Erstellern sprachspezifischer Prompts gesehen.
So verwenden:
- Einen sprachspezifischen Prompt haben –
docs/{language code}/llm-prompt.md
. - Eine frische Übersetzung dieses Dokuments in die gewünschte Zielsprache durchführen (siehe z. B. das Kommando
translate-page
dertranslate.py
). Dadurch wird die Übersetzung unterdocs/{language code}/docs/_llm-test.md
erstellt. - Prüfen Sie, ob in der Übersetzung alles in Ordnung ist.
- Verbessern Sie bei Bedarf Ihren sprachsspezifischen Prompt, den allgemeinen Prompt oder das englische Dokument.
- Beheben Sie anschließend manuell die verbleibenden Probleme in der Übersetzung, sodass es eine gute Übersetzung ist.
- Übersetzen Sie erneut, nachdem die gute Übersetzung vorliegt. Das ideale Ergebnis wäre, dass das LLM an der Übersetzung keine Änderungen mehr vornimmt. Das bedeutet, dass der allgemeine Prompt und Ihr sprachsspezifischer Prompt so gut sind, wie sie sein können (Es wird manchmal ein paar scheinbar zufällige Änderungen machen, der Grund ist, dass LLMs keine deterministischen Algorithmen sind).
Die Tests:
Codeschnipsel
//// tab | Test
Dies ist ein Codeschnipsel: foo
. Und dies ist ein weiteres Codeschnipsel: bar
. Und noch eins: baz quux
.
////
//// tab | Info
Der Inhalt von Codeschnipseln sollte unverändert bleiben.
Siehe Abschnitt ### Content of code snippets
im allgemeinen Prompt in scripts/translate.py
.
////
Anführungszeichen
//// tab | Test
Gestern schrieb mein Freund: „Wenn man unkorrekt korrekt schreibt, hat man es unkorrekt geschrieben“. Worauf ich antwortete: „Korrekt, aber ‚unkorrekt‘ ist unkorrekterweise nicht ‚„unkorrekt“‘“.
/// note | Hinweis
Das LLM wird dies wahrscheinlich falsch übersetzen. Interessant ist nur, ob es die korrigierte Übersetzung bei einer erneuten Übersetzung beibehält.
///
////
//// tab | Info
Der Prompt-Designer kann entscheiden, ob neutrale Anführungszeichen in typografische Anführungszeichen umgewandelt werden sollen. Es ist in Ordnung, sie unverändert zu lassen.
Siehe zum Beispiel den Abschnitt ### Quotes
in docs/de/llm-prompt.md
.
////
Anführungszeichen in Codeschnipseln
//// tab | Test
pip install "foo[bar]"
Beispiele für Stringliterale in Codeschnipseln: "this"
, 'that'
.
Ein schwieriges Beispiel für Stringliterale in Codeschnipseln: f"I like {'oranges' if orange else "apples"}"
Hardcore: Yesterday, my friend wrote: "If you spell incorrectly correctly, you have spelled it incorrectly". To which I answered: "Correct, but 'incorrectly' is incorrectly not '"incorrectly"'"
////
//// tab | Info
... Allerdings müssen Anführungszeichen in Codeschnipseln unverändert bleiben.
////
Codeblöcke
//// tab | Test
Ein Bash-Codebeispiel ...
# Eine Begrüßung an das Universum ausgeben
echo "Hello universe"
... und ein Konsolen-Codebeispiel ...
$ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid">main.py</u>
<span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting server
Searching for package file structure
... und noch ein Konsolen-Codebeispiel ...
// Ein Verzeichnis „Code“ erstellen
$ mkdir code
// In dieses Verzeichnis wechseln
$ cd code
... und ein Python-Codebeispiel ...
wont_work() # Das wird nicht funktionieren 😱
works(foo="bar") # Das funktioniert 🎉
... und das war's.
////
//// tab | Info
Code in Codeblöcken sollte nicht verändert werden, mit Ausnahme von Kommentaren.
Siehe Abschnitt ### Content of code blocks
im allgemeinen Prompt in scripts/translate.py
.
////
Tabs und farbige Boxen
//// tab | Test
/// info | Info Etwas Text ///
/// note | Hinweis Etwas Text ///
/// note | Technische Details Etwas Text ///
/// check | Testen Etwas Text ///
/// tip | Tipp Etwas Text ///
/// warning | Achtung Etwas Text ///
/// danger | Gefahr Etwas Text ///
////
//// tab | Info
Tabs und Info
/Note
/Warning
/usw. Blöcke sollten die Übersetzung ihres Titels nach einem vertikalen Strich (|
) erhalten.
Siehe die Abschnitte ### Special blocks
und ### Tab blocks
im allgemeinen Prompt in scripts/translate.py
.
////
Web- und interne Links
//// tab | Test
Der Linktext sollte übersetzt werden, die Linkadresse sollte unverändert bleiben:
- Link zur Überschrift oben
- Interner Link{.internal-link target=_blank}
- Externer Link
- Link zu einem Stil
- Link zu einem Skript
- Link zu einem Bild
Der Linktext sollte übersetzt werden, die Linkadresse sollte auf die Übersetzung zeigen:
////
//// tab | Info
Links sollten übersetzt werden, aber ihre Adresse soll unverändert bleiben. Eine Ausnahme sind absolute Links zu Seiten der FastAPI-Dokumentation. In diesem Fall sollte auf die Übersetzung verlinkt werden.
Siehe Abschnitt ### Links
im allgemeinen Prompt in scripts/translate.py
.
////
HTML „abbr“-Elemente
//// tab | Test
Hier einige Dinge, die in HTML-„abbr“-Elemente gepackt sind (einige sind erfunden):
Das abbr gibt eine vollständige Phrase
- GTD
lt
- XWT
- PSGI
Das abbr gibt eine Erklärung
- Cluster
- Deep Learning
Das abbr gibt eine vollständige Phrase und eine Erklärung
- MDN
- I/O.
////
//// tab | Info
„title“-Attribute von „abbr“-Elementen werden nach bestimmten Anweisungen übersetzt.
Übersetzungen können eigene „abbr“-Elemente hinzufügen, die das LLM nicht entfernen soll. Z. B. um englische Wörter zu erklären.
Siehe Abschnitt ### HTML abbr elements
im allgemeinen Prompt in scripts/translate.py
.
////
Überschriften
//// tab | Test
Eine Webapp entwickeln – ein Tutorial
Hallo.
Typhinweise und -annotationen
Hallo wieder.
Super- und Subklassen
Hallo wieder.
////
//// tab | Info
Die einzige strenge Regel für Überschriften ist, dass das LLM den Hash-Teil in geschweiften Klammern unverändert lässt, damit Links nicht kaputtgehen.
Siehe Abschnitt ### Headings
im allgemeinen Prompt in scripts/translate.py
.
Für einige sprachspezifische Anweisungen, siehe z. B. den Abschnitt ### Headings
in docs/de/llm-prompt.md
.
////
In der Dokumentation verwendete Begriffe
//// tab | Test
-
Sie
-
Ihr
-
z. B.
-
usw.
-
foo
vom Typint
-
bar
vom Typstr
-
baz
vom Typlist
-
das Tutorial – Benutzerhandbuch
-
das Handbuch für fortgeschrittene Benutzer
-
die SQLModel-Dokumentation
-
die API-Dokumentation
-
die automatische Dokumentation
-
Data Science
-
Deep Learning
-
Machine Learning
-
Dependency Injection
-
HTTP Basic-Authentifizierung
-
HTTP Digest
-
ISO-Format
-
der JSON-Schema-Standard
-
das JSON-Schema
-
die Schema-Definition
-
Password Flow
-
Mobile
-
deprecatet
-
designt
-
ungültig
-
on the fly
-
Standard
-
Default
-
Groß-/Kleinschreibung ist relevant
-
Groß-/Kleinschreibung ist nicht relevant
-
die Anwendung bereitstellen
-
die Seite ausliefern
-
die App
-
die Anwendung
-
der Request
-
die Response
-
die Error-Response
-
die Pfadoperation
-
der Pfadoperation-Dekorator
-
die Pfadoperation-Funktion
-
der Body
-
der Requestbody
-
der Responsebody
-
der JSON-Body
-
der Formularbody
-
der Dateibody
-
der Funktionskörper
-
der Parameter
-
der Body-Parameter
-
der Pfad-Parameter
-
der Query-Parameter
-
der Cookie-Parameter
-
der Header-Parameter
-
der Formular-Parameter
-
der Funktionsparameter
-
das Event
-
das Startup-Event
-
das Hochfahren des Servers
-
das Shutdown-Event
-
das Lifespan-Event
-
der Handler
-
der Eventhandler
-
der Exceptionhandler
-
handhaben
-
das Modell
-
das Pydantic-Modell
-
das Datenmodell
-
das Datenbankmodell
-
das Formularmodell
-
das Modellobjekt
-
die Klasse
-
die Basisklasse
-
die Elternklasse
-
die Subklasse
-
die Kindklasse
-
die Geschwisterklasse
-
die Klassenmethode
-
der Header
-
die Header
-
der Autorisierungsheader
-
der
Authorization
-Header -
der Forwarded-Header
-
das Dependency-Injection-System
-
die Dependency
-
das Dependable
-
der Dependant
-
I/O-lastig
-
CPU-lastig
-
Nebenläufigkeit
-
Parallelität
-
Multiprocessing
-
die Umgebungsvariable
-
die Umgebungsvariable
-
der
PATH
-
die
PATH
-Umgebungsvariable -
die Authentifizierung
-
der Authentifizierungsanbieter
-
die Autorisierung
-
das Anmeldeformular
-
der Autorisierungsanbieter
-
der Benutzer authentisiert sich
-
das System authentifiziert den Benutzer
-
Das CLI
-
Das Kommandozeileninterface
-
der Server
-
der Client
-
der Cloudanbieter
-
der Clouddienst
-
die Entwicklung
-
die Entwicklungsphasen
-
das Dict
-
das Dictionary
-
die Enumeration
-
das Enum
-
das Enum-Member
-
der Encoder
-
der Decoder
-
kodieren
-
dekodieren
-
die Exception
-
werfen
-
der Ausdruck
-
die Anweisung
-
das Frontend
-
das Backend
-
die GitHub-Diskussion
-
das GitHub-Issue
-
die Leistung
-
die Leistungsoptimierung
-
der Rückgabetyp
-
der Rückgabewert
-
die Sicherheit
-
das Sicherheitsschema
-
der Task
-
der Hintergrundtask
-
die Taskfunktion
-
das Template
-
die Template-Engine
-
die Typannotation
-
der Typhinweis
-
der Serverworker
-
der Uvicorn-Worker
-
der Gunicorn-Worker
-
der Workerprozess
-
die Workerklasse
-
die Workload
-
das Deployment
-
bereitstellen
-
das SDK
-
das Software Development Kit
-
der
APIRouter
-
die
requirements.txt
-
das Bearer-Token
-
der Breaking Change
-
der Bug
-
der Button
-
das Callable
-
der Code
-
der Commit
-
der Contextmanager
-
die Coroutine
-
die Datenbank-Session
-
die Festplatte
-
die Domain
-
die Engine
-
das Fake-X
-
die HTTP-GET-Methode
-
das Item
-
die Bibliothek
-
der Lifespan
-
der Lock
-
die Middleware
-
die Mobile-Anwendung
-
das Modul
-
das Mounten
-
das Netzwerk
-
das Origin
-
Die Überschreibung
-
die Payload
-
der Prozessor
-
die Property
-
der Proxy
-
der Pull Request
-
die Query
-
der RAM
-
der entfernte Rechner
-
der Statuscode
-
der String
-
der Tag
-
das Webframework
-
die Wildcard
-
zurückgeben
-
validieren
////
//// tab | Info
Dies ist eine nicht vollständige und nicht normative Liste von (meist) technischen Begriffen, die in der Dokumentation vorkommen. Sie kann dem Prompt-Designer helfen herauszufinden, bei welchen Begriffen das LLM Unterstützung braucht. Zum Beispiel, wenn es eine gute Übersetzung immer wieder auf eine suboptimale Übersetzung zurücksetzt. Oder wenn es Probleme hat, einen Begriff in Ihrer Sprache zu konjugieren/deklinieren.
Siehe z. B. den Abschnitt ### List of English terms and their preferred German translations
in docs/de/llm-prompt.md
.
////