Show GN: Ephemeral System Prompt - 실행마다 달라지는 지시사항을 넣고도 프롬프트 캐시 유지하기
요약
maestro-agent-sdk v0.2.3에 추가된 ephemeralSystemPrompt 기능을 소개합니다. 시스템 프롬프트의 캐시 효율을 유지하면서도 실행 시마다 변하는 동적 지시사항을 효과적으로 주입하는 방법을 다룹니다.
핵심 포인트
- 프롬프트 캐시 유지를 위해 안정적인 시스템 프롬프트와 동적 지시사항을 분리
- ephemeralSystemPrompt는 첫 번째 유저 메시지에 임시로 추가되어 캐시 연속성 확보
- 대화 기록이나 세션 파일에 저장되지 않으며 subagent로 자동 전달되지 않음
- 보안 정책 등 핵심 규칙은 기존 시스템 프롬프트에 유지할 것을 권장
LLM 에이전트를 만들다 보면 시스템 프롬프트는 유지하면서도 현재 시각, 세션 상태, 호스트 정책처럼 실행마다 달라지는 지시사항을 추가해야 할 때가 있습니다.
하지만 이런 내용을 시스템 프롬프트에 직접 합치면 매번 프롬프트 prefix가 달라져 provider의 prompt caching을 제대로 활용하기 어렵습니다.
maestro-agent-sdk
v0.2.3에 추가한 ephemeralSystemPrompt
는 이를 위해 만든 기능입니다.
for await (const event of maestroProvider({
agent: "maestro",
systemPrompt: stableBasePrompt,
ephemeralSystemPrompt: currentRuntimeInstructions,
prompt: userMessage,
})) {
// ...
}
ephemeralSystemPrompt
는 실제 system prompt를 수정하지 않고, provider에 요청을 보낼 때 invocation의 첫 user 메시지에 임시로 추가됩니다.
- 안정적인 system prompt와 기존 대화 prefix는 그대로 유지
- tool 호출이 반복되는 동안 같은 위치에 고정되어 cache continuity 유지
- 대화 기록, compaction, session 파일에는 저장되지 않음
- subagent에는 자동으로 전달되지 않음
- 합쳐진 요청이 context window를 넘으면 provider 호출 전에 오류 처리
단, 이 값은 provider-native system role이 아니라 host가 신뢰하는 런타임 지시사항입니다. 보안 규칙이나 반드시 지켜야 하는 정책은 기존 system prompt에 두는 것이 맞습니다.
외부 요청이 새로 시작될 때는 이전 ephemeral instruction이 사라지는 지점부터 한 번 다시 계산해야 하지만, 하나의 tool loop 안에서는 캐시 가능한 prefix가 계속 확장됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기