مفاهیم
بهینهسازی چگونه کار میکند
قرارداد اجرا و امتیاز، انواع آرتیفکت و موتورهای هر نوع.
Skynet همان Optimize Anything است: یک محصول که هر آرتیفکتی را بر اساس دادهها و معیار شما بهتر میکند. همهٔ اجراها از یک قرارداد اجرا و یک قرارداد معیار استفاده میکنند. نوع آرتیفکت تعیین میکند کدام موتورها میتوانند روی آن کار کنند.
قرارداد مشترک
هر اجرا دو فایل دارد. run.py آرتیفکت را روی یک مورد اجرا میکند. 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یک dict است که فیلدهای ورودی یک مورد را نگه میدارد.expectedمقدار مورد انتظار آن مورد است، یاNoneوقتی مورد مقدار مورد انتظار ندارد.scoreیک جفت برمیگرداند: یک عدد، و یک dict با یک رشتهٔ"feedback".
ماژول کمکی skynet توابع llm، Image و log را در اختیار میگذارد. فراخوانی llm از کد اجرا به مدل وظیفه میرود. فراخوانی llm از معیار به مدل معیار میرود.
برای قرارداد کامل معیار، معیارها و امتیازدهندهها را بخوانید.
انواع آرتیفکت و موتورها
| نوع آرتیفکت | موتورها |
|---|---|
| پرامپت | Auto، GEPA، Best-of-N، AutoResearch، Meta-Harness، AutoSaddler، ShinkaEvolve |
| کد | مانند پرامپت |
| متن | مانند پرامپت |
| برنامهٔ DSPy | Auto، DSPy GEPA، DSPy MIPROv2، DSPy BootstrapFewShot |
موتورها در دو خانواده قرار میگیرند:
- موتورهای بومی با آرتیفکت مثل یک جعبهٔ سیاه رفتار میکنند. روی آرتیفکتهای پرامپت، کد و متن کار میکنند.
- بهینهسازهای DSPy درون یک برنامهٔ DSPy کار میکنند. فقط روی آرتیفکتهای برنامهٔ DSPy کار میکنند.
DSPy MIPROv2 و DSPy BootstrapFewShot به جفتها (موردهایی با خروجی مورد انتظار) نیاز دارند. با یک ورودی تکی، یک برنامهٔ DSPy فقط میتواند از Auto و DSPy GEPA استفاده کند.
آرتیفکتهای پرامپت، کد و متن
موتورهای بومی با آرتیفکت مثل یک جعبهٔ سیاه رفتار میکنند. یک موتور نسخهٔ جدیدی پیشنهاد میدهد، run(artifact, input) را روی موردها اجرا میکند و امتیاز و بازخورد را میخواند.
شش موتور بومی از روشهای جستجوی متفاوتی استفاده میکنند:
- GEPA نسخهها را با بازاندیشی تکامل میدهد و یک جبههٔ پارتو نگه میدارد.
- Best-of-N از مدل بازاندیشی پیشنهادهای مستقل میخواهد و بهترین را نگه میدارد.
- AutoResearch، Meta-Harness، AutoSaddler و ShinkaEvolve برای پیشنهاد نسخهها از یک عامل برنامهنویس استفاده میکنند.
برای هر موتور و تنظیمات آن، موتورها را بخوانید.
آرتیفکتهای برنامهٔ DSPy
برنامهٔ DSPy یکی از انواع آرتیفکت است. run.py شما یک dspy.Module را در سطح ماژول میسازد و آن را درون run فراخوانی میکند. اگر فایل بیش از یک ماژول دارد، ماژولی را که باید بهینه شود program بنامید.
وقتی یک بهینهساز DSPy اجرا میشود چه اتفاقی میافتد:
- Skynet ماژول شما را پیدا میکند و تابع
runشما را دور آن میپیچد. هر مورد ازrunخود شما عبور میکند. - بهینهساز DSPy برنامه را روی موردهای آموزش کامپایل میکند.
- انتخاب را روی موردهای اعتبارسنجی انجام میدهد.
- برنده متن دستورالعمل هر پیشبینیکننده است، بههمراه وضعیت کامل کامپایلشدهٔ ماژول. این وضعیت شامل نمونههای few-shot است.
امتیازهای نهایی همان برنامهای را میسنجند که Skynet ذخیره میکند.
| بهینهساز | متن بازخورد را میخواند |
|---|---|
| DSPy GEPA | بله |
| DSPy MIPROv2 | نه، فقط امتیاز |
| DSPy BootstrapFewShot | نه، فقط امتیاز |
DSPy BootstrapFewShot از مدل بازاندیشی استفاده نمیکند.
Auto
Auto انتخاب پیشفرض در ویزارد است.
- روی یک آرتیفکت پرامپت، کد یا متن، Auto با پنج موتور بومی جستجو میکند، سپس با GEPA از بهترین نسخه ادامه میدهد.
- روی یک برنامهٔ DSPy، Auto موتور DSPy GEPA را اجرا میکند.
هر دو شکل Auto متن بازخورد معیار شما را میخوانند.
کدام موتور را انتخاب کنیم
| وضعیت شما | استفاده کنید |
|---|---|
| پرامپتی دارید که یک مدل اجرا میکند | یک آرتیفکت پرامپت. با Auto شروع کنید. |
| کدی دارید که میخواهید سریعتر، ارزانتر یا درستتر شود | یک آرتیفکت کد. با Auto شروع کنید. |
| یک سند یا یک پیکربندی دارید | یک آرتیفکت متن. با Auto شروع کنید. |
| یک برنامهٔ DSPy دارید | یک آرتیفکت برنامهٔ DSPy. با Auto شروع کنید. |
| میخواهید نمونههای few-shot از دادههای شما انتخاب شوند | یک آرتیفکت برنامهٔ DSPy با DSPy BootstrapFewShot یا DSPy MIPROv2 |