Chrome Prompt API란 무엇인가? API 개발자를 위한 브라우저 AI

Ashley Innocent

Ashley Innocent

29 April 2026

Chrome Prompt API란 무엇인가? API 개발자를 위한 브라우저 AI

Apidog 엔터프라이즈

온프레미스 배포

SSO & RBAC

SOC 2 준수

Apidog Enterprise 살펴보기

Chrome은 브라우저 내부에 AI 모델을 직접 탑재했습니다. Prompt API는 이 모델을 사용하기 위해 호출하는 JavaScript 인터페이스입니다. API 키도, 네트워크 왕복도, 토큰당 요금도 없습니다. 이 모델은 Gemini Nano이며, 사용자의 기기에서 실행됩니다. Chrome 138부터는 확장 프로그램에서 일반적으로 사용할 수 있으며 웹 페이지에서는 플래그 뒤에 숨겨져 있습니다. API 개발자에게 있어 이는 클라이언트에서 수행할 수 있는 작업의 범위가 변화함을 의미합니다.

이 가이드에서는 Chrome Prompt API가 무엇인지, 클라우드 Gemini API와 어떻게 다른지, API 워크플로우에 언제 적합한지, 확장 프로그램과 웹 페이지 모두를 위한 실습 코드, 그리고 문서에서 인정하는 것보다 더 빨리 직면하게 될 한계점에 대해 다룹니다. 모델을 사용할 수 없을 때 동일한 작업에 대한 폴백 경로를 가질 수 있도록 마지막에 Apidog와 함께 사용법을 설명합니다.

버튼

핵심 요약

Prompt API가 실제로 노출하는 것

Prompt API는 Chrome이 작년부터 제공하기 시작한 소규모 "내장형 AI" API 그룹 중 하나입니다. 다른 API들은 더 좁은 범위(요약, 작성, 재작성, 번역, 언어 감지)를 가집니다. Prompt API는 범용적인 인터페이스이며, 다른 API들은 작업별 기본값으로 이를 감싸고 있습니다.

세 가지 기본 요소가 중요합니다:

형태는 의도적으로 Gemini 클라우드 SDK와 유사하지만 간소화되었습니다. 아직 도구 호출은 없으며, 안정화 채널에서는 이미지 입력이 지원되지 않고(Origin Trial에서 제공), 컨텍스트 창이 작습니다(입력 4K 토큰, 출력 1K 토큰, 총 8K 토큰까지 소프트 확장 가능).

웹 페이지에서의 첫 번째 호출은 다음과 같습니다:

if (!('LanguageModel' in window)) {
  console.warn('Prompt API not available. Falling back to cloud.');
} else {
  const status = await LanguageModel.availability();
  if (status === 'unavailable') {
    console.warn('Device does not support Gemini Nano.');
  } else {
    if (status !== 'available') {
      // 백그라운드 다운로드를 시작합니다. UI를 표시합니다.
      await LanguageModel.create({ monitor(m) {
        m.addEventListener('downloadprogress', e => {
          console.log(`downloaded ${(e.loaded * 100).toFixed(0)}%`);
        });
      }});
    }
    const session = await LanguageModel.create({
      systemPrompt: '세 가지 간결한 글머리 기호로 답변하십시오. JSON만 가능합니다.',
    });
    const reply = await session.prompt(
      '다음 변경 로그를 세 가지 글머리 기호로 요약하십시오.\n\n' + changelog
    );
    console.log(reply);
  }
}

이 스니펫에는 기능 감지, 가용성 확인, 선택적 다운로드, 세션 생성, 시스템 프롬프트, 프롬프트 호출 등 모든 중요한 부분이 표시되어 있습니다.

클라우드 Gemini API와의 차이점

동일한 계열이지만 배포 방식이 다릅니다. 이러한 차이점은 무엇을 구축할 수 있고 없는지를 결정합니다.

속성 Chrome Prompt API Gemini API (클라우드)
모델 Gemini Nano (기기 내) gemini-3-flash, gemini-3-flash-preview, gemini-3-pro
호출당 비용 없음 토큰당 과금
지연 시간 일반적으로 첫 토큰 50~300ms 첫 토큰 200~800ms
네트워크 모델 다운로드 후 필요 없음 모든 호출에 필요
개인 정보 보호 입력이 기기를 떠나지 않음 Google 서버로 전송됨
컨텍스트 창 입력 4K / 출력 1K (총 8K) 최대 1M 토큰
도구 호출 없음 (예정) 있음
멀티모달 Origin Trial에서 이미지 입력 있음
JSON 모드 시스템 프롬프트를 통한 최선의 노력 스키마를 통한 일급 지원
가용성 Chrome 전용, 지원 가능한 하드웨어 전용 네트워크가 있는 모든 클라이언트

