Prompt API로 로컬 및 오프라인 지원 챗봇 빌드

게시일: 2024년 1월 13일

이 도움말은 LLM 챗봇에 관한 3부 시리즈의 마지막 도움말입니다. 이전 도움말에서는 클라이언트 측 LLM의 강력한 기능을 설명하고 WebLLM 기반 챗봇을 할 일 목록 애플리케이션에 추가하는 방법을 안내했습니다.

일부 최신 기기에는 대규모 언어 모델과 기타 AI 모델이 기기에 바로 제공됩니다. Chrome은 기본 제공 AI API를 브라우저에 통합하는 것을 제안했으며, 다양한 개발 단계에 있는 여러 API를 사용합니다. 이러한 API의 대부분은 웹사이트에서 동일한 구현과 모델을 사용하여 최대 추론 성능을 달성할 수 있도록 표준화 절차를 거치고 있습니다.

Prompt API는 이러한 AI API 중 하나입니다. 이 기능을 사용하려면 개발자가 사전 프리뷰 프로그램에 가입하는 것이 좋습니다. 동의하면 브라우저에서 Prompt API를 사용 설정하는 방법에 관한 안내가 전송됩니다. Prompt API는 Chrome 확장 프로그램용 오리진 트라이얼에서 사용할 수 있으므로 실제 확장 프로그램 사용자를 대상으로 이 API를 테스트할 수 있습니다.

공유 모델 액세스

Prompt API는 WebLLM과 유사하게 작동합니다. 하지만 이번에는 모델을 선택할 수 없습니다 (브라우저와 함께 제공되는 LLM을 사용해야 함). 기본 제공 AI를 사용 설정하면 Chrome에서 Gemini Nano를 브라우저에 다운로드합니다. 그런 다음 이 모델을 여러 출처에 공유하고 최대 성능으로 실행할 수 있습니다. 개발자가 모델 선택 기능을 추가해 달라고 요청한 GitHub 문제가 있습니다.

대화 설정

메시지 대화를 시작하는 방법은 정확히 동일하지만 Prompt API는 시스템 프롬프트를 지정하는 축약 문법도 제공합니다. self.ai.languageModel 속성에서 create() 메서드를 사용하여 언어 모델 세션을 시작합니다.

const session = await self.ai.languageModel.create({
  systemPrompt: `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)}`,
});

첫 번째 질문에 답변하기

스트리밍을 구성하기 위한 구성 객체 대신 Prompt API는 다음 두 가지 메서드를 제공합니다.

  • prompt() 호출 시 전체 문자열 반환
  • promptStreaming()는 비동기 반복 가능한 항목을 반환합니다. WebLLM과 달리 Prompt API는 전체 문자열 응답으로 응답하므로 결과를 직접 결합할 필요가 없습니다.

이전에 다른 출처에서 모델 다운로드를 트리거한 적이 없는 경우 Gemini Nano가 브라우저에 다운로드되는 동안 첫 번째 요청이 매우 오래 걸릴 수 있습니다. 모델을 이미 사용할 수 있는 경우 추론이 즉시 시작됩니다.

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

데모

요약

LLM을 애플리케이션에 통합하면 사용자 경험을 크게 개선할 수 있습니다. 클라우드 서비스는 사용자 기기에 관계없이 더 높은 품질의 모델과 높은 추론 성능을 제공하지만 WebLLM 및 Chrome의 Prompt API와 같은 온디바이스 솔루션은 클라우드 기반 대안과 비교하여 오프라인에서 작동하고 개인 정보 보호를 개선하며 비용을 절감합니다. 새로운 API를 사용해 보고 웹 애플리케이션을 더 스마트하게 만들어 보세요.