Гайд · TNWS AI

Как сохранить историю AI-чата в браузере через Gradio save_history

4 мин—

Проверяем save_history в двух вкладках и объясняем границы локального хранения диалога и приватности.

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

Русскоязычный вопрос: «как сохранить историю переписки gradio chatinterface в браузере». Функция описана в актуальной странице ChatInterface Gradio, проверенной 20 сентября 2026 года. Она относится к браузерному UI и не заменяет серверную базу бесед для нескольких устройств или корпоративного аудита. В качестве модели в тестовом коде использован детерминированный заглушечный callback, чтобы проверить хранение отдельно от качества инференса.

Что подтверждено производителем

При save_history=True Gradio сохраняет историю в local storage браузера и показывает предыдущие разговоры на боковой панели. Это локальное сохранение в браузере, не подтверждение синхронизации с аккаунтом, сервером или другим устройством. Если нужна согласованная долговременная история для пользователя, спроектируйте отдельный серверный слой.

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

  1. Включите save_history в ChatInterface и откройте его в обычном окне браузера.
  2. Задайте вопрос с уникальным тестовым маркером, затем начните другой разговор.
  3. Проверьте наличие предыдущей беседы в боковой панели после обновления страницы.
  4. Откройте тот же адрес в приватном окне или другом браузере и сравните список.
  5. Перед запуском с реальными данными решите, допускается ли локальное хранение чувствительного текста.

Готовый шаблон

Сохраните пример в отдельном файле 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.

Проверьте особый сценарий: пользователь переписывается в обычном профиле браузера, затем делится компьютером с коллегой. Коллега открывает тот же адрес и может увидеть сохранённые разговоры без доступа к серверной базе. Для рабочих данных делайте вход под личной учётной записью, а при выходе удаляйте локальные артефакты согласно вашей политике; конкретный механизм удаления тестируйте для используемой версии приложения. В инкогнито и после очистки данных сохранение может вести себя иначе — сообщайте об этом заранее, а не после потери нужной заметки. Бэкап браузерных данных не является бизнес-процессом восстановления.

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

  1. Тестовый маркер восстановим в прежнем профиле.
  2. Он не появляется автоматически в другом браузере.
  3. Пользователь видит предупреждение о локальном характере хранения.

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

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

FAQ

Где сохранён чат?

В local storage текущего браузера.

Есть ли синхронизация устройств?

Сам save_history её не обеспечивает.

Нужна ли база для корпоративного архива?

Да, с собственными правилами доступа и удаления.

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

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

Где сохранён чат?

В local storage текущего браузера.

Есть ли синхронизация устройств?

Сам save_history её не обеспечивает.

Нужна ли база для корпоративного архива?

Да, с собственными правилами доступа и удаления.

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

Комментарии

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