Гайд · TNWS AI
Как сохранить историю AI-чата в браузере через Gradio save_history
Проверяем save_history в двух вкладках и объясняем границы локального хранения диалога и приватности.
Задача и применимость
Русскоязычный вопрос: «как сохранить историю переписки gradio chatinterface в браузере». Функция описана в актуальной странице ChatInterface Gradio, проверенной 20 сентября 2026 года. Она относится к браузерному UI и не заменяет серверную базу бесед для нескольких устройств или корпоративного аудита. В качестве модели в тестовом коде использован детерминированный заглушечный callback, чтобы проверить хранение отдельно от качества инференса.
Что подтверждено производителем
При save_history=True Gradio сохраняет историю в local storage браузера и показывает предыдущие разговоры на боковой панели. Это локальное сохранение в браузере, не подтверждение синхронизации с аккаунтом, сервером или другим устройством. Если нужна согласованная долговременная история для пользователя, спроектируйте отдельный серверный слой.
Порядок действий
- Включите save_history в ChatInterface и откройте его в обычном окне браузера.
- Задайте вопрос с уникальным тестовым маркером, затем начните другой разговор.
- Проверьте наличие предыдущей беседы в боковой панели после обновления страницы.
- Откройте тот же адрес в приватном окне или другом браузере и сравните список.
- Перед запуском с реальными данными решите, допускается ли локальное хранение чувствительного текста.
Готовый шаблон
Сохраните пример в отдельном файле Python. В коде нет реального секрета или скрытого вызова модели: если подключён внешний API, его адрес и параметры указаны явно. Установите gradio в отдельном окружении; дополнительные пакеты требуются только там, где они импортированы в примере.
import gradio as gr
def echo(message, history):
return "Получено: " + message
gr.ChatInterface(echo, save_history=True,
title="Локальная история бесед").launch(server_name="127.0.0.1")
Вход и ожидаемый результат
В первой беседе спросите «Проверка маркера ZX-42», во второй — «Новая беседа». После обновления страницы первый маркер должен находиться в истории этого же браузера; в другом браузере он не должен появиться сам. Маркер вымышленный, персональные данные для такого теста не используйте.
Проверка контракта
Локальное сохранение удобно для личного демо: пользователь может вернуться к ранее набранным репликам, даже если модельный сервис не хранит серверную историю. Но local storage связан с конкретным профилем браузера. Очистка данных сайта, работа в другом профиле или на другом устройстве меняет наблюдаемый результат. Обещание «ваши разговоры всегда восстановятся» было бы неверным без собственной базы данных и резервирования. Отдельно выясняйте поведение после обновления конкретной версии библиотеки.
Работа с данными пользователя
Общий компьютер или браузер, которым пользуются несколько людей, создаёт риск утечки. Простой переключатель save_history не делает шифрования, не реализует разграничение пользователей и не удостоверяет, кому принадлежит беседа. Если в чате обсуждают документы клиентов, диагностику или финансовые данные, сначала сформулируйте политику хранения: что разрешено сохранять, на сколько и кто может удалить. Для чувствительных пилотов безопаснее отключить эту опцию до согласования правил, а не полагаться на скрытое окно браузера.
Что проверить перед развёртыванием
Не смешивайте историю UI и историю, передаваемую LLM в текущем вызове. Даже при сохранённом старом диалоге fn получает history конкретной активной беседы. Если вы создаёте собственный серверный архив, сохраняйте привязку к учётной записи, права доступа, механизм удаления и защиту от повторного доступа после выхода. Gradio не предоставляет весь этот продуктовый контракт одним параметром. Тестируйте после рестарта сервера, после очистки данных браузера и после открытия в другом профиле отдельно.
Шаблон предупреждения пользователю для демо: «История этой версии сохраняется в текущем браузере. Не вводите пароли, токены и персональные документы. На другом устройстве беседы не синхронизируются». Это предупреждение не заменяет информирование о серверных логах модельного API: они зависят от вашей архитектуры. Критерий успешности именно данной задачи — предсказуемое поведение локальной боковой панели, а не качество ответов LLM.
Проверьте особый сценарий: пользователь переписывается в обычном профиле браузера, затем делится компьютером с коллегой. Коллега открывает тот же адрес и может увидеть сохранённые разговоры без доступа к серверной базе. Для рабочих данных делайте вход под личной учётной записью, а при выходе удаляйте локальные артефакты согласно вашей политике; конкретный механизм удаления тестируйте для используемой версии приложения. В инкогнито и после очистки данных сохранение может вести себя иначе — сообщайте об этом заранее, а не после потери нужной заметки. Бэкап браузерных данных не является бизнес-процессом восстановления.
Критерии приёмки
- Тестовый маркер восстановим в прежнем профиле.
- Он не появляется автоматически в другом браузере.
- Пользователь видит предупреждение о локальном характере хранения.
Типичные ошибки и чего не делать
- Не считать local storage защищённым архивом переписки.
- Не обещать синхронизацию с другого устройства.
- Не проверять функцию на реальных секретах.
FAQ
Где сохранён чат?
В local storage текущего браузера.
Есть ли синхронизация устройств?
Сам save_history её не обеспечивает.
Нужна ли база для корпоративного архива?
Да, с собственными правилами доступа и удаления.
Официальные источники
Частые вопросы
Где сохранён чат?
В local storage текущего браузера.
Есть ли синхронизация устройств?
Сам save_history её не обеспечивает.
Нужна ли база для корпоративного архива?
Да, с собственными правилами доступа и удаления.
Читайте также
Как добавить ползунок temperature к AI-чату через additional_inputs в Gradio
Связываем Slider и функцию чат-бота без ошибки порядка аргументов; проверяем значение до вызова нейросети.
Как добавить примеры вопросов в Gradio, не вызывая нейросеть по клику
Настраиваем examples и run_examples_on_click=False, чтобы пользователь отредактировал вопрос перед дорогим вызовом модели.
Как группировать запросы к ML-модели через batch=True в Gradio Interface
Сверяем сигнатуру пакетной функции, tuple of lists и max_batch_size на детерминированном тесте.
Комментарии
Пока тихо. Скажите первое слово