Создайте локального и автономного чат-бота с помощью Prompt API.

Опубликовано: 13 января 2025 г.

Это последняя статья из трёх частей, посвящённых чат-ботам LLM. В предыдущих статьях обсуждались возможности клиентских LLM-программ и объяснялось, как добавить чат-бот на базе WebLLM в приложение для управления списками дел .

Некоторые новые устройства поставляются с обширными языковыми и другими моделями искусственного интеллекта прямо на устройстве. Chrome предлагает интегрировать встроенные API искусственного интеллекта в браузер , при этом ряд API находятся на разных стадиях разработки. Многие из этих API проходят процесс стандартизации, чтобы веб-сайты могли использовать одну и ту же реализацию и модель для достижения максимальной производительности вывода.

Prompt API — один из таких API для искусственного интеллекта. Чтобы использовать его, разработчикам рекомендуется зарегистрироваться в программе раннего ознакомления (Early Preview Program ). После одобрения заявки вы получите инструкции по включению Prompt API в браузерах. Prompt API доступен в ознакомительной версии для расширений Chrome , поэтому вы можете протестировать его на реальных пользователях.

Общий доступ к модели

API Prompt работает аналогично WebLLM. Однако на этот раз выбор модели не предусмотрен (придётся использовать LLM, поставляемый вместе с браузером). При включении встроенного ИИ Chrome загружает Gemini Nano . Эта модель может быть использована несколькими источниками и работать с максимальной производительностью. На GitHub есть проблема , связанная с запросом разработчика на добавление функции выбора модели.

Настройте разговор

Вы можете начать диалог сообщений точно так же, но API Prompt также предлагает сокращённый синтаксис для указания системного запроса. Начните сеанс языковой модели, используя метод create() интерфейса LanguageModel :

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

Ответьте на свой первый вопрос

Вместо объекта конфигурации для настройки потоковой передачи API Prompt предлагает два отдельных метода:

  • prompt() возвращает полную строку
  • promptStreaming() возвращает асинхронный итерируемый объект. В отличие от WebLLM, API Prompt возвращает полный строковый ответ, поэтому вам не придётся объединять результаты самостоятельно.

Если ни один другой источник ранее не запускал загрузку модели, ваш первый запрос может занять очень много времени, пока Gemini Nano загрузится в ваш браузер. Если модель уже доступна, вывод начинается немедленно.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

Демо

Краткое содержание

Интеграция LLM в приложения может значительно улучшить пользовательский опыт. Облачные сервисы предлагают более качественные модели и высокую производительность вывода независимо от устройства пользователя, а локальные решения, такие как WebLLM и Prompt API для Chrome, работают офлайн, повышают конфиденциальность и позволяют сэкономить по сравнению с облачными альтернативами. Попробуйте эти новые API и сделайте свои веб-приложения умнее.