Введение в фреймворк DSPy
Почему DSPy заменяет написанные вручную запросы декларативными сигнатурами.
«Введение в фреймворк DSPy» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Хрупкость написанных вручную промптов
Промпты, созданные вручную, хрупки. Изменение всего одного слова может резко изменить поведение модели, а то, что работает с GPT-4, часто перестаёт работать с Claude или Gemini.
Специалисты по разработке промптов часами подбирают формулировки, но обнаруживают, что изменения не обобщаются на разные наборы данных или версии моделей. Именно эта хрупкость — ключевая проблема, которую решает DSPy.
Что такое DSPy
DSPy (декларативный самоулучшающийся Python) — это фреймворк Стэнфордского университета, который рассматривает составление промптов как задачу компиляции, а не как ручное мастерство.
Вместо того чтобы писать: "Think step by step and answer the following question...", вы объявляете, что хотите получить (сигнатуру), и позволяете DSPy определить, как сформировать промпт, чтобы добиться нужного результата от модели.
Установка DSPy
DSPy доступен в PyPI. Установите его и настройте подключение к языковой модели, чтобы начать работу.
pip install dspy-ai
# Basic setup in Python
import dspy
# Configure the language model
lm = dspy.LM('openai/gpt-4o-mini', api_key='sk-...')
dspy.configure(lm=lm)
print('DSPy configured successfully')Основная идея: отделение логики от составления промптов
При традиционном составлении промптов логика программы и текст промпта тесно переплетены. Если вы хотите изменить способ рассуждений модели, вам приходится переписывать строку промпта.
DSPy разделяет эти задачи: вы пишете логику Python с помощью модулей, а DSPy автоматически создаёт и оптимизирует фактический текст промпта на этапе компиляции.
Сигнатуры: объявление намерения
signature в DSPy — это типизированное объявление входных и выходных данных. Это описание того, что нужно сделать, а не того, как это сделать.
DSPy использует signature, чтобы во время компиляции создать подходящий промпт — вам не требуется вручную разрабатывать промпты.
import dspy
# Declare: given a question, produce an answer
class SimpleQA(dspy.Signature):
"""Answer questions with short factual responses."""
question: str = dspy.InputField()
answer: str = dspy.OutputField(desc='A concise factual answer')
# DSPy turns this declaration into a real prompt automatically
print(SimpleQA.__doc__)Модули: составные блоки рассуждений
DSPy предоставляет модули, реализующие распространённые схемы рассуждений. Вы используете их подобно слоям PyTorch и объединяете в более крупные программы.
dspy.Predict— прямое предсказаниеdspy.ChainOfThought— добавляет шаги рассужденияdspy.ReAct— рассуждения и использование инструментов
import dspy
class SimpleQA(dspy.Signature):
"""Answer questions with short factual responses."""
question: str = dspy.InputField()
answer: str = dspy.OutputField()
# Three different module strategies for the same signature
predict_module = dspy.Predict(SimpleQA)
cot_module = dspy.ChainOfThought(SimpleQA)
# Call just like a function
result = predict_module(question='What is the capital of France?')
print(result.answer)Что делает компиляция
Компиляция — это процесс, в ходе которого DSPy оптимизирует промпты вашей программы с помощью обучающей выборки и функции метрики.
До компиляции DSPy использует простой промпт по умолчанию. После компиляции DSPy находит примеры с малым числом образцов, более удачные инструкции или демонстрации пошагового рассуждения, которые максимизируют значение метрики. Оптимизированные промпты сохраняются и повторно используются во время вывода.
Минимальная программа на DSPy
Ниже приведена полностью готовая минимальная программа DSPy: сигнатура, модуль и вызов. Строка промпта нигде не записывается.
import dspy
# 1. Configure LM
lm = dspy.LM('openai/gpt-4o-mini', api_key='sk-...')
dspy.configure(lm=lm)
# 2. Define signature
class Summarize(dspy.Signature):
"""Summarize text into one sentence."""
text: str = dspy.InputField()
summary: str = dspy.OutputField()
# 3. Create module
summarizer = dspy.Predict(Summarize)
# 4. Use it
result = summarizer(text='DSPy is a framework for programming language models.')
print(result.summary)DSPy и традиционная разработка промптов
Ключевое философское различие:
- Традиционный подход: вы пишете текст промпта → модель выполняет его → вы вручную изменяете текст
- DSPy: вы пишете логику Python → оптимизатор находит лучший текст промпта → модель выполняет оптимизированный промпт
DSPy рассматривает промпты как детали реализации, которыми должен заниматься компилятор, подобно тому как компилятор преобразует Python в байт-код.
Когда стоит использовать DSPy
DSPy особенно полезен, если у вас есть:
- Чёткая метрика для оптимизации (точность, F1, оценка пользователей)
- Обучающая выборка с примерами (часто достаточно даже 20–50 примеров)
- Конвейер с несколькими шагами рассуждения, которые взаимодействуют друг с другом
Для разовых простых промптов дополнительные затраты DSPy не оправданы. Для рабочих конвейеров LLM с измеримыми целями DSPy кардинально меняет подход.
Обзор экосистемы DSPy
DSPy — это не просто оболочка API, а полноценная экосистема:
- Сигнатуры: объявление ввода-вывода
- Модули: стратегии рассуждения
- Оптимизаторы: BootstrapFewShot, MIPRO, COPRO
- Evaluate: встроенный набор средств оценки
- Утверждения: декларативное ограничение выходных данных
В следующих уроках этого курса вы изучите каждый из этих элементов.
Проверка знаний: основная концепция DSPy
В чём главное отличие DSPy от ручного написания промптов?
Повторение: основы фреймворка DSPy
DSPy решает проблему хрупкости написанных вручную промптов, рассматривая составление промптов как задачу компиляции. Вы создаёте сигнатуры (типизированные объявления ввода-вывода) и объединяете их с модулями, такими как Predict и ChainOfThought. Затем оптимизатор автоматически находит лучший текст промпта, используя ваши обучающие данные и метрику. В результате получается переносимый конвейер промптов, пригодный для тестирования и автоматического улучшения — без ручной разработки промптов.
Часто задаваемые вопросы
Урок «Введение в фреймворк DSPy» бесплатный?
Да — полный текст урока «Введение в фреймворк DSPy» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Введение в фреймворк DSPy»?
Почему DSPy заменяет написанные вручную запросы декларативными сигнатурами. Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Введение в фреймворк DSPy»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в фреймворк DSPy
- Определение сигнатур и модулей
- Компиляция и оптимизация запросов
- Оценка конвейеров DSPy