Гайд · TNWS AI

Как подключить языковую модель к DSPy и проверить первый вызов

4 мин—

Подключаем DSPy к доступной модели через переменные окружения и отделяем ошибку соединения от ошибки сигнатуры.

Задача и применимость

Актуальный поисковый вопрос: «как настроить dspy LM provider model и проверить подключение». Получить воспроизводимый тест соединения до разработки многосоставного AI-приложения. Материал основан на текущем официальном руководстве DSPy, проверенном 20 сентября 2026 года, и предназначен для Python 3.10+ с совместимым установленным dspy. У разных провайдеров разные доступные модели, лимиты и права: укажите собственный реально работающий provider/model в переменных окружения. Фиксируйте установленную версию пакета при повторении опыта, поскольку API может меняться.

Как устроено решение

Официальная установка DSPy описывает dspy.LM с записью provider/model и dspy.configure как настройку модели по умолчанию. Это две разные операции: создание клиента само по себе не подставит его всем модулям. Начинайте с прямого вызова LM, чтобы отделить транспорт, ключи и доступность модели от структуры будущего dspy.Predict. Если прямой запрос проходит, а Predict падает, ищите причину в сигнатуре или преобразовании ответа; если не проходит даже прямой вызов, модульная логика пока ни при чём.

Порядок действий

  1. Создайте окружение Python 3.10+ и установите пакет dspy.
  2. Выберите действительный provider/model для своего аккаунта, сохраните имя и ключ только в переменных окружения.
  3. Создайте объект dspy.LM и выполните dspy.configure(lm=lm) до создания основной программы.
  4. Сделайте один безвредный тестовый вызов с системным и пользовательским сообщениями.
  5. Проверьте ответ и запишите модель; лишь затем переходите к сигнатурам и агентам.

Для сетевого запуска установите пакет командой pip install dspy, подготовьте свой доступ к модели и задайте DSPY_MODEL в форме provider/model и DSPY_API_KEY в окружении. Исключение — код, который только проверяет локальные настройки без сетевого вызова. Шаблон ниже содержит вымышленные входные данные и не включает секретов; перед запуском сверьте, что выбранная вами модель подходит для задачи и разрешена правилами провайдера.

Готовый пример программы

import os
import dspy
model_id = os.environ["DSPY_MODEL"]  # например, provider/model из вашего доступа
key = os.environ["DSPY_API_KEY"]
lm = dspy.LM(model_id, api_key=key)
dspy.configure(lm=lm)
messages = [
    {"role": "system", "content": "Отвечай по-русски коротко."},
    {"role": "user", "content": "Как называется столица Франции?"},
]

print(lm(messages=messages))

Вход и ожидаемый результат

Вход — две строки сообщений и действующий идентификатор модели. Ожидается непустой список текстовых ответов, один из которых сообщает «Париж»; конкретное написание, время и счёт токенов не фиксируются. Если вызов завершается исключением авторизации, сначала проверяйте права у провайдера, а не переписывайте промпт.

Проверка качества, а не только запуска

Не копируйте название модели из чужого скриншота как гарантированно доступное: провайдер, регион, тариф и разрешения аккаунта отличаются. В примере имя задаётся переменной окружения без предположения о конкретном релизе. Не записывайте ключ в код статьи, историю терминала или трассы. Для повторяемого сравнения укажите в собственном отчёте реально использованный model_id, текущую версию установленного пакета и короткий контрольный запрос. Такой журнал поможет объяснить, почему результат после обновления модели изменился.

Практический контроль подключения полезно разделить на транспортный и смысловой. Первый прогон с вымышленным приветствием показывает, что ключ принят и адрес модели доступен, но ничего не говорит о пригодности модели для русского текста. Затем подайте два коротких русских запроса разной формы и проверьте, что ответ относится к каждому из них, а не повторяет старую реплику. При ошибке аутентификации не печатайте окружение целиком: в журнале должны остаться только тип исключения и безопасное имя модели. Если вызов вернулся пустым, отдельно проверьте текст ответа, идентификатор запрошенной модели и наличие ограничений у своего провайдера. Наличие кода ответа сети само по себе не является проверкой качества.

Особые случаи и границы

Ответ «Париж» проверяет один общеизвестный факт, а не общую пригодность модели для русскоязычной поддержки. Добавьте контрольный отрицательный запрос, на который система должна отказаться отвечать без данных, но делайте это уже на уровне своего приложения. Если модель отвечает по-английски, проверьте инструкцию, конфигурацию и фактические messages. Не смешивайте сбой сети с нарушением текстового формата: записывайте отдельно код ошибки и содержимое результата, предварительно убрав чувствительные сведения.

Критерии приёмки

  1. Прямой LM-вызов вернул непустой результат на контрольный вопрос.
  2. Скрипт получает ключ из окружения и не печатает его.
  3. В dspy.settings.lm доступен выбранный объект после configure.

Если критерий не выполнен, сначала разделите четыре причины: доступ к модели, контракт полей, поведение самого модуля и правильность предметного ответа. Один успешно выполненный Python-вызов подтверждает только часть этих условий. Сохраняйте минимальный безопасный пример и сравнивайте версии по одинаковым вопросам; не используйте реальные имена клиентов, токены или закрытые документы для отладки в общих журналах. Когда сценарий требует инференса, точные формулировки ответов и затраты зависят от выбранной модели, поэтому в статье заданы проверяемые свойства, а не выдуманные гарантии.

Типичные ошибки и чего не делать

  • Не считать созданный LM автоматически глобально настроенным.
  • Не обещать доступность произвольной модели по примеру документации.
  • Не вставлять действующий ключ в файл для отладки.

Частые вопросы

Нужен ли Python 3.10 или новее?

Да, это требование текущего руководства DSPy.

Зачем dspy.configure?

Он задаёт модель по умолчанию для программы.

Вызывает ли прямой тест платную модель?

Да, если выбранный провайдер тарифицирует обращения.

Официальные источники

Частые вопросы

Нужен ли Python 3.10 или новее?

Да, это требование текущего руководства DSPy.

Зачем dspy.configure?

Он задаёт модель по умолчанию для программы.

Вызывает ли прямой тест платную модель?

Да, если выбранный провайдер тарифицирует обращения.

Читайте также

Комментарии

Пока тихо. Скажите первое слово