Tworzenie czatbota działającego lokalnie i offline za pomocą interfejsu Prompt API

Opublikowano: 13 stycznia 2025 r.

To ostatni artykuł z 3-częściowej serii o chatbotach LLM. W poprzednich artykułach omówiliśmy możliwości modeli LLM po stronie klienta i pokazaliśmy, jak dodać chatbota opartego na WebLLM do aplikacji z listą zadań.

Niektóre nowsze urządzenia są wyposażone w duże modele językowe i inne modele AI. Chrome zaproponował zintegrowanie wbudowanych interfejsów API AI z przeglądarką. Obecnie kilka interfejsów API jest na różnych etapach rozwoju. Wiele z tych interfejsów API przechodzi proces standaryzacji, dzięki czemu witryny mogą używać tej samej implementacji i modelu, aby uzyskać maksymalną wydajność wnioskowania.

Prompt API to jeden z takich interfejsów API AI. Aby z niego korzystać, deweloperzy powinni zarejestrować się w programie Early Preview. Po zaakceptowaniu otrzymasz instrukcje, jak włączyć Prompt API w przeglądarkach. Prompt API jest dostępne w wersji próbnej origin dla rozszerzeń do Chrome, dzięki czemu możesz testować ten interfejs API na prawdziwych użytkownikach rozszerzeń.

Dostęp współdzielony do modelu

Prompt API działa podobnie do WebLLM. Tym razem nie ma jednak możliwości wyboru modelu (musisz użyć modelu LLM, który jest dostarczany z przeglądarką). Gdy włączysz wbudowaną AI, Chrome pobierze do przeglądarki model podstawowy. Ten model można następnie udostępniać w wielu źródłach i uruchamiać z maksymalną wydajnością. W GitHubie jest zgłoszenie , w którym deweloper poprosił o dodanie funkcji wyboru modelu.

Konfigurowanie rozmowy

Rozmowę możesz rozpocząć w ten sam sposób, ale Prompt API oferuje też skróconą składnię do określania promptu systemowego. Sesję modelu językowego rozpocznij za pomocą metody create() w interfejsie 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)}`,
    },
  ],
});

Odpowiadanie na pierwsze pytanie

Zamiast obiektu konfiguracji do konfigurowania przesyłania strumieniowego Prompt API oferuje 2 oddzielne metody:

  • prompt() zwraca pełny ciąg znaków.
  • promptStreaming() zwraca asynchroniczny obiekt iterowalny. W przeciwieństwie do WebLLM Prompt API odpowiada pełnym ciągiem znaków, więc nie musisz samodzielnie łączyć wyników.

Jeśli żaden inny źródło nie wywołało wcześniej pobierania modelu, pierwsze żądanie może potrwać bardzo długo, ponieważ model jest pobierany do przeglądarki. Jeśli model jest już dostępny, wnioskowanie rozpoczyna się natychmiast.

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

Prezentacja

Podsumowanie

Integracja modeli LLM z aplikacjami może znacznie poprawić komfort użytkowania. Usługi w chmurze oferują modele wyższej jakości i wysoką wydajność wnioskowania niezależnie od urządzenia użytkownika, ale rozwiązania na urządzeniu, takie jak WebLLM i Prompt API Chrome, działają offline, zwiększają prywatność i oszczędzają koszty w porównaniu z alternatywami w chmurze. Wypróbuj te nowe interfejsy API i spraw, aby Twoje aplikacje internetowe były inteligentniejsze.