Gemini Nano로 완전 로컬 프롬프트 향상 Chrome 확장 프로그램을 만들었습니다
Source: Dev.to
문제: 프롬프트를 충분히 명시하지 않음
대부분의 사람들은 ChatGPT(또는 다른 LLM)를 검색창처럼 사용합니다: 반쯤 떠오른 생각을 입력하고 Enter를 눌러 마법을 기대하죠. 결과는 보통 괜찮지만, 뛰어나지는 않습니다.
흔히 발생하는 문제
- 수준, 맥락, 제약조건이 없는 “시험을 위해 이 주제를 설명해줘” 같은 모호한 프롬프트.
- 입력/출력 형식, 엣지 케이스, 성능 제약이 명시되지 않은 코딩 요청.
- 대상 독자, 톤, 길이가 빠진 글쓰기 과제.
잘 설계된 프롬프트는 다음을 가능하게 합니다:
- 여러 차례의 왕복을 줄인다.
- 더 신뢰할 수 있고 테스트 가능한 결과물을 만든다(특히 코드와 분석에 대해).
- AI 도구를 실제 워크플로우에서 실제로 활용할 수 있게 만든다.
아이디어
보통처럼 타이핑하고, 한 번의 버튼 클릭으로 거친 텍스트를 고품질 프롬프트로 바꿀 수 있다면 어떨까요?
Prompt Enhancer는 ChatGPT 위에 정확히 그 기능을 추가합니다. 워크플로우를 바꾸지 않으면서 약간의 초능력을 부여합니다.
사용자 관점에서의 작동 방식
- 확장 프로그램을 설치하고 활성화합니다.
- Chrome에서 ChatGPT를 엽니다.
- 입력창에 거친 아이디어를 입력합니다.
- 텍스트 영역 옆에 작은 “Enhance” 버튼이 나타납니다.
- Enhance를 클릭(또는 키보드 단축키 사용) → 잠시 기다리면 → 거친 텍스트가 다듬어진 구조화된 프롬프트로 교체됩니다.
향상된 프롬프트는 일반적으로:
- 누락된 맥락(대상, 제약조건, 형식)을 추가합니다.
- 작업을 명확히 합니다(요약 vs 비평 vs 생성 vs 설명).
- 출력 형식을 지정합니다(불릿 리스트, 표, 주석이 포함된 코드 등).
다시 작성된 프롬프트를 검토하고 필요하면 수정한 뒤, 평소처럼 Enter를 누르면 됩니다.
키보드 단축키
구성 가능한 단축키를 통해 파워 유저는 전 과정을 키보드만으로 진행할 수 있습니다:
Type → Enhance → Enter
기술 아키텍처
Prompt Enhancer는 Manifest V3 Chrome 확장 프로그램으로, 세 가지 주요 구성 요소로 이루어져 있습니다:
manifest.json– 권한, 콘텐츠 스크립트 매치, 기타 메타데이터 선언.- 콘텐츠 스크립트 – ChatGPT DOM과 상호작용하고, Enhance 버튼을 삽입하며, 이벤트를 처리.
- Prompt API 연동 – 내장된 Gemini Nano 모델을 로컬에서 호출.
Manifest V3 기본 구조
{
"manifest_version": 3,
"name": "Prompt Enhancer",
"version": "1.0",
"description": "Rewrite rough prompts into high‑quality prompts for ChatGPT using Gemini Nano.",
"permissions": ["activeTab", "scripting"],
"host_permissions": ["https://chat.openai.com/*"],
"content_scripts": [
{
"matches": ["https://chat.openai.com/*"],
"js": ["contentScript.js"]
}
]
}
- 최소 권한을 부여해 확장 프로그램을 안전하게 유지하고 Chrome Web Store 검토를 간소화합니다.
- 콘텐츠 스크립트는 ChatGPT 페이지를 감지하고, 주요 텍스트 영역을 찾아 부동형 Enhance 버튼을 삽입한 뒤 클릭/키보드 이벤트를 청취합니다.
- ChatGPT UI는 자주 변경되는 React 앱이므로, 스크립트는 안정적인 셀렉터, 폴백 휴리스틱(예: “가장 큰 textarea”) 및 **
MutationObserver**를 사용해 재렌더링 후에도 버튼을 재배치합니다.
Prompt API를 통한 Gemini Nano 연동
// Example of creating a Gemini Nano model instance
if (chrome.ai && chrome.ai.languageModel) {
const model = await chrome.ai.languageModel.create({
temperature: 0.2,
topK: 40,
// other model options...
});
const metaPrompt = `
You are a prompt‑engineering assistant. Rewrite the user's text as a clear,
detailed prompt that specifies context, output format, and constraints,
without changing the core intent.
`;
const response = await model.prompt(`${metaPrompt}\nUser: ${roughText}`);
// `response` now contains the enhanced prompt
}
- 로컬 실행이므로 지연 시간이 낮고 예측 가능하며 네트워크 왕복이 없습니다.
- Chrome이 Gemini Nano를 제공하는 한, Wi‑Fi가 꺼져 있어도 확장 프로그램이 동작합니다.
- Gemini Nano는 아직 초기 단계이므로 방어적인 오류 처리가 필요합니다; 모델을 사용할 수 없을 경우 친절한 대체 메시지를 표시합니다.
현재 제공되는 기능 (v1)
- ChatGPT 프롬프트 텍스트 영역에 떠다니는 “Enhance” 버튼.
- Gemini Nano를 이용한 온‑디바이스 프롬프트 향상, Chrome Prompt API 사용.
- 외부 API나 API 키가 전혀 필요 없는 완전 로컬 처리.
- 파워 유저를 위한 키보드 단축키 지원.
- ChatGPT와 자연스럽게 어우러지는 최소한의 네이티브 UI.
이 확장 프로그램은 Chrome 웹 스토어에 공개되어 있으며, 다른 확장 프로그램처럼 설치할 수 있습니다.
배운 점
- 권한 및 프라이버시: 어떤 데이터에 접근하고 왜 필요한지 명확히 설명합니다.
- 사용자 흐름이 모델보다 중요: 타이핑 흐름을 방해하지 않으며, 빠른 시각적 피드백을 제공하고 원래 의도를 존중합니다.
- 초기 채택 트레이드오프: 일부 사용자는 플래그를 활성화하거나 Dev/Canary 빌드를 사용해야 할 수 있으므로, 견고한 폴백 메시지가 필수입니다.
Prompt Enhancer는 로컬 LLM을 중심으로 간단하고 잘 통합된 UX가 일상적인 AI 활용을 얼마나 크게 향상시킬 수 있는지를 보여줍니다.