GEPA (Genetic-Pareto) ist ein Framework zur Optimierung verschiedener Arten von Textkomponenten in KI-Systemen. Bei diesen Textkomponenten kann es sich um Prompts, Codeschnipsel oder Konfigurationsdateien für KI-Modelle handeln. Es verwendet einen Ansatz namens Reflective Text Evolution, um das Verhalten von KI-Systemen mit Hilfe von Large Language Models (LLMs) zu analysieren und zu reflektieren. Konkret untersucht GEPA Ausführungs- und Bewertungsprotokolle, die während des Systembetriebs erzeugt werden, und nutzt diese Informationen, um gezielte Verbesserungen vorzunehmen. Das Framework kombiniert Strategien wie iterative Mutation, Reflexion und Pareto-optimale Auswahl, um eine leistungsfähigere Version des Systems mit einer begrenzten Anzahl von Evaluierungen zu entwickeln. GEPA optimiert nicht nur einzelne Komponenten, sondern entwickelt auch mehrere Komponenten in einem modularen System gemeinsam weiter, was zu erheblichen Leistungssteigerungen in bestimmten Bereichen führt. Laut dem Papier "GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning" zeigt GEPA eine größere Effizienz als herkömmliche Reinforcement-Learning-Methoden, indem es die Leistung verbessert und gleichzeitig deutlich weniger Stichproben benötigt.
Funktionsliste
- Reflektierende TextentwicklungAnalyse von Systemausführungspfaden (z.B. Argumentationsprozesse, Toolaufrufe und Ausgaben) unter Verwendung von Large Language Models (LLMs), um Probleme zu diagnostizieren und Verbesserungen in natürlicher Sprache vorzuschlagen.
- Mehrzielorientierte Optimierung:: Die Verwendung eines Pareto-optimalen Auswahlmechanismus ermöglicht die gleichzeitige Optimierung mehrerer Ziele (z. B. die Verkürzung der Länge von Stichwörtern bei gleichbleibender Genauigkeit) und die Beibehaltung einer Vielzahl guter Kandidaten.
- Hohe ProbeneffizienzGEPA kann im Vergleich zu traditionellen Methoden des Reinforcement Learning, die Tausende von Versuchen erfordern, mit sehr wenigen Stichproben ("Rollouts") erhebliche Leistungssteigerungen erzielen und die Anzahl der erforderlichen Stichproben um das bis zu 35-fache reduzieren.
- Breites Spektrum an EinsatzmöglichkeitenOptimierung nicht nur von KI-Stichwörtern, sondern auch von Code, Anweisungen und kompletten KI-Programmen wie z. B.
DSPySignaturen, Module und Kontrollfluss in einem Programm. - Flexible AdapterschnittstelleDurch die Verwirklichung von
GEPAAdapterSchnittstelle können Anwender GEPA in jedes System integrieren, das Textkomponenten enthält. Im Mittelpunkt der Systemintegration steht die Definition vonEvaluate(Bewertung) undExtract Traces for Reflection(Extrahieren von reflektiven Trajektorien) Zwei Methoden. - Integration mit DSPy-FrameworkGEPA wurde direkt in das Programm integriert.
DSPyFramework kann der Benutzer diedspy.GEPADie API ist einfach aufzurufen, was die einfachste und leistungsfähigste Art ist, GEPA zu nutzen. - Unterstützung bei der Optimierung komplexer SystemeGEPA ist in der Lage, komplexe KI-Systeme zu optimieren, wie Retrieval Augmented Generation (RAG)-Systeme, konversationelle Intelligenzen mit mehreren Runden und Intelligenzen, die in externen Umgebungen arbeiten (z. B.
terminal-bench).
Hilfe verwenden
GEPA ist ein leistungsfähiges Framework zur automatischen Optimierung textueller Komponenten von KI-Systemen, wie z. B. Prompts oder Code, indem es das menschliche "Reflect-and-improve"-Lernmodell nachahmt. Im Folgenden finden Sie eine detaillierte Beschreibung der Verwendung von GEPA.
Montage
GEPA kann einfach mit pip, dem Paketmanager von Python, installiert werden.
Installation einer stabilen Version:
Öffnen Sie ein Terminal oder ein Befehlszeilentool und geben Sie den folgenden Befehl ein:
pip install gepa
Die neueste Entwicklungsversion ist installiert:
Wenn Sie die neuesten Funktionen nutzen möchten, können Sie sie direkt aus dem GitHub-Repository installieren:
pip install git+https://github.com/gepa-ai/gepa.git
Grundlegende Konzepte
Eine wirksame Nutzung von GEPA erfordert das Verständnis der beiden Kernkonzepte:
- ReflexionGEPA: Der Kernmechanismus der GEPA. Anstatt zu prüfen, ob eine Aufgabe letztendlich erfolgreich war (d.h. eine einfache Punktzahl), ermöglicht es einem leistungsstarken Sprachmodell (genannt "reflektierendes Modell"), eine Aufzeichnung der gesamten Ausführung der Aufgabe zu lesen. Diese Aufzeichnung enthält alle "denkenden" Schritte der KI, Zwischenergebnisse, aufgetretene Fehler usw. Durch das Lesen dieser detaillierten Aufzeichnung kann das Reflexionsmodell feststellen, ob die Aufgabe erfolgreich war oder nicht (d. h. eine einfache Bewertung). Durch das Lesen dieser detaillierten Aufzeichnungen kann das Reflexionsmodell spezifische, gezielte Verbesserungsvorschläge in natürlicher Sprache machen.
- EntwicklungGEPA basiert auf der Idee eines genetischen Algorithmus. Er beginnt mit einem anfänglichen Stichwort ("seed") und erzeugt durch Überlegung eine Reihe neuer, möglicherweise besserer Versionen des Stichworts ("variations"). Anschließend testet er diese neuen Versionen und behält die am besten funktionierende Gruppe bei ("Auswahl"). Dieser Prozess wiederholt sich immer wieder, wobei jede Generation ihre Vorgänger optimiert und schließlich leistungsstarke Stichwortwörter hervorbringt.
Einfachste Nutzung: über das DSPy-Framework
Für die meisten Nutzer ist die Kombination von GEPA mit demDSPyEine Kombination von Rahmenwerken ist der empfehlenswerteste Ansatz.DSPykann Ihnen helfen, modulare Sprachmodellprogramme zu erstellen, und GEPA fungiert als Optimierer, um die Leistung dieser Programme zu verbessern.
Im Folgenden finden Sie ein einfaches Beispiel für die Optimierung eines mathematischen Lösungswortes:
Schritt 1: Vorbereiten der Umgebung und der Daten
Stellen Sie sicher, dass Sie diegepaim Gesang antwortendspy-aiund richten Sie Ihren OpenAI-API-Schlüssel ein.
import gepa
import dspy
# 设置大语言模型
task_lm = dspy.OpenAI(model='gpt-4.1-mini', max_tokens=1000)
# 设置一个更强大的模型用于反思
reflection_lm = dspy.OpenAI(model='gpt-5', max_tokens=3500)
dspy.settings.configure(lm=task_lm)
# 加载数据集(这里使用内置的AIME数学竞赛题示例)
trainset, valset, _ = gepa.examples.aime.init_dataset()
Schritt 2: Definieren Sie das anfängliche Verfahren (oder Stichwort)
existierenDSPyin dem Sie eine einfacheSignatureum die Eingaben und Ausgaben der Aufgabe zu beschreiben, und verwenden Sie dann eineModuleum sie zu verwirklichen.
class CoT(dspy.Module):
def __init__(self):
super().__init__()
self.prog = dspy.ChainOfThought("problem -> reasoning, answer")
def forward(self, problem):
return self.prog(problem=problem)
Schritt 3: Definition von Bewertungsindikatoren
Sie müssen GEPA mitteilen, woran man erkennt, ob eine Ausgabe gut oder schlecht ist. Hier definieren wir eine einfache Metrik, die überprüft, ob das Modell die richtige Antwort ausgibt.
def aime_metric(gold, pred, trace=None):
# gold是标准答案,pred是模型的预测输出
return gold.answer == pred.answer
Schritt 4: Starten Sie den GEPA-Optimierer
Jetzt können Sie Folgendes konfigurieren und ausführendspy.GEPAOptimierer jetzt.
from dspy.teleprompt import GEPA
# 配置优化器
# dspy_program是你要优化的DSPy程序
# trainset是训练数据
# valset是验证数据
# metric是评估函数
# reflection_lm是用于反思的模型
optimizer = GEPA(dspy_program=CoT(),
trainset=trainset,
valset=valset,
metric=aime_metric,
reflection_lm=reflection_lm)
# 运行优化,设置优化预算(例如,最多调用评估指标150次)
optimized_program = optimizer.compile(max_metric_calls=150)
Nach der Einführung desoptimized_programDie internen Stichwörter sind bereits von GEPA optimiert. Sie werden feststellen, dass die optimierten Stichwörter sehr spezifische und detaillierte Lösungsstrategien und Hinweise enthalten, die GEPA durch die Reflexion historischer Fehler automatisch lernt.
Selbständige Nutzung von GEPA (erweiterte Nutzung)
Wenn Sie nicht mitDSPySie können GEPA aber auch unabhängig davon verwenden, indem Sie Ihre eigene Software implementieren.GEPAAdapter, als Brücke zwischen GEPA und Ihrem System.
GEPAAdapterZwei wichtige Methoden müssen umgesetzt werden:
Evaluate(self, candidate, trainset_sample):- Diese Methode empfängt einen von GEPA generierten Kandidaten-Textbaustein (
candidate) und einen Teil der Trainingsdaten (trainset_sample). - Sie müssen Ihr System mit dieser Kandidatenkomponente ausführen und die Ausführungsbewertung des Systems sowie detaillierte Ausführungsspuren (Traces) zurückgeben. Bei den Spuren kann es sich um beliebige textuelle Informationen handeln, die für die Reflexion nützlich sind.
- Diese Methode empfängt einen von GEPA generierten Kandidaten-Textbaustein (
ExtractTracesforReflection(self, traces, component_name):- Diese Methode empfängt
EvaluateMethode gibt einen Trace zurück und extrahiert daraus die Traces, die mit einer bestimmten Komponente (component_name) Der relevante Teil. - Der extrahierte Text wird zur Analyse an das Reflexionsmodell übergeben.
- Diese Methode empfängt
Dies ist eine konzeptionelle Beispielstruktur:
from gepa.core import GEPAAdapter
class MyCustomAdapter(GEPAAdapter):
def Evaluate(self, candidate, trainset_sample):
# 你的系统逻辑:使用candidate中的提示词处理trainset_sample中的数据
# ...
scores = [...] # 计算得分
traces = [...] # 收集详细的日志或中间步骤
return scores, traces
def ExtractTracesforReflection(self, traces, component_name):
# 从traces中提取和component_name相关的文本信息
# ...
return relevant_textual_traces
# 然后调用gepa.optimize
gepa_result = gepa.optimize(
seed_candidate={"my_prompt": "Initial prompt here..."},
adapter=MyCustomAdapter(),
trainset=my_train_data,
valset=my_val_data,
# ... 其他参数
)
Dieser Ansatz ist zwar komplexer, bietet aber große Flexibilität und ermöglicht es GEPA, jedes textbasierte System zu optimieren.
Anwendungsszenario
- Komplexe logische Aufgabe: Optimierung der Wortwahl
Bei komplexen Aufgaben, die ein mehrstufiges Denken erfordern (z. B. Mathematik, Logik und Strategieplanung), bei denen eine kleine Änderung des Stichworts zu einem großen Unterschied in den Ergebnissen führen kann, ist GEPA in der Lage, die Argumentationskette des Modells zu analysieren, um logische Fehler automatisch zu erkennen und zu korrigieren, und hoch optimierte Anweisungen zu erstellen, die das Modell zu einer effizienteren Lösungsstrategie führen. - Codegenerierung und -optimierung
GEPA generiert nicht nur Code, sondern optimiert ihn auch auf der Grundlage von textuellem Feedback wie Kompilierungsfehlern, Berichten zur Leistungsanalyse oder Kommentaren zur Codeüberprüfung. So kann GEPA z. B. einen generischen Codeschnipsel nehmen und ihn auf der Grundlage von Dokumentation und Fehlermeldungen für eine bestimmte Hardware (z. B. eine GPU) iterativ in eine hoch optimierte Version umwandeln. - Retrieval Augmented Generation (RAG) Systemabstimmung
Das RAG-System besteht aus mehreren Segmenten (Rekonstruktion der Anfrage, Dokumentensuche, Antwortsynthese usw.), von denen jedes von Stichwörtern gesteuert wird. GEPA kann alle diese Stichwörter gleichzeitig optimieren und so die Genauigkeit der Suche und die Qualität der Antworten verbessern, indem es die Ausführungsbahn des gesamten RAG-Systems analysiert. - Feinabstimmung von Verhaltensanweisungen für intelligente Körper (Agenten)
Für Intelligenzen, die mit externen Werkzeugen oder Umgebungen interagieren müssen, kann GEPA ihre Kernanweisungen (d. h. System-Cue-Words) optimieren, indem es die Verhaltensprotokolle der Intelligenzen analysiert (einschließlich API-Aufrufe, von Werkzeugen zurückgegebene Ergebnisse und Rückmeldungen von Umgebungen), so dass sie ihre Aufgaben effizienter und zuverlässiger erledigen können. - Anweisung zum Erlernen von domänenspezifischem Wissen
In speziellen Bereichen (z. B. Medizin, Recht, Finanzen) müssen KI-Systeme bestimmte Richtlinien und Spezifikationen strikt einhalten. GEPA kann diese Richtliniendokumente als Reflexionsgrundlage verwenden, und wenn die Systemausgabe nicht mit den Spezifikationen übereinstimmt, kann GEPA automatisch die entsprechenden Regeln in die Stichwortwörter einbauen, um die Systemausgabe konformer zu machen.
QA
- Wie unterscheidet sich GEPA von herkömmlichen Optimierungsmethoden des Reinforcement Learning (RL)?
Der Hauptunterschied besteht in der Reichhaltigkeit des Lernsignals. Herkömmliche RL-Methoden stützen sich in der Regel auf eine einzige, spärliche Belohnungsbewertung (z. B. 1 Punkt für den Erfolg einer Aufgabe, 0 Punkte für einen Misserfolg), und das Modell benötigt eine große Anzahl von Versuchen, um eine effektive Strategie zu erlernen. GEPA hingegen nutzt reichhaltiges Feedback in natürlicher Sprache und "liest" die detaillierten Protokolle des Ausführungsprozesses durch LLM, um die genauen Ursachen von Fehlschlägen zu verstehen, wodurch präzisere Verbesserungen mit weniger Proben möglich sind. - Erfordert die Verwendung von GEPA ein sehr leistungsfähiges Sprachmodell?
Der Entwurf von GEPA umfasst zwei Modelle: ein "Aufgabenmodell", das optimiert werden soll, und ein "Reflexionsmodell", das analysiert werden soll. Es wird häufig empfohlen, ein möglichst leistungsfähiges Modell als "Reflexionsmodell" zu verwenden (z. B. GPT-4 oder höher), da es ein tiefes Verständnis komplexer Ausführungswege und -kontexte erfordert. Das optimierte "Aufgabenmodell" kann alles sein, was Sie zur Verbesserung der Leistung benötigen, einschließlich kleinerer, wirtschaftlicherer Modelle. - Was bedeutet "Pareto" in der GEPA?
Der Begriff "Pareto" leitet sich vom Konzept der Pareto-Optimalität ab und wird in der Mehrzieloptimierung verwendet. In GEPA bedeutet dies, dass der Optimierungsprozess nicht nur auf die höchste Punktzahl bei einer einzelnen Metrik (z. B. Genauigkeit) abzielt, sondern auch andere Ziele wie die Länge des Hinweises, die Kosten des API-Aufrufs oder die Antwortlatenz berücksichtigen kann, wobei eine "Pareto-Grenze", d. h. eine Reihe von Lösungsvorschlägen, die in Bezug auf die verschiedenen Ziele ausgewogen sind, beibehalten wird. GEPA wird eine "Pareto-Grenze" beibehalten, d. h. eine Reihe von Kandidaten, die ein gutes Gleichgewicht zwischen den verschiedenen Zielen herstellen, anstatt nur eine einzige "beste" Option. - Ist GEPA nur in der Lage, englische Aufforderungswörter zu optimieren?
Nein. Der GEPA zugrunde liegende Mechanismus basiert auf der Fähigkeit von Sprachmodellen, Text zu verstehen und zu generieren, so dass er natürlich mehrere Sprachen unterstützt. Solange Sie Trainingsdaten, Bewertungsmetriken und Reflexionsmodelle bereitstellen, die die entsprechende Sprache (z. B. Chinesisch) unterstützen, kann GEPA zur Optimierung von Textkomponenten für diese Sprache verwendet werden.






























