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

게시일: 2025년 1월 13일

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

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

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

공유 모델 액세스

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

대화 설정

메시지 대화는 동일한 방식으로 시작할 수 있지만 Prompt API는 시스템 프롬프트를 지정하는 약식 구문도 제공합니다. LanguageModel 인터페이스에서 create() 메서드를 사용하여 언어 모델 세션을 시작합니다.

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)}`,
    },
  ],
});

첫 번째 질문에 답변

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

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

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

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를 사용해 보고 웹 애플리케이션을 더 스마트하게 만들어 보세요.