기기 내 모델은 `gemini-3-flash`보다 대략 두 자릿수 정도 작습니다. 정규식이나 수동으로 조정한 프롬프트 분류기를 사용했을 짧은 작업에 사용하십시오. 클라우드 Gemini의 대체품으로 사용하지 마십시오.

API 개발자 워크플로우에 실제로 적합한 곳

네 가지 사용 사례는 통합 비용을 상쇄합니다. 이 외의 경우에는 클라우드 API가 여전히 올바른 선택입니다.

  1. 클라이언트 측에서 사용자 입력 구문 분석 및 재구성.자유 형식 쿼리를 API의 구조화된 필터로 변환합니다. 사용자가 “지난주 100달러 초과 Stripe 요금”이라고 입력하면, Prompt API는 검색 엔드포인트를 호출하기 전에 이를 `{ "amount_gt": 100, "since": "2026-04-22", "provider": "stripe" }`로 변환합니다. 왕복 시간을 절약하고 사용자 개인 정보를 보호합니다.
  2. UI를 위한 API 응답 요약.자신의 API를 호출하여 40개의 레코드를 가져오고, 카드에 표시할 한 줄 요약이 필요할 때 사용합니다. 레코드를 클라우드 모델로 보내면 지연 시간과 비용이 추가됩니다. Prompt API는 로컬에서 실행되며 200ms 미만으로 결과를 반환합니다.
  3. JSON 형식 수정.LLM 응답은 자주 잘못된 형식으로 도착하는 경우가 많습니다. Gemini Nano를 통해 한 번의 수정 패스를 실행합니다: “여기에 잘못된 JSON이 있습니다. 동일한 필드로 유효한 JSON만 반환하십시오.” 저렴하고 빠르며 비용이 들지 않습니다.
  4. 개발 중 로컬 스텁(Stub) 생성.새로운 엔드포인트를 연결하고 백엔드가 절반만 구축되었을 때, 그 자리에서 그럴듯한 응답 본문을 생성합니다. 형식은 프로덕션에 맞지 않을 수 있지만, 프런트엔드 작업을 막히지 않게 합니다. Apidog의 모의 서버와 결합하여 중요한 엔드포인트는 저장된 예제에서 가져오고 탐색적인 엔드포인트는 Prompt API에서 가져오는 하이브리드 설정을 구축할 수 있습니다.

확장 프로그램에 통합하기

확장 프로그램은 Chrome 138부터 안정화 채널에서 Prompt API를 사용할 수 있습니다. 권한을 선언하고 `chrome.languageModel`을 호출합니다.

manifest.json:

{
  "manifest_version": 3,
  "name": "Endpoint Summarizer",
  "version": "1.0.0",
  "permissions": ["languageModel"],
  "action": { "default_popup": "popup.html" }
}

popup.js:

const status = await chrome.languageModel.availability();
if (status === 'unavailable') {
  document.getElementById('out').textContent =
    'Device does not support on-device AI.';
  return;
}

const session = await chrome.languageModel.create({
  systemPrompt: [
    'HTTP 응답을 세 개의 짧은 글머리 기호로 요약하십시오.',
    '상태, 가장 많이 변경된 필드, 그리고 오류 키를 언급하십시오.',
  ].join(' '),
  temperature: 0.3,
  topK: 3,
});

document.getElementById('go').addEventListener('click', async () => {
  const tab = await chrome.tabs.query({ active: true, currentWindow: true });
  const [{ result }] = await chrome.scripting.executeScript({
    target: { tabId: tab[0].id },
    func: () => document.body.innerText.slice(0, 4000),
  });
  const stream = session.promptStreaming(result);
  const out = document.getElementById('out');
  out.textContent = '';
  for await (const chunk of stream) {
    out.textContent += chunk;
  }
});

두 가지 주목할 점이 있습니다. `temperature`와 `topK`는 API가 노출하는 유일한 샘플링 조절 기능입니다. `topP`는 안정화 채널에서 지원되지 않습니다. 스트리밍은 비동기 이터레이터이며, 서버 전송 이벤트가 아니므로, 소비 패턴은 클라우드 Gemini용으로 작성할 SSE 리더 대신 `for await`입니다.

웹 페이지에 통합하기

