JSON в шаблоне промпта: откуда берётся ошибка фигурных скобок

Ошибка шаблона с фигурными скобками часто появляется до обращения к модели. Механизм подстановки принимает часть JSON-примера за имя переменной. Сначала проверьте локальную сборку строки; смена модели такую ошибку не исправляет.

Минимальный пример на Python

Здесь используется обычный str.format, чтобы показать механизм. Правила другого шаблонизатора могут отличаться:

template = 'Пример: {{"status":"ok"}}. Запрос: {question}'
rendered = template.format(question='Проверь {номер}')
print(rendered)

Результат: Пример: {"status":"ok"}. Запрос: Проверь {номер}. Двойные скобки в шаблоне становятся буквальными, а скобки внутри значения question не проходят дополнительную подстановку. Это свойство конкретного способа форматирования, а не правило всех prompt API.

Как найти место сбоя

Сохраните минимальную структуру шаблона и перечень ожидаемых переменных. Сначала подставьте простой текст без JSON, затем верните пример. Если ошибка появляется при добавлении примера, проверьте экранирование и выбранный формат шаблона.

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

Что добавить в тесты

  • Обычный вопрос без специальных символов.
  • Вопрос с буквальными фигурными скобками.
  • JSON-пример в самом шаблоне.
  • Отсутствующую обязательную переменную.
  • Значение, содержащее кавычки и перенос строки.

Сверяйте итоговый текст до отправки, используя вымышленные данные. Полный рабочий промпт может содержать закрытые сведения, поэтому не стоит автоматически печатать его в общедоступный журнал ради отладки.

В LangChain выбирайте правила экранирования по фактически используемому шаблонизатору и версии. Если шаблон успешно отрендерился, остаётся отдельный вопрос качества инструкции модели. Ошибка подстановки и неверный ответ LLM относятся к разным этапам и требуют разных проверок.

Этот разбор подготовлен Latorn. Если вы уже знаете основы Python и API и хотите практиковать такие решения системно, сравните программу платного курса LangChain 1.0.x со своей задачей. Открытый пример выше можно проверить самостоятельно; он не заменяет полный проект.

Технические источники: Python: format string syntax. Учебные ситуации и числа в статье придуманы для объяснения механизма.

Следующий шаг: LangChain: практические разборы формата, памяти и потоков. По смежным вопросам: LangChain вернул правильный JSON, но данные неверны: что проверять, Отсутствующее поле и null в ответе LLM: как не стереть данные.