コンセプト
最適化の仕組み
実行とスコアのコントラクト、アーティファクトの種類、種類ごとのエンジン。
Skynet は Optimize Anything です。あらゆるアーティファクトを、あなたのデータとメトリクスに対して改善する 1 つのプロダクトです。すべての実行は、同じ実行のコントラクトと同じメトリクスのコントラクトを使います。アーティファクトの種類によって、使えるエンジンが決まります。
共通のコントラクト
すべての実行には 2 つのファイルがあります。run.py は 1 つのケースでアーティファクトを実行します。metric.py は出力を採点します。
from skynet import llm
def run(artifact, input):
return llm(artifact, input=input)def score(input, output, expected=None):
ok = output == expected
return (1.0 if ok else 0.0), {"feedback": "Match." if ok else "No match."}artifactは、オプティマイザーが提案した現在のバージョンです。inputは、1 つのケースの入力フィールドを保持する dict です。expectedはケースの期待値です。期待値がないケースではNoneです。scoreはペアを返します。数値と、"feedback"文字列を含む dict です。
skynet ヘルパーモジュールは llm、Image、log を提供します。実行コードからの llm の呼び出しはタスクモデルに送られます。メトリクスからの llm の呼び出しはメトリクスモデルに送られます。
メトリクスのコントラクトの全体については、メトリクスとスコアラー をお読みください。
アーティファクトの種類とエンジン
| アーティファクトの種類 | エンジン |
|---|---|
| プロンプト | Auto, GEPA, Best-of-N, AutoResearch, Meta-Harness, AutoSaddler, ShinkaEvolve |
| コード | プロンプトと同じ |
| テキスト | プロンプトと同じ |
| DSPy プログラム | Auto, DSPy GEPA, DSPy MIPROv2, DSPy BootstrapFewShot |
エンジンには 2 つの系統があります。
- ネイティブエンジン は、アーティファクトをブラックボックスとして扱います。プロンプト、コード、テキストのアーティファクトで動作します。
- DSPy オプティマイザー は、DSPy プログラムの内部で動作します。DSPy プログラムのアーティファクトでのみ動作します。
DSPy MIPROv2 と DSPy BootstrapFewShot にはペア(期待される出力を持つケース)が必要です。単一入力の場合、DSPy プログラムで使えるのは Auto と DSPy GEPA だけです。
プロンプト、コード、テキストのアーティファクト
ネイティブエンジンは、アーティファクトをブラックボックスとして扱います。エンジンは新しいバージョンを提案し、ケースに対して run(artifact, input) を実行し、スコアとフィードバックを読み取ります。
6 つのネイティブエンジンは、それぞれ異なる探索方法を使います。
- GEPA は、リフレクションによってバージョンを進化させ、パレートフロントを維持します。
- Best-of-N は、リフレクションモデルに独立した提案を求め、最も良いものを残します。
- AutoResearch、Meta-Harness、AutoSaddler、ShinkaEvolve は、コーディングエージェントを使ってバージョンを提案します。
各エンジンとその設定については、エンジン をお読みください。
DSPy プログラムのアーティファクト
DSPy プログラムは、アーティファクトの種類の 1 つです。run.py はモジュールレベルで dspy.Module を構築し、run の中でそれを呼び出します。ファイルに複数のモジュールがある場合は、最適化するモジュールに program という名前を付けてください。
DSPy オプティマイザーが実行されると、次のことが起こります。
- Skynet はモジュールを見つけ、その周りを
run関数で包みます。すべてのケースは、あなた自身のrunを通ります。 - DSPy オプティマイザーは、学習ケースでプログラムをコンパイルします。
- 検証ケースで選択を行います。
- 勝者は、各 predictor の指示文と、モジュールのコンパイル済みの状態全体です。この状態には few-shot デモが含まれます。
最終スコアは、Skynet が保存するのと同じプログラムを測定します。
| オプティマイザー | フィードバックの文章を読むか |
|---|---|
| DSPy GEPA | はい |
| DSPy MIPROv2 | いいえ、スコアのみ |
| DSPy BootstrapFewShot | いいえ、スコアのみ |
DSPy BootstrapFewShot はリフレクションモデルを使いません。
Auto
Auto は、ウィザードの既定の選択です。
- プロンプト、コード、テキストのアーティファクトでは、Auto は 5 つのネイティブエンジンで探索し、その後、最良のバージョンから GEPA で続行します。
- DSPy プログラムでは、Auto は DSPy GEPA を実行します。
どちらの形の Auto も、メトリクスからのフィードバックの文章を読みます。
どのエンジンを選ぶか
| 状況 | 使うもの |
|---|---|
| モデルが実行するプロンプトがある | プロンプトのアーティファクト。Auto から始めます。 |
| より速く、より安く、またはより正確にしたいコードがある | コードのアーティファクト。Auto から始めます。 |
| ドキュメントや設定ファイルがある | テキストのアーティファクト。Auto から始めます。 |
| DSPy プログラムがある | DSPy プログラムのアーティファクト。Auto から始めます。 |
| データから few-shot デモを選びたい | DSPy BootstrapFewShot または DSPy MIPROv2 を使う DSPy プログラムのアーティファクト |