Гайд · TNWS AI
Как добавить примеры вопросов в Gradio, не вызывая нейросеть по клику
Настраиваем examples и run_examples_on_click=False, чтобы пользователь отредактировал вопрос перед дорогим вызовом модели.
Задача и применимость
Русскоязычный вопрос: «как сделать примеры вопросов в gradio без автоматического ответа». Для Gradio ChatInterface с текстовым вводом. Официальный контракт примеров проверен 20 сентября 2026 года; конкретная модель заменяется в своей fn после теста интерфейса. В этом примере функция возвращает диагностический ответ, поэтому приёмка не требует доступа к LLM и не утверждает качества её выводов.
Что подтверждено производителем
В ChatInterface параметр examples задаёт образцы сообщений, а run_examples_on_click=False заполняет строку ввода без запуска fn. Если указаны additional_inputs, примеры описываются вложенными списками: первое значение — сообщение, следующие — значения дополнительных полей. Когда cache_examples=True, параметр run_examples_on_click не влияет на поведение.
Порядок действий
- Составьте три коротких образца пользовательских запросов с разными целями.
- Задайте examples как список строк без секретов и частных документов.
- Поставьте run_examples_on_click=False и cache_examples=False.
- Нажмите пример, измените один факт в заполненном поле и только после этого отправьте.
- Проверьте, что дорогой вызов бэкенда до отправки не происходил.
Готовый шаблон
Сохраните пример в отдельном файле Python. В коде нет реального секрета или скрытого вызова модели: если подключён внешний API, его адрес и параметры указаны явно. Установите gradio в отдельном окружении; дополнительные пакеты требуются только там, где они импортированы в примере.
import gradio as gr
calls = 0
def inspect(message, history):
global calls
calls += 1
return f"Вызов {calls}: {message}"
gr.ChatInterface(inspect,
examples=["Сформулируй вопрос по документу AB-17",
"Кратко перескажи правило возврата",
"Назови неподтверждённые утверждения"],
run_examples_on_click=False, cache_examples=False,
title="Примеры запросов").launch(server_name="127.0.0.1")
Вход и ожидаемый результат
Клик по образцу «Кратко перескажи правило возврата» только заполнит поле. Замените текст на «Кратко перескажи правило возврата: 14 дней», отправьте — ожидается строка «Вызов 1: ... 14 дней». Если до нажатия отправки номер вырос, настройка не соответствует задуманному контролю.
Проверка контракта
Примеры работают как подсказка к формулировке запроса, а не как база знаний. Если обещаете пользователю «ответ по договору», но договор не подключён к модели, красивый пример не решит задачу. В шаблоне явно обозначьте место для данных и попросите указать источник. Лучшие образцы охватывают разные интенты: извлечение факта, суммаризацию и проверку спорного утверждения. Для каждого напишите критерий правильного ответа и негативный контроль на отсутствии исходного текста.
Работа с данными пользователя
Автоматическое выполнение примера может тратить бюджет модельного API уже при попытке пользователя посмотреть образец. Выбор run_examples_on_click=False даёт время заменить примерные значения настоящими. Однако в продакшене счётчик в глобальной переменной демонстрирует только факт вызова и общий процесс; он не разделяет клиентов и при нескольких процессах перестанет быть точным. Для реального учёта используйте серверную метрику вызовов с обезличенным идентификатором события.
Что проверить перед развёртыванием
Если позже добавите ползунок temperature или выбор модели, структура examples меняется. Например, при одном дополнительном входе каждый элемент должен содержать сообщение и значение настройки; несовпадение количества нарушит контракт. Проверяйте ввод после каждого обновления UI. Не кладите в публичные примеры реальные имена клиентов, ключи или текст внутренних документов: подсказки видны каждому, кто открывает приложение.
Готовый шаблон запроса вместо абстрактного «расскажи»: «По фрагменту [вставьте текст] назови один подтверждённый срок и дословно укажи часть фрагмента, из которой он следует. Если срока нет, ответь НЕ УКАЗАН». При вводе «Возврат в течение 14 дней» ожидаются 14 дней; при вводе «Возврат по правилам» — отсутствие срока. Это позволяет проверять будущую LLM на фактическом тесте, тогда как счётчик в коде проверяет только UX.
Попросите тестировщика отредактировать каждый пример и оцените, ясно ли, какие факты он должен предоставить. Если образец «проверь документ» не содержит самого документа, подскажите загрузку источника или замените формулировку. Измеряйте долю отправленных и брошенных после клика запросов: высокая доля отказов может означать неэффективный пример. Не включайте примеры, обещающие функции, которых ваш LLM API не реализует. Проверьте также клавиатурную навигацию и мобильный экран: образец должен быть доступен и понятен без мыши.
Критерии приёмки
- Выбор примера не запускает callback.
- После редактирования запрос содержит пользовательский факт.
- Бэкенд вызывается ровно один раз по отправке.
Типичные ошибки и чего не делать
- Не публиковать персональные документы в examples.
- Не путать образцы с источником знаний модели.
- Не оставлять cache_examples=True, ожидая действия run_examples_on_click.
FAQ
Что делает False?
Заполняет поле без выполнения функции.
А если есть Slider?
В каждом примере добавьте значения дополнительных входов.
Могут ли примеры содержать данные клиентов?
Нет, для публичного UI используйте вымышленные данные.
Официальные источники
Частые вопросы
Что делает False?
Заполняет поле без выполнения функции.
А если есть Slider?
В каждом примере добавьте значения дополнительных входов.
Могут ли примеры содержать данные клиентов?
Нет, для публичного UI используйте вымышленные данные.
Читайте также
Как добавить ползунок temperature к AI-чату через additional_inputs в Gradio
Связываем Slider и функцию чат-бота без ошибки порядка аргументов; проверяем значение до вызова нейросети.
Как группировать запросы к ML-модели через batch=True в Gradio Interface
Сверяем сигнатуру пакетной функции, tuple of lists и max_batch_size на детерминированном тесте.
Как обрабатывать Like и Dislike конкретного ответа нейросети в Gradio Chatbot
Добавляем обработчик Chatbot.like с LikeData и проверяем привязку оценки к конкретной реплике.
Комментарии
Пока тихо. Скажите первое слово