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 Format ausgeben, das wir angeben, wenn wir im eigentlichen Geschäft 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 bekommt man das Endergebnis nicht oder das Ergebnis bleibt nach 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:
{"question":你好吗!}
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.:
{"question":"你好吗!" ,"answer":"我很好"}
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() # append your JSON segment lexer.append_string('{"a":') # complete the JSON print(lexer.complete_json()) # will print `{"a":null}` # append more JSON segment lexer.append_string('[tr') # complete the JSON again print(lexer.complete_json()) # will print `{"a":[true]}`
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:
,
Das ist Chinesisch, ich kann es nicht richtig entziffern.巴黎
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
{'question': '2024年奥运会在哪里举办?', 'answer': '巴黎'}