Англійський словник для програмістів DSPy
Вивчає англійську лексику, якою користуються розробники DSPy — підписи, модулі, телепрограми, compile() тощо. Необхідно для інженерів штучного інтелекту, які працюють з конвеєрами LLM.
DSPy — це фреймворк, який замінює написані від руки підказки програмними модулями, які можна автоматично скомпілювати і оптимізувати. Якщо ви працюєте з конвеєрами LLM і співпрацюєте з англомовними командами, знання специфічного словника DSPy допоможе вам читати документацію, робити внесок у обговорення і писати чіткі коментарі до коду.
Ключовий словник
Подпись Підпис визначає поля вводу і виводу модуля DSPy — по суті, це інтерфейс виклику моделі мови. Розробники «визначають», «оголошують» або «записують» підписи. Підпис виглядає як введене визначення функції і повідомляє платформі, що має робити модуль.
- Приклад: « Я визначив підпис
question -> answerдля основного модуля QA, щоб оптимізатор знав, що покращити ». *
Модуль
Модуль — це складний блок у програмі DSPy. Модулі обгортають виклики LLM і можуть бути з’ єднані ланцюгом. Вони поводяться подібно до PyTorch nn.Module об’єктів. Розробники «інстантують», «викликають» і «компонують» модулі.
- Приклад: « Конвейєр з розширеним пошуком об’ єднує три модулі: пошуковий, підсумковий і модуль остаточної відповіді. » *
Пророк
Предсказувач є модулем низького рівня, який робить один виклик LLM на основі підпису. Модулі вищого рівня, такі як ChainOfThought, обгортають передбачувальник внутрішньо. Розробники «налаштовують» або «використовують» прогнози.
- Приклад: « Під капотом,
dspy.Predictє базовим прогнозом, який відображає ваші поля підпису у запиті і аналізує вивід. » *
** Телепромектор (оптимізатор) ** Телепромптер — тепер більш поширена назва оптимізатор — це алгоритм, який автоматично покращує програму DSPy, знаходячи кращі підказки або приклади з кількома вистрілами. Ви “запускаєте”, “застосовуєте” або “користуєтеся” телепромектором для оптимізації вашої програми. Термін поступово переходить до «оптимізатор» в новітній документації.
- Приклад: « Ми запустили телепромектор BootstrapFewShot протягом ночі, і точність нашого набору перевірки покращилася на 12 відсотків. » *
** compile () **
Метод compile() використовує вашу програму DSPy і оптимізатор (телепромектор) і створює оптимізовану версію. Це центральна дія у потоці робіт DSPy. Розробники кажуть, що вони «компілюють програму» або «запускають компіляцію»
- Приклад: « Після компіляції програми з MIPROv2, оптимізовані підказки зберігаються у стані скомпільованого модуля. » *
ЛанцюгМислів
ChainOfThought є вбудованим модулем DSPy, який вказує моделі роздумувати крок за кроком перед тим, як дати відповідь. Він розширює базовий прогноз з полем розуміння. Розробники «використовують» або «обгортають» підпис у ChainOfThought.
Приклад: “Я замінив простий виклик Predict на ChainOfThought і відповіді моделі на багатокрокові задачі стали набагато більш надійними.”
Невеликі приклади Небагато прикладів є прикладами пар вхід-вихід, які оптимізатор вводить в підказки, щоб керувати моделлю. Розробники «запускають», «надають» або «збирають» декілька прикладів. Оптимізатор обирає, які приклади слід включити.
- Приклад: « Телепромектор завантажив 16 прикладів з невеликою кількістю кадрів з тренувального набору і вибрав 4 найкорисніших ». *
** Оцінка набору даних** Програми DSPy оцінюють за допомогою мітки набору даних за допомогою метричної функції. Розробники «визначають метрику», «оцінюють програму» і «звітують про результати» на набори Dev або Test.
- Приклад: “Ми визначили метрику точного збігу і оцінювали скомпільовану програму на 500 виключених прикладах, щоб перевірити поліпшення.” *
Фрази і фразеологізми
** “оптимізація програми підказок” ** Стандартний спосіб опису запуску оптимізатора на конвеєрі DSPy. Об’ єктом завжди є « програма », а не лише « запит ».
- Приклад: « Ми плануємо оптимізувати програму підказок за допомогою COPRO, як тільки у нас буде більший набір тренувань з мітками. » *
** “визначити підпис DSPy” ** Використовується під час оголошення інтерфейсу модуля. Завжди « визначити » — не « створити » або « записати » у формальних обговореннях DSPy.
- Приклад: « Перед реалізацією модуля визначте підпис DSPy, який захоплює точно ті вхідні і вихідні дані, які ви очікуєте ». *
** “збирання з оптимізатором” ** Стандартна фраза для кроку компіляції. « With » вводить назву оптимізатора.
- Приклад: « Збірка з оптимізатором BootstrapFewShotWithRandomSearch, якщо ви бажаєте дослідження простору прикладу. » *
** “приклади завантаження з тренувального набору” ** Позначає процес автоматичного створення прикладів з мітками з ваших даних, які можна використовувати як демонстрації з декількома знімками.
- Приклад: « Телепромектор завантажуватиме приклади з тренувального набору, тому переконайтеся, що ваші тренувальні мітки правильно вказані. » *
“слід програми” Трассування записує всі виклики LLM, зроблені під час передачі вперед. Розробники «перевіряють», «записують» і «відтворюють» сліди для зневадження.
- Приклад: « Перевірити слід програми, щоб побачити, який саме запит було надіслано до моделі на кожному кроці. » *
Практичні рекомендації
- «Я визначив три-поле підпису — контекст, питання і відповідь — і загорнув його в ChainOfThought.»
- «Компіляція тривала близько 20 хвилин, тому що оптимізатор запустив 50 випробувань на тренувальному наборі»
- «Телепромектор автоматично завантажував приклади з мітками, тому нам не потрібно було писати їх вручну»
- «Після оптимізації програми prompt, ми побачили значний поліпшення в наборі оцінки hold-out.»
- «Упевніться, що метрична функція повертає число з плаваючою комою між 0 і 1, щоб оптимізатор міг правильно ранжувати програми-кандидати»
Необхідно уникати помилок
** Називати його «компілятором» замість «оптимізатором» **
Функція compile() запускає оптимізатор, а не традиційний компілятор коду. Фреймворк використовує « compile » як дієслово (як у PyTorch), але компонент, який виконує роботу, це оптимізатор (або телепромектор). Просто скажіть « оптимізатор покращив підказки », а не « компілятор покращив підказки »
Плутаєте “підпис” з “запитом” Підпис — це введене у тексті оголошення інтерфейсу; текст підказки створюється за допомогою DSPy з підпису. Сказати «Я написав запит з DSPy» неточно — скажіть «Я визначив підпис і DSPy генерує запит»
** Використання “train” замість “compile” ** DSPy не налаштовує типово ваги моделей — він оптимізує підказки і приклади з декількома вимірами. Використовуйте « компілювати » або « оптимізувати », а не « тренувати модель »
Summary
DSPy вводить програмно-орієнтований словник — підписи, модулі, прогнози, оптимізатори і компіляція — який навмисно відображає концепції інженерії програмного забезпечення, а не традиційний інженерний жаргон. Завдяки цьому словниковому запасу ви зможете вільно читати документацію і дослідницькі статті DSPy, робити внесок у обговорення спільноти і чітко спілкуватися з колегами, які створюють LLM- конвеєри. Найкращим способом є читання каталогу прикладів репозитору DSPy GitHub, де реальні коментарі коду показують, як рідні англомовні дослідники описують ці концепції в контексті.
Навігація та зв’язок
Будьмо чесними – ефективне спілкування в професійному середовищі, особливо коли справа доходить до складних технічних тем, таких як DSPy і великі мовні моделі, може бути складним навіть для рідних носіїв англійської мови. Для розробників, які вивчають нюанси професійної англійської, це часто не тільки про те, щоб знати визначення слів; це про розуміння того, як ці слова використовуються в конкретних контекстах - особливо в рамках спільного потоку розробки. Погано сформулований коментар під час перегляду коду або неясний опис PR може призвести до непорозумінь, марного часу і розчарування для всіх зацікавлених.
Однією з спільних областей, де нерідні носії часто борються, є конструктивне оформлення зворотнього зв’язку. Замість того, щоб сказати щось на зразок «Це не працює», що звучить тупо і можливо обвинувачуючим, більш ефективним підходом є пояснення * чому * це не працює і запропонувати рішення. Наприклад, замість того, щоб залишити коментар на PR під назвою « Вада », ви можете написати: « Я помітив, що цей модуль не обробляє крайові випадки, коли вхідний сигнал перевищує 10 кГц. Чи можемо ми додати перевірку для цієї умови за допомогою if (signal_magnitude > 10000) і повернути повідомлення про помилку? Це покращить надійність». Аналогічно, при описі змін у PR, зосередьтеся на * тому, що * ви зробили і * чому *, а не лише на * як *. « Впроваджено новий модуль FFT, оптимізований для обробки звуку в реальному часі за допомогою алгоритму Cooley- Tukey для зменшення затримки », це набагато краще, ніж просто « Виправлено FFT. »
Іншим поширеним викликом є адаптація вашої мови під час обговорення архітектурних рішень або складних системних компонентів. Використання точної термінології - як «телепромптер» (в DSPy, що відноситься до модуля, який забезпечує структурований вхідний потік для обробки) - демонструє розуміння і професіоналізм. Важливо також бути уважним до рівнів абстракції. Не скочуйте прямо у надзвичайно технічні деталі; замість цього, починайте з пояснення високого рівня і поступово вводьте більше специфічних відомостей, якщо це потрібно. Пам’ятайте, ясність - це найважливіше. Складна система, описана жаргоном, ймовірно, збентежить ваших колег, незалежно від їхнього рівня володіння англійською мовою.
І, нарешті, не вагайтеся попросити про пояснення, якщо щось не ясно. Краще визнати, що тобі потрібна допомога, ніж робити припущення, які можуть призвести до помилок. Просте «Чи можете ви розібратися з метою цього модуля?» або «Я не зовсім впевнений, як це інтегрується з загальним трубопроводом - чи можемо ми коротко обговорити це?» демонструє ініціативу і бажання навчатися.
# Example DSPy CLI command to compile a module:
dspy compile -m audio_processing_module.dsp