Cloudflare Workers에서 AI 상담 지시문 안전하게 관리하기 - Nari-Natural-AI-for-Reflecting-Insight/Nari-Workers-Relay GitHub Wiki
현재 서비스에서 AI는 일일 심리상태를 체크하는 상담사 역할을 하고있어요 AI가 항상 같은 톤과 순서로 질문을 이어가려면 지시문(프롬프트)이 반드시 필요하며, 이 지시문에는 상담 시 사용할 대화 규칙, 질문 순서, 응답 방식 등이 담겨 있어요 따라서 코드를 작성할 때 지시문을 직접 포함시키기보다, 별도로 안전하게 저장해두고 실행 시에만 불러와 AI에게 전달하는 방식이 더 좋습니다. Cloudflare Workers KV를 사용하면 이러한 긴 지시문을 안전하게 보관할 수 있고, 필요할 때 Worker 코드에서 바로 불러올 수 있어요
먼저 KV 네임스페이스를 만들어야 해요.
프로젝트 루트(wrangler.toml
이 있는 위치)에서 다음 명령을 실행해요.
wrangler kv namespace create NARI_KV
실행하면 id가 나오는데, 이 값을 다음 단계에서 wrangler.toml에 넣어야 해요.
[[kv_namespaces]]
binding = "NARI_KV"
id = "<개발용 id>"
- binding 값은 Worker 코드에서 사용하는 이름이에요.
- 개발/운영 환경을 나눌 거라면 env.production 블록에 따로 작성하면 돼요.
지시문을 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
옵션은 버전이나 언어 정보처럼 부가 데이터 넣을 때 써요.
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"
을 쓰면 돼요.