Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как развернуть приложение чат-бота на основе Express.js, интегрированное с расширением боковинка Phi-4 в Службе приложений Azure. Следуя инструкциям, вы узнаете, как настроить масштабируемое веб-приложение, добавить вспомогательный модуль с ИИ для расширенных возможностей общения и протестировать функционал чат-бота.
Развертывание собственной небольшой языковой модели (SLM) предлагает несколько преимуществ:
- Полный контроль над данными. Конфиденциальная информация не предоставляется внешним службам, что крайне важно для отраслей с строгими требованиями к соответствию.
- Автономные модели можно точно настроить в соответствии с конкретными вариантами использования или требованиями к домену.
- Свести к минимуму задержку сети и ускорить время отклика для лучшего взаимодействия с пользователем.
- Полный контроль над выделением ресурсов, обеспечивая оптимальную производительность приложения.
Предпосылки
- Учетная запись Azure с активной подпиской.
- Учетная запись GitHub.
Развертывание примера приложения
В браузере перейдите к примеру репозитория приложений.
Создайте новое Codespace из репозитория.
Войдите в систему с помощью учетной записи Azure:
az loginОткройте терминал в пространстве Codespace и выполните следующие команды:
cd use_sidecar_extension/expressapp az webapp up --sku P3MV3
Эта команда запуска является распространенной установкой для развертывания приложений Express.js в Службе приложений Azure. Дополнительные сведения см. в статье "Развертывание веб-приложения Node.js в Azure".
Добавьте расширение сайдкара Phi-4
В этом разделе вы добавите расширение Phi-4 для сайдкара в ваше приложение ASP.NET Core, размещенное в Службе приложений Azure.
- Перейдите на портал Azure и перейдите на страницу управления приложением.
- В меню слева выберитеЦентр развертывания>.
- На вкладке "Контейнеры" выберите "Добавить>расширение Sidecar".
- В параметрах расширения прицепа выберите AI: phi-4-q4-gguf (Экспериментальный).
- Укажите имя расширения Sidecar.
- Выберите Сохранить, чтобы применить изменения.
- Подождите несколько минут для развертывания расширения боковой кареты. Продолжайте нажимать Обновить, пока в столбце Состояние не отобразится Запуск.
Это расширение Phi-4 использует API завершения чата, например OpenAI, который может обрабатывать ответ завершения чата по адресу http://localhost:11434/v1/chat/completions. Дополнительные сведения о взаимодействии с API см. в следующих статье:
Тестирование чат-бота
На странице управления приложения в меню слева выберите "Обзор".
В разделе "Домен по умолчанию" выберите URL-адрес, чтобы открыть веб-приложение в браузере.
Убедитесь, что приложение чат-бота запущено и отвечает на входные данные пользователей.
Как работает пример приложения
В примере приложения показано, как интегрировать службу на основе Express.jsс расширением боковой каретки SLM. Класс SLMService инкапсулирует логику отправки запросов в API SLM и обработки потоковых ответов. Эта интеграция позволяет приложению динамически создавать ответы на беседы.
Глядя на use_sidecar_extension/expressapp/src/services/slm_service.js, вы видите, что:
Служба отправляет запрос POST в конечную точку
http://127.0.0.1:11434/v1/chat/completionsSLM.this.apiUrl = 'http://127.0.0.1:11434/v1/chat/completions';Полезная нагрузка POST включает в себя системное сообщение и подсказку, сформированную из выбранного продукта и запроса пользователя.
const requestPayload = { messages: [ { role: 'system', content: 'You are a helpful assistant.' }, { role: 'user', content: prompt } ], stream: true, cache_prompt: false, n_predict: 2048 // Increased token limit to allow longer responses };Запрос POST стримит ответ построчно. Каждая строка анализируется для извлечения созданного содержимого (или маркера).
// Set up Server-Sent Events headers res.setHeader('Content-Type', 'text/event-stream'); res.setHeader('Cache-Control', 'no-cache'); res.setHeader('Connection', 'keep-alive'); res.flushHeaders(); const response = await axios.post(this.apiUrl, requestPayload, { headers: { 'Content-Type': 'application/json' }, responseType: 'stream' }); response.data.on('data', (chunk) => { const lines = chunk.toString().split('\n').filter(line => line.trim() !== ''); for (const line of lines) { let parsedLine = line; if (line.startsWith('data: ')) { parsedLine = line.replace('data: ', '').trim(); } if (parsedLine === '[DONE]') { return; } try { const jsonObj = JSON.parse(parsedLine); if (jsonObj.choices && jsonObj.choices.length > 0) { const delta = jsonObj.choices[0].delta || {}; const content = delta.content; if (content) { // Use non-breaking space to preserve formatting const formattedToken = content.replace(/ /g, '\u00A0'); res.write(`data: ${formattedToken}\n\n`); } } } catch (parseError) { console.warn(`Failed to parse JSON from line: ${parsedLine}`); } } });
Часто задаваемые вопросы
- Как ценовая категория влияет на производительность бокового автомобиля SLM?
- Как использовать собственный сайдкар SLM?
Как ценовая категория влияет на производительность бокового модуля SLM?
Так как модели искусственного интеллекта используют значительные ресурсы, выберите ценовую категорию, которая дает достаточно виртуальных ЦП и памяти для запуска конкретной модели. По этой причине встроенные расширения искусственного интеллекта отображаются только в том случае, если приложение относится к подходящей ценовой категории. Если вы создаете собственный контейнер-помощник SLM, следует также использовать ЦП-оптимизированную модель, так как тарифные планы службы приложений используют только ЦП.
Например, мини-модель Phi-3 с длиной контекста 4K из Hugging Face предназначена для работы с ограниченными ресурсами и обеспечивает сильные математические и логические возможности для многих распространенных сценариев. Она также поставляется с оптимизированной для ЦП версией. В Службе приложений мы проверили модель на всех уровнях уровня "Премиум" и обнаружили, что она хорошо работает на уровне P2mv3 или более поздней версии. Если ваши требования позволяют, его можно запустить на более низком уровне.
Как использовать собственный сайдкар SLM?
Пример репозитория содержит пример контейнера SLM, который можно использовать в качестве контейнера-сайдкара. Он запускает приложение FastAPI, которое прослушивает порт 8000, как указано в файле Dockerfile. Приложение использует среду выполнения ONNX для загрузки модели Phi-3, а затем перенаправит данные HTTP POST в модель и передает ответ от модели обратно клиенту. Дополнительные сведения см. в model_api.py.
Чтобы создать образ сайдкара самостоятельно, необходимо установить Docker Desktop на локальный компьютер.
Клонируйте репозиторий локально.
git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar cd ai-slm-in-app-service-sidecarПерейдите в исходный каталог образа Phi-3 и скачайте модель локально с помощью интерфейса командной строки Huggingface.
cd bring_your_own_slm/src/phi-3-sidecar huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnxDockerfile настроен для копирования модели из ./Phi-3-mini-4k-instruct-onnx.
Выполните сборку образа Docker. Рассмотрим пример.
docker build --tag phi-3 .Отправьте созданный образ в реестр контейнеров Azure с помощью отправки первого образа в реестр контейнеров Azure с помощью Интерфейса командной строки Docker.
На вкладке Центр развертывания>Контейнеры (новый) выберите Добавить>пользовательский контейнер и настройте новый контейнер следующим образом:
- Имя: phi-3
- Источник изображения: Реестр контейнеров Azure
- Реестр: ваш реестр
- Изображение: отправленное изображение
- Тег: тег изображения, который требуется
- Порт: 8000
Нажмите кнопку "Применить".
См. bring_your_own_slm/src/webapp для примера приложения, взаимодействующего с этим пользовательским сайдкар-контейнером.
Дальнейшие шаги
Руководство: Настройте сайдкар-контейнер для приложения Linux в Службе приложений Azure