Как создать AI-агента на базе ClickHouse с помощью Streamlit
В этом руководстве вы научитесь создавать веб-агента на базе ИИ, используя Streamlit, который может взаимодействовать с SQL-площадкой ClickHouse с помощью Сервера MCP ClickHouse и Agno.
Этот пример создает полноценное веб-приложение, которое предоставляет интерфейс чата для выполнения запросов к данным ClickHouse. Исходный код этого примера вы можете найти в репозитории примеров.
Предварительные условия
- У вас должна быть установлена Python на вашем компьютере.
Вам также необходимо установить
uv
. - Вам нужен API-ключ Anthropic или API-ключ от другого провайдера LLM.
Вы можете выполнить следующие шаги для создания вашего приложения Streamlit.
Создание файла утилит
Создайте файл utils.py
с двумя утилитными функциями. Первая — это
асинхронный генератор функций для обработки потоковых ответов от
агента Agno. Вторая — это функция для применения стилей к приложению Streamlit:
Настройка учетных данных
Установите ваш API-ключ Anthropic как переменную окружения:
Если у вас нет API-ключа Anthropic и вы хотите использовать другого провайдера LLM, вы можете найти инструкции по настройке ваших учетных данных в документации Agno "Интеграции".
Импорт необходимых библиотек
Начните с создания вашего основного файла приложения Streamlit (например, app.py
) и добавьте импорты:
Определение функции потокового агента
Добавьте основную функцию агента, которая подключается к SQL-площадке ClickHouse и потоково отправляет ответы:
Добавление синхронных оберток
Добавьте вспомогательные функции для обработки асинхронного потока в Streamlit:
Создание интерфейса Streamlit
Добавьте компоненты пользовательского интерфейса Streamlit и функциональность чата:
Запуск приложения
Чтобы запустить ваше веб-приложение AI-агента ClickHouse, вы можете выполнить следующую команду в терминале:
Это откроет ваш веб-браузер и перенаправит вас на http://localhost:8501
, где вы
можете взаимодействовать с вашим AI-агентом и задавать ему вопросы о примерах наборов данных,
доступных на SQL-площадке ClickHouse.