Die Erkennung von KI-generiertem Text ist zu einem heißen Thema geworden, bei dem Forscher und Praktiker über seine Machbarkeit und ethischen Implikationen diskutieren. Da die Modelle immer ausgefeilter werden, wird die Unterscheidung zwischen von Menschen geschriebenem und KI-generiertem Text sowohl zu einer spannenden Herausforderung als auch zu einer entscheidenden Notwendigkeit.
In diesem Beitrag untersuchen wir anhand eines faszinierenden Datensatzes von 1,39 Millionen Textbeispielen, wie wir die Optimierungsfunktionen von DSPy nutzen können, um den GPT-4o-mini von OpenAI für diese Aufgabe zu optimieren. Am Ende wissen Sie, wie Sie mit DSPy einen einfachen KI-Textdetektor implementieren, bewerten und optimieren – kein manuelles Prompt-Engineering erforderlich.
Laden wir zunächst den Datensatz, der Textbeispiele enthält, die entweder als von Menschen geschrieben oder als KI-generiert aus verschiedenen menschlichen und LLM-Quellen gekennzeichnet sind. Stellen Sie zunächst sicher, dass Sie Python 3 zusammen mit den DSPy- und Hugging-Face-Datensatzbibliotheken installiert haben:
pip install dspy datasets
Der Datensatz ist ca. 2 GB groß, daher kann dieser Schritt je nach Internetgeschwindigkeit einige Minuten dauern.
Hier ist der Code zum Laden und gleichmäßigen Aufteilen des Datensatzes für Training und Tests:
from datasets import load_dataset # Load the dataset ds = load_dataset("artem9k/ai-text-detection-pile", split="train") # For simplicity, we’ll do an even split of data for testing and training NUM_EXAMPLES = 80 # Adjust this to experiment with dataset size ds = ds.train_test_split(test_size=NUM_EXAMPLES, train_size=NUM_EXAMPLES)
Tipp: Sie können NUM_EXAMPLES anpassen, um mit größeren Datensätzen zu experimentieren oder um die Kosten bei der Durchführung von Optimierungen zu senken.
Als nächstes erstellen wir einen grundlegenden DSPy-Prädiktor mit OpenAIs GPT-4o-mini. GPT-4o-mini ist eine leichtgewichtige Version des GPT-4o-Modells von OpenAI, wodurch es für Experimente kosteneffizient ist. DSPy vereinfacht diesen Prozess durch die Verwendung von Signaturen, die strukturierte Eingabe-Ausgabe-Zuordnungen definieren.
Ersetzen Sie „YOUR_API_KEY“ durch Ihren OpenAI-API-Schlüssel, bevor Sie den Code ausführen:
import dspy from typing import Literal # Initialize the OpenAI GPT-4o-mini model lm = dspy.LM('openai/gpt-4o-mini', api_key="YOUR_API_KEY") dspy.configure(lm=lm, experimental=True) # Define the AI text detector signature class DetectAiText(dspy.Signature): """Classify text as written by human or by AI.""" text: str = dspy.InputField() source: Literal['ai', 'human'] = dspy.OutputField() # Create a basic predictor detector = dspy.Predict(DetectAiText)
Beachten Sie, dass wir hier kein Prompt-Engineering durchgeführt haben. Stattdessen verlassen wir uns darauf, dass DSPy dies und die Eingabe-Ausgabe-Beziehungen automatisch erledigt.
Sie können den „Detektor“ mit einigen Beispieleingaben testen:
print(detector(text="Hello world (this definitely wasn't written by AI)"))
Die Vorhersage wird im Feld „Quelle“ der Ausgabe angezeigt.
Da wir nun einen einfachen Detektor haben, bewerten wir seine Leistung mit den Evaluierungstools von DSPy. Dazu definieren wir eine einfache Metrik, die prüft, ob das Modell die Quelle des Textes (Mensch oder KI) korrekt vorhersagt.
Hier ist der Code zum Einrichten und Ausführen der Auswertung:
from dspy.evaluate import Evaluate # Define a simple evaluation metric def validate_text_source(example: dspy.Example, pred, trace=None) -> int: return 1 if example.source.lower() == pred.source.lower() else 0 # Transform the dataset into DSPy-compatible "Example" objects dspy_trainset = [ dspy.Example(source=x['source'], text=x['text']).with_inputs('text') for x in ds['train'] ] dspy_devset = [ dspy.Example(source=x['source'], text=x['text']).with_inputs('text') for x in ds['test'] ] # Evaluate the detector evaluator = Evaluate(devset=dspy_devset, num_threads=12) # Adjust threads based on your system evaluator(detector, metric=validate_text_source)
In meinen ersten Tests habe ich eine Genauigkeit von 76 %–81 % erreicht. Beachten Sie, dass die Ergebnisse aufgrund der Zufallsstichprobe des Datensatzes variieren können.
Die wahre Stärke von DSPy liegt in seinen Optimierungsmöglichkeiten. Durch die Verwendung des MIPROv2-Optimierers können wir die Leistung des Detektors verbessern, ohne die Eingabeaufforderungen manuell anzupassen. Der Optimierer automatisiert diesen Prozess mithilfe von Beispielen mit wenigen Schüssen, dynamischen Vorlagen und selbstüberwachten Techniken.
So richten Sie den Optimierer ein und führen ihn aus:
pip install dspy datasets
Hinweis: Die Kosten für einen einzelnen Optimierungslauf mit der Voreinstellung „Light“ betragen normalerweise weniger als 0,50 $ für einen Datensatz mit 80 Beispielen.
Nachdem ich die Optimierung durchgeführt hatte, stellte ich eine deutliche Leistungssteigerung fest. Mein erster Lauf erreichte eine Genauigkeit von 91,25 %, verglichen mit der Basislinie von 76 %–81 %. Nachfolgende Durchläufe lagen zwischen 81,2 % und 91,25 % und zeigten konsistente Verbesserungen mit minimalem Aufwand.
So laden Sie das optimierte Modell zur weiteren Verwendung:
from datasets import load_dataset # Load the dataset ds = load_dataset("artem9k/ai-text-detection-pile", split="train") # For simplicity, we’ll do an even split of data for testing and training NUM_EXAMPLES = 80 # Adjust this to experiment with dataset size ds = ds.train_test_split(test_size=NUM_EXAMPLES, train_size=NUM_EXAMPLES)
Sie können wie folgt weiter iterieren:
In nur wenigen Schritten haben wir gezeigt, wie DSPy die LLM-Optimierung für reale Anwendungsfälle vereinfacht. Ohne manuelles Prompt-Engineering haben wir eine messbare Verbesserung bei der Erkennung von KI-generiertem Text erzielt. Obwohl dieses Modell nicht perfekt ist, ermöglicht die Flexibilität von DSPy eine kontinuierliche Iteration, was es zu einem wertvollen Werkzeug für die skalierbare KI-Entwicklung macht.
Ich würde dringend empfehlen, die Dokumentation von DSPy durchzulesen und mit anderen Optimierern und LLM-Mustern zu experimentieren.
Vollständiger Code auf GitHub verfügbar.
Frage? Kommentare? Lassen Sie es mich wissen, ich freue mich darauf zu sehen, was Sie mit DSPy erstellen!
Sie finden mich auf LinkedIn | CTO & Partner bei EES.
Das obige ist der detaillierte Inhalt vonOptimierung des GPT-mini von OpenAI zur Erkennung von KI-generiertem Text mithilfe von DSPy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!