Cloudflare Workers에서 AI 상담 지시문 안전하게 관리하기 - Nari-Natural-AI-for-Reflecting-Insight/Nari-Workers-Relay GitHub Wiki

Cloudflare Workers에서 AI 상담 지시문 안전하게 관리하기

현재 서비스에서 AI는 일일 심리상태를 체크하는 상담사 역할을 하고있어요 AI가 항상 같은 톤과 순서로 질문을 이어가려면 지시문(프롬프트)이 반드시 필요하며, 이 지시문에는 상담 시 사용할 대화 규칙, 질문 순서, 응답 방식 등이 담겨 있어요 따라서 코드를 작성할 때 지시문을 직접 포함시키기보다, 별도로 안전하게 저장해두고 실행 시에만 불러와 AI에게 전달하는 방식이 더 좋습니다. Cloudflare Workers KV를 사용하면 이러한 긴 지시문을 안전하게 보관할 수 있고, 필요할 때 Worker 코드에서 바로 불러올 수 있어요


1. KV 네임스페이스 만들기

먼저 KV 네임스페이스를 만들어야 해요.
프로젝트 루트(wrangler.toml이 있는 위치)에서 다음 명령을 실행해요.

wrangler kv namespace create NARI_KV

실행하면 id가 나오는데, 이 값을 다음 단계에서 wrangler.toml에 넣어야 해요.

2. wrangler.toml에 KV 바인딩 추가하기

[[kv_namespaces]]
binding = "NARI_KV"
id = "<개발용 id>"
  • binding 값은 Worker 코드에서 사용하는 이름이에요.
  • 개발/운영 환경을 나눌 거라면 env.production 블록에 따로 작성하면 돼요.

3. 지시문 업로드하기

지시문을 daily_psychology_check_instructions_kv.md 파일로 저장했다고 가정할게요. 다음 명령으로 KV에 업로드하면 돼요.

wrangler kv key put \
  --binding=NARI_KV \
  daily_psychology_check_instructions \
  --path=./daily_psychology_check_instructions_kv.md \
  --metadata='{"version":"2025-08-09","lang":"ko"}'
  --remote
  • --path 옵션을 쓰면 파일 내용을 그대로 KV 값으로 저장해요.
  • --metadata 옵션은 버전이나 언어 정보처럼 부가 데이터 넣을 때 써요.

4. Worker에서 불러오기

interface Env {
  NARI_KV: KVNamespace;
}

export default {
  async fetch(req: Request, env: Env) {
    const instruction = await env.NARI_KV.get(
      "daily_psychology_check_instructions",
      "text"
    );

    return new Response(instruction || "No instruction found", {
      headers: { "content-type": "text/plain; charset=utf-8" }
    });
  }
} satisfies ExportedHandler<Env>;
  • "text"를 지정하면 문자열로 바로 받을 수 있어요.
  • JSON 데이터면 "json"을 쓰면 돼요.
⚠️ **GitHub.com Fallback** ⚠️