GEPA(Genetic-Pareto)は、AIシステムにおける様々なタイプのテキスト・コンポーネントを最適化するためのフレームワークである。これらのテキスト・コンポーネントは、AIモデルのプロンプト、コード・スニペット、あるいは設定ファイルである。これは、大規模言語モデル(LLM)を通じてAIシステムの動作を分析し、反映させるために、リフレクティブ・テキスト・エボリューション(Reflective Text Evolution)と呼ばれるアプローチを使用している。具体的には、GEPAはシステム運用中に生成される実行記録と評価記録を調査し、この情報を使用して改善を目標とする。このフレームワークは、反復突然変異、リフレクション、パレート最適選択などの戦略を組み合わせて、限られた評価回数でより性能の高いバージョンのシステムを進化させる。GEPAは個々のコンポーネントを最適化するだけでなく、モジュール化されたシステムで複数のコンポーネントを協調的に進化させ、特定のドメインで大幅な性能向上をもたらす。その研究論文「GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning」によると、GEPAは従来の強化学習手法よりも、大幅に少ないサンプル数で性能を向上させ、より高い効率を実証している。
機能一覧
- リフレクティブ・テキストの進化: システムの実行軌跡(推論プロセス、ツールの呼び出し、出力など)を大規模言語モデル(LLM)を用いて分析し、自然言語形式で問題を診断し、改善策を提案する。
- 多目的最適化パレート最適選択メカニズムを使用することで、複数の目的(例えば、正確さを維持しながら手がかりとなる単語の長さを短くする)を同時に最適化し、多様な優良候補を保持することができる。
- 高いサンプル効率GEPAは、数千回の試行を必要とする従来の強化学習手法と比較して、非常に少ないサンプル(「ロールアウト」)で大幅な性能向上を達成することができ、必要なサンプル数を最大35分の1に減らすことができる。
- 幅広い適用範囲AIのキューワードだけでなく、コード、命令、そして以下のような完全なAIプログラムも最適化する。
DSPyプログラムにおける署名、モジュール、制御フロー。 - 柔軟なアダプター・インターフェースを実現することである。
GEPAAdapterインターフェースにより、ユーザーはGEPAをテキスト・コンポーネントを含むあらゆるシステムに統合することができる。システム統合の中心にあるのはEvaluate(アセスメント)とExtract Traces for Reflection(反省的軌跡の抽出)2つの方法。 - DSPyフレームワークとの統合GEPAが直接統合された。
DSPyフレームワークではdspy.GEPAAPIは呼び出しやすく、GEPAを使用する最も簡単で強力な方法である。 - 複雑なシステムの最適化をサポートGEPAは、RAG(Retrieval Augmented Generation:検索拡張世代)システム、多ラウンドの会話型知能、外部環境で動作する知能(例:「GEPA」)などの複雑なAIシステムを最適化することができる。
terminal-bench).
ヘルプの使用
GEPAは、人間の "reflect-and-improve "学習モデルを模倣することによって、プロンプトやコードのようなAIシステムのテキストコンポーネントを自動的に最適化するように設計された強力なフレームワークである。以下は、GEPAの使用方法の詳細な説明である。
取り付け
GEPAはPythonのパッケージ・マネージャーであるpipで簡単にインストールできる。
安定版のインストール:
ターミナルかコマンドラインツールを開き、以下のコマンドを入力する:
pip install gepa
最新の開発バージョンがインストールされている:
最新の機能を体験したい場合は、GitHubリポジトリから直接インストールできる:
pip install git+https://github.com/gepa-ai/gepa.git
コア・コンセプト
GEPAを効果的に使用するには、その2つの中核概念を理解する必要がある:
- リフレクションGEPAの中核となるメカニズム。タスクが最終的に成功したかどうか(つまり単純なスコア)を見る代わりに、強力な言語モデル(「リフレクティブ・モデル」と呼ばれる)がタスクの実行全体のトレースを読み取ることを可能にする。この記録には、AIの「思考」ステップ、中間出力、遭遇したエラーなどがすべて含まれている。この詳細な記録を読み取ることで、リフレクティブ・モデルはタスクが成功したかどうか(つまり単純スコア)を判断できる。これらの詳細な記録を読むことで、リフレクティブ・モデルは、自然言語で具体的で的を絞った改善提案を行うことができる。
- 進化GEPA は遺伝的アルゴリズムの考え方を取り入れている。最初の手がかりとなる単語(「シード」)から始まり、反射によって新しい、より良い可能性のある手がかりとなる単語のバージョンをいくつか生成する(「バリエーション」)。その後、これらの新しいバージョンをテストし、最もパフォーマンスの良いバッチを保持する(「選択」)。このプロセスが何度も繰り返され、各世代が前の世代を最適化することで、最終的に高性能のキュー・ワードが進化する。
最も簡単な使用方法:DSPyフレームワークを使う
ほとんどのユーザーにとって、GEPAをDSPyフレームワークの組み合わせが最も推奨されるアプローチである。DSPyGEPAはこれらのプログラムのパフォーマンスを向上させるオプティマイザーとして機能する。
以下は、数学の解法の手がかりとなる単語を最適化する簡単な例です:
ステップ1:環境とデータの準備
がインストールされていることを確認してください。gepa歌で応えるdspy-aiそしてOpenAIのAPIキーを設定します。
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()
ステップ2:最初の手順(またはキューワード)を定義する
あるDSPyを定義することができます。Signatureタスクの入力と出力を記述するためにModuleそれを実現するために
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)
ステップ3:評価指標の定義
出力が良いか悪いかを判断する方法を GEPA に伝える必要があります。ここでは、モデルが正しい答えを出力するかどうかをチェックする簡単な尺度を定義します。
def aime_metric(gold, pred, trace=None):
# gold是标准答案,pred是模型的预测输出
return gold.answer == pred.answer
ステップ4:GEPAオプティマイザーの実行
これでdspy.GEPA今すぐオプティマイザーを
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)
を導入した。optimized_program内部のキュー・ワードはすでにGEPAによって最適化されている。最適化されたキュー・ワードには、GEPAが過去のミスを振り返ることによって自動的に学習する、非常に具体的で詳細な解決策や注意事項が含まれていることがわかります。
GEPAの単独使用(高度な使用法)
を使用していない場合DSPyフレームワークを使うこともできるし、GEPAを単独で使うこともできる。GEPAAdapterGEPAとあなたのシステムの橋渡し役として。
GEPAAdapterつの重要な方法を実施する必要がある:
Evaluate(self, candidate, trainset_sample):- このメソッドは、GEPAによって生成されたテキスト・コンポーネントの候補(
candidate)とトレーニングデータの一部(trainset_sample). - この候補コンポーネントでシステムを実行し、システムの実行スコアと詳細な実行トレース(トレース)を返す必要がある。トレースは、リフレクションに有用なテキスト情報であれば何でも構いません。
- このメソッドは、GEPAによって生成されたテキスト・コンポーネントの候補(
ExtractTracesforReflection(self, traces, component_name):- このメソッドは
Evaluateメソッドはトレースを返し、そこから特定のコンポーネント (component_name) 該当部分。 - 抽出されたテキストは、分析のためにリフレクティブ・モデルに渡される。
- このメソッドは
これは概念的な構造例である:
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,
# ... 其他参数
)
このアプローチは、より複雑ではあるが、大きな柔軟性を提供し、GEPAをあらゆるテキストベースのシステムの最適化に使用することを可能にする。
アプリケーションシナリオ
- 複雑な推論タスクのプロンプト・ワードの最適化
多段階の推論を必要とする複雑なタスク(数学、論理学、戦略立案など)では、手がかりとなる単語を少し変えるだけで、結果が大きく変わることがあるが、GEPAはモデルの推論の連鎖を分析し、論理的な欠陥を自動的に特定して修正し、モデルをより効率的な解決戦略に導く高度に最適化された命令を生成することができる。 - コード生成と最適化
GEPAはコードを生成するだけでなく、コンパイルエラーや性能分析レポート、コードレビューのコメントなどのテキストフィードバックに基づいて最適化する。例えば、一般的なコード・スニペットを取り込み、特定のハードウェア(GPUなど)用のドキュメントやエラーメッセージに基づいて、高度に最適化されたバージョンに反復的に修正することができる。 - 検索拡張世代(RAG)システムのチューニング
GEPAは、RAGシステム全体の実行軌跡を分析することによって、検索の精度と回答の質を向上させ、これらすべてのキューワードを同時に最適化することができる。 - 知的身体(エージェント)の行動指示の微調整
外部のツールや環境と相互作用する必要のある知能については、GEPAは知能の行動ログ(API呼び出し、ツールから返される結果、環境からのフィードバックを含む)を分析することによって、そのコア命令(すなわちシステムのキューワード)を最適化することができ、より効率的かつ確実にタスクを完了できるようにする。 - ドメイン固有知識の指導学習
特殊な領域(医療、法律、金融など)では、AIシステムは特定のガイドラインや仕様に厳密に従う必要がある。GEPAは、これらのガイドライン文書を考察の基礎として使用することができ、システムの出力が仕様に準拠していない場合、GEPAは、システムの出力をより準拠したものにするために、関連するルールを自動的にキューワードに組み込むことができる。
品質保証
- GEPAは従来の強化学習(RL)最適化手法とどう違うのか?
主な違いは学習信号の豊富さである。従来のRL手法は、一般的に単一の疎な報酬スコア(例えば、タスク成功で1点、失敗で0点)に依存しており、モデルは効果的な戦略を学習するために多数の試行を必要とする。一方GEPAは、豊富な自然言語フィードバックを利用し、LLMを通じて詳細な実行プロセスログを「読み取り」、失敗の正確な原因を理解することで、より少ないサンプル数でより正確な改善を可能にする。 - GEPAを使うには、非常に強力な言語モデルが必要ですか?
GEPA の設計には、最適化される「タスクモデル」と分析される「反映モデル」の 2 つのモデルが含まれる。複雑な実行軌跡とコンテクストを深く理解する必要があるため、「反映モデル」(GPT-4以上など)として可能な限り高性能なモデルを使用することが推奨されることが多い。最適化された「タスクモデル」は、より小さく経済的なモデルを含め、パフォーマンスを向上させるために必要なものであれば何でもかまいません。 - GEPAにおける「パレート」とは何を意味するのか?
「パレート」はパレート最適性の概念に由来し、多目的最適化で使用される。GEPAでは、これは最適化プロセスが単一の測定基準(例えば、正確さ)で最高のスコアを目指すだけでなく、「パレート・フロンティア」、すなわち異なる目的に関してバランスのとれた候補解の集合を保持しながら、キューの長さ、API呼び出しコスト、または応答待ち時間などの他の目的も考慮できることを意味する。GEPAは、「パレート・フロンティア」、すなわち、単一の「最良」の選択肢ではなく、異なる目的間で良好なバランスをとる候補の集合を保持する。 - GEPAは英語のプロンプトワードしか最適化できないのか?
いいえ。GEPAの基礎となるメカニズムは、テキストを理解し生成する言語モデルの能力に基づいているため、自然に複数の言語をサポートします。適切な言語(例えば中国語)をサポートするトレーニングデータ、評価指標、リフレクションモデルを提供する限り、GEPAはその言語のテキストコンポーネントを最適化するために使用することができる。






























