I. Vorwort
Obwohl die meisten LLMs jetzt die Ausgabe von Zehntausenden von Token unterstützen können. Dennoch gibt es immer noch häufig Situationen, in denen LLMs nicht das von uns angegebene Format ausgeben, wenn wir tatsächlich im Unternehmen landen.
Insbesondere muss die Ausgabe strukturiert sein, damit wir mit den nachgelagerten Aufgaben fortfahren können.
Da das json-Format inhärent pro-plain text ist, wird es, wenn LLM die Ausgabe strukturieren soll, in der Regel als json ausgegeben, und dann wird das json extrahiert, in ein Wörterbuch konvertiert und für nachgelagerte Aufgaben verwendet.
Es gibt jedoch viele Gründe, die dazu führen können, dass wir nicht die vollständige json-Ausgabe erhalten.
Zweitens, die Ausgabe-Hälfte der Json mehrere Fälle
2.1 Ausgabe überschreitet LLM-Unterstützung für Token on line
- Der Eingabekontext ist zu lang, was dazu führt, dass zu wenige Positionen für die Ausgabe übrig bleiben, damit der LLM eine vollständige Antwort geben kann, daher endet der json nach nur der Hälfte der Ausgabe.
- Die Aufgabe war zu komplex, um die CoT-Technik zu verwenden, so dass die LLM-Ausgabe zu viele zwischengeschaltete Denkprozesse enthielt, was dazu führte, dass der LLM nicht viel Platz für die Ausgabe des Endergebnisses hatte. Entweder erhält man kein Endergebnis oder das Ergebnis bleibt nach nur der Hälfte der Ausgabe stehen
2.2 Ausgabe von Sensitive Word Interception LLM
Um zu verhindern, dass LLM missbraucht wird und unangemessene Inhalte ausgibt. Verschiedene Regionen haben unterschiedliche sensible Inhalte, so dass bei der Ausgabe der Ergebnisse an die Außenwelt sensible Wörter je nach Standort gefiltert oder blockiert werden. Wie vor ein paar Jahren hat Meta eine KI mit kriminellen Tendenzen entwickelt, die in der ganzen Welt nicht erlaubt ist.
Das passiert also auch, wenn Ihr llm abgeschnitten wird, wenn er sensible Inhalte unkontrolliert ausgibt und ein halbherziges Ergebnis liefert.
2.3 Nichteinhaltung der Anweisungen
Dies ist viel häufiger der Fall. Selbst die besten LLMs haben Schlummerzeiten, und es gibt keine Garantie, dass die Ausgabe in dem von Ihnen gewünschten Format erfolgt.
In der json-Ausgabe stoßen wir oft auf eine Situation:
- Fehlende wichtige Satzzeichen, zum Beispiel:
{"Frage": Wie geht es Ihnen!}
Es ist unmöglich, diese Ausgabe in ihrer Gesamtheit ohne doppelte Anführungszeichen zu parsen. - Interpunktion, die nicht an der richtigen Stelle erscheint, z. B.:
{"Frage": "Wie geht es dir!" {"Antwort": "Mir geht's gut"}
Die Interpunktion in der Mitte ist in voller Breite, nicht in halber Breite, was ebenfalls dazu führt, dass die json-Ausgabe fehlschlägt. - Es gibt noch viele andere Szenarien, die ich hier nicht alle aufzählen möchte, aber ich zeige Ihnen, wie Sie diese Art von Problemen lösen können.
III. eine Open-Source-Lösung
In der Regel gibt es drei Möglichkeiten, die drei oben genannten Probleme zu lösen:
- Vervollständigung von json: vor allem für die json Antwort Ausgabe die Hälfte des Falles, das heißt, die Hälfte der json nicht alle in eine vollständige json-Format, so dass es die Bedingungen der json parsing.
- Fix json: hauptsächlich für die json-Antwort in der Interpunktion fehlt oder Interpunktion ist falsch Situation
- Discard Teil der json Inhalt: vor allem für die json in einigen kann nicht berücksichtigt werden, die besonderen Umstände, behalten den normalen Inhalt, verwerfen den Inhalt der Unregelmäßigkeiten.
3.1 streaming-json-py Lösung
Dies ist eine Open-Source-Lösung und bietet
- streaming-json-go
- streaming-json-py
- streaming-json-js
Es stehen drei Programmiersprachen zur Verfügung, um den Anforderungen unterschiedlicher Umgebungen gerecht zu werden.
Hier ein Blick auf die Ergebnisse in Aktion
pip install streamingjson
lexer = streamingjson.Lexer() # fügt Ihr JSON-Segment an lexer.append_string('{"a":') # Vervollständigen Sie das JSON print(lexer.complete_json()) # wird `{"a":null}` ausgeben # fügt weiteres JSON-Segment an lexer.append_string('[tr') # vervollständigt das JSON wieder print(lexer.complete_json()) # wird `{"a":[true]}` drucken
Diese Open-Source-Lösung konzentriert sich auf die Ergänzung der json
Alternativen:Behebt ungültige JSON-Zeichenfolgen und behebt mögliche Formatierungsfehler in von LLMs generierten JSON-Daten.
IV. ein Programm zur Verbesserung
Unsere eigene verbesserte Regelung, vor allem durch die Erkennung der fehlenden Interpunktion in der json und die Falschheit der json, um die json-Format zu korrigieren, und dann, um bei der Vervollständigung der json zu erreichen, und schließlich durch die Extraktion der json Teil des Inhalts, um die strukturierten Ergebnisse zu erhalten
Zwei Beispiele.
output = '''Die Antwort, die Sie benötigen, lautet ```jsonn{"question": "Wo werden die Olympischen Spiele 2024 stattfinden?"'' n, n "Antwort": "Paris n''''
Hier liegen drei Fehler vor:
(math.) Gattung
Das ist Chinesisch, ich kann es nicht richtig entziffern.Paris, Hauptstadt von Frankreich
Es gibt ein falsches Zitat, ein fehlendes Zitat.- Fehlende dreifache Anführungszeichen und
}
Schließlich wurde der obige Fehler perfekt korrigiert und die korrekte Ausgabe
{'Frage': 'Wo werden die Olympischen Spiele 2024 ausgetragen?' , 'Antwort': 'Paris'}