웹 페이지는 사용자가 플래그를 켜거나 여러분의 Origin이 Origin Trial에 등록되어야 합니다. 트라이얼 토큰은 메타 태그에 들어갑니다.

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="origin-trial" content="YOUR_TRIAL_TOKEN_HERE" />
</head>
<body>
  <textarea id="in" placeholder="Paste an API response..."></textarea>
  <button id="go">요약</button>
  <pre id="out"></pre>
  <script type="module">
    if (!('LanguageModel' in window)) {
      document.getElementById('out').textContent =
        'Prompt API not available in this browser.';
    } else {
      const session = await LanguageModel.create({
        systemPrompt: 'JSON으로 응답하십시오: { "summary": "...", "tags": [...] }',
        temperature: 0.2,
      });
      document.getElementById('go').onclick = async () => {
        const text = document.getElementById('in').value;
        const reply = await session.prompt(text);
        try {
          document.getElementById('out').textContent =
            JSON.stringify(JSON.parse(reply), null, 2);
        } catch {
          document.getElementById('out').textContent = reply;
        }
      };
    }
  </script>
</body>
</html>

Origin Trial 토큰 없이 페이지를 테스트하려면 `chrome://flags/#prompt-api-for-gemini-nano`를 열고 "Enabled"로 설정한 다음 Chrome을 다시 시작하십시오. 이 플래그는 지난 6개 버전에서 안정적이었지만 영구적으로 유지될 것이라고 약속된 것은 아닙니다. 예측 가능한 동작을 원한다면 Origin Trial 경로를 사용하십시오.

문서에서 충분히 강조하지 않는 한계 및 주의사항

여러분을 방해할 수 있는 여섯 가지 사항.

  1. 컨텍스트가 작습니다. 4K 입력, 1K 출력입니다. 공격적으로 잘라내세요. 50K 토큰 JSON 문서를 붙여넣고 유용한 답변을 기대하지 마십시오.
  2. 하드웨어 지원이 균일하지 않습니다. 모델은 약 4GB의 VRAM 또는 통합 메모리가 필요하며, Chrome 138+가 설치된 Windows, macOS, Linux, 최신 ChromeOS에서만 실행됩니다. 이 글을 쓰는 시점에는 모바일 Chrome이 지원되지 않습니다.
  3. 첫 로드가 느립니다. 2GB 다운로드는 백그라운드에서 발생하지만 첫 세션을 차단합니다. 항상 다운로드 진행 UI를 표시하십시오.
  4. 도구 호출이 없습니다. 작업에서 모델이 API를 호출해야 하는 경우, 클라이언트에서 직접 수행하십시오. 모델은 무엇을 호출할지만 결정합니다.
  5. 시스템 프롬프트 드리프트. 기기 내 모델은 클라우드 변형보다 시스템 프롬프트를 덜 엄격하게 따릅니다. 시스템 프롬프트에서 원샷 예제로 형식을 고정하십시오.
  6. 권한이 중요합니다. 확장 프로그램은 `permissions`에 `\"languageModel\"`이 필요합니다. 이를 잊으면 API는 조용히 `unavailable`을 반환합니다.

배포 전에 클라우드 폴백(Fallback)을 연결하세요

여러분의 앱은 모델이 없는 사용자에게도 배포됩니다. 항상 폴백을 연결하십시오. 패턴은 간단합니다:

async function summarize(text) {
  if ('LanguageModel' in window) {
    const status = await LanguageModel.availability();
    if (status === 'available') {
      const session = await LanguageModel.create({
        systemPrompt: '12단어 이내의 글머리 기호 요약으로 응답하십시오.',
      });
      return session.prompt(text);
    }
  }
  // 폴백: 서버를 호출하여 클라우드 Gemini 또는 사용자 고유의 모델을 호출합니다.
  const r = await fetch('/api/summarize', {
    method: 'POST', body: JSON.stringify({ text }),
  });
  return (await r.json()).summary;
}

개인 정보 보호 및 사용자에게 알려야 할 사항

Prompt API의 강점은 입력이 기기를 떠나지 않는다는 것입니다. 이는 현재 사실이며, 내장형 AI 이니셔티브의 명시적인 설계 의도입니다. 알아야 할 두 가지 자격 요건은 다음과 같습니다:

대부분의 소비자 앱에서 이는 법적 검토 없이 UI에 넣을 수 있는 강력한 개인 정보 보호 이야기입니다. 규제 대상 워크로드(HIPAA, PCI)의 경우, 의존하기 전에 변호사와 확인하십시오.

Prompt API를 건너뛰어야 할 때

다음과 같은 경우 클라우드 Gemini API를 대신 선택하십시오:

오픈 가중치 관점에서, 로컬에서 DeepSeek V4 실행 방법 게시물은 로컬 네트워크를 벗어나지 않고 개발자 머신에서 훨씬 더 큰 모델을 실행하는 방법을 다룹니다.

자주 묻는 질문

이미 클라우드 측 LLM 워크플로우를 함께 실행하는 팀의 경우, GPT-5.5란 무엇인가 게시물에서 클라우드 측의 장단점을 더 자세히 다루고, Apidog는 별도의 테스트 도구 없이 모의 및 폴백 연결을 처리합니다.

버튼

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요