대화 상태와 압축을 활용한 장기 실행 GPT-6 Astra 에이전트 구축 방법
previous_response_id, 대화, 명시적 상태, 컨텍스트 예산, 압축, 체크포인트 및 복구 패턴을 사용하여 내구성 있는 GPT-6 Astra 에이전트를 설계하세요.

장기 실행 에이전트는 단순히 방대한 대화 기록을 가진 챗봇이 아닙니다. 이는 유한한 컨텍스트 윈도우 내에서 목표, 완료된 작업, 도구 결과, 권한 및 미해결 결정을 유지해야 하는 상태 저장 시스템입니다. GPT-6 Astra는 1,050,000토큰 컨텍스트 윈도우, 지속적 추론 지원, 대화 상태 및 압축을 제공하지만, 워크플로우가 몇 시간 또는 며칠 후에도 일관성을 유지하는지는 여전히 아키텍처에 달려 있습니다.
네 가지 유형의 상태 분리
모든 이벤트를 대화 텍스트로 취급하면 복구가 어려워집니다. 별도의 계층을 유지하세요:
- 대화 상태: 사용자와 모델이 말한 내용.
- 태스크 상태: 목표, 계획, 제약 조건, 완료된 단계 및 차단 요소.
- 세계 상태: 데이터베이스, 파일, 티켓 및 기타 외부 시스템의 기록.
- 실행 상태: 도구 호출 ID, 멱등성 키, 승인, 재시도 및 체크포인트.
오직 첫 번째 레이어만이 자연스럽게 대본에 속합니다. 나머지 세 개는 애플리케이션이 소유한 표현을 가져야 합니다. 모델이 이를 업데이트하는 데 도움을 줄 수는 있지만, 유일한 기록 시스템이 되어서는 안 됩니다.
응답을 계속하는 두 가지 방법
가장 간단한 연속 메커니즘은 previous_response_id입니다:
const first = await client.responses.create({
model: "gpt-6-astra",
input: "마이그레이션을 위한 구현 계획을 초안 작성하세요."
});
const next = await client.responses.create({
model: "gpt-6-astra",
previous_response_id: first.id,
input: [{ role: "user", content: "인증 모듈부터 시작하세요." }]
});
이것은 응답 체인을 생성합니다. 세션에는 편리하지만, 요금 청구 단축 방법은 아닙니다. OpenAI는 체인의 이전 입력 토큰이 입력으로 청구된다고 문서화하고 있습니다. store: false를 사용하지 않는 한, 응답은 기본적으로 30일 동안 저장됩니다.
내구성 있는 스레드를 사용하려면 Conversations API를 사용하세요. 대화에는 메시지, 도구 호출 및 도구 출력이 포함될 수 있으며 세션, 기기 또는 작업 간에 재사용할 수 있습니다. 대화 객체는 30일 응답 TTL의 적용을 받지 않습니다. 요청은 conversation과 previous_response_id를 동시에 사용할 수 없습니다. 의도적으로 상태 모델을 선택하세요.
필요하기 전에 컨텍스트 예산을 세우세요
컨텍스트에는 입력, 출력 및 추론 토큰이 포함됩니다. 모델이 한도에 도달할 때까지 기다리지 마십시오. 다음 도구 결과와 최종 답변을 위한 공간을 확보한 다음, 임계값을 넘기 전에 압축하거나 정리하십시오.
유용한 예산은 다음 항목에 비율을 할당할 수 있습니다:
- 내구성 있는 지침 및 도구;
- 현재 작업 요약;
- 최근 대화 내용;
- 검색된 증거;
- 예상되는 추론 및 출력;
- 비정상적으로 큰 도구 결과에 대한 비상 여유분.
큰 컨텍스트는 가격에도 영향을 미칩니다. GPT-6 Astra 모델 페이지에는 입력이 272K 토큰을 초과하는 요청에 대해 전체 요청에 더 높은 요율이 적용된다고 명시되어 있습니다. 이 임계값은 전체 창이 거의 소진되지 않았더라도 초기 컨텍스트 관리가 재정적으로 중요해지게 만듭니다.
컴팩션이 하는 일
압축은 이전 맥락을 줄이면서도 향후 대화에 필요한 정보를 유지합니다. OpenAI는 명시적인 /responses/compact 엔드포인트와 자동 맥락 관리를 제공합니다. 반환된 압축 자료는 불투명합니다. 이를 구문 분석하거나 편집하거나 사용자에게 보여주는 요약으로 취급하지 말고, 지시된 대로 그대로 전달하십시오.
의미적 이정표에서 압축:
- 연구가 종합되고 원시 소스 탐색이 더 이상 필요하지 않은 경우;
- 코드 단계가 테스트를 통과한 후;
- 사용자가 요금제를 승인한 후;
- 새로운 독립 단계를 시작하기 전에;
- 측정된 컨텍스트가 계획된 임계값에 근접할 때.
매 턴마다 압축하지 마세요. 작업이 늘어나고 유용한 로컬 세부 정보가 사라질 수 있으며, 재사용 가능한 프롬프트 접두사가 변경되어 프롬프트 캐시 동작에 영향을 줄 수 있습니다.
const compacted = await client.responses.compact({
model: "gpt-6-astra",
input: accumulatedItems
});
// Persist the returned compacted items and use them as the base for later work.
정확한 타입은 현재 SDK 참조를 사용하세요. 베타 및 SDK 표면은 변경될 수 있습니다. 불투명한 출력을 변경하지 않고 유지하는 것이 지속 가능한 규칙입니다.
작업을 체크포인트하세요, 단어만이 아니라
프로덕션 체크포인트는 다음을 기록해야 합니다:
- 사용자에게 보이는 목표 및 최종 승인된 범위;
- 완료된 단계 및 검증 증거;
- 보류 중인 도구 호출 및 승인 상태;
- 외부 리소스 식별자 및 버전;
- 출처가 명확한 중요한 결정들; 또는 대화 식별자;
- 단조로운 체크포인트 버전.
애니메이션 워크플로우가 대본을 승인하고, 캐릭터 레퍼런스를 생성했으며, 씬 조립을 시작했다고 가정해 보겠습니다. 에이전트는 애플리케이션 데이터에 에셋 ID, 승인 내역, 씬 상태를 저장해야 합니다. Elser AI와 같은 플랫폼은 창작 에셋의 자연스러운 저장소이지만, 오케스트레이션 레이어는 여전히 명시적인 상태가 필요하므로 재개된 에이전트가 승인된 씬을 다시 생성하지 않습니다.
중단 후 복구
최소 한 번 실행을 위한 설계입니다. 도구가 실행된 후 클라이언트가 결과를 받기 전에 연결이 끊어질 수 있습니다. 모든 상태를 변경하는 도구는 멱등성 키를 허용하거나 쓰기 전 읽기 확인을 지원해야 합니다. 재개 시:
- 가장 최근에 커밋된 체크포인트를 로드합니다;
- 불확실한 작업을 위해 외부 상태를 점검하십시오.
- 통화 또는 멱등성 ID로 도구 결과를 조정합니다;
- 컴팩트된 상태와 최근 이벤트로부터 컨텍스트를 재구축합니다;
- 명시적으로 보류된 작업부터 모델이 계속 진행하도록 요청합니다.
크래시 후 구조화된 상태 없이 모델에게 "계속"이라고 말하지 마세요. 모델이 작업을 반복하거나 잘못된 마일스톤을 추론할 수 있습니다.
컴팩션과 비즈니스 메모리를 분리하세요
압축은 모델에 최적화된 컨텍스트입니다. 비즈니스 메모리는 애플리케이션을 위한 내구성 있고 검사 가능한 기록입니다. 불투명한 압축 항목과 함께 간결하고 사람이 읽을 수 있는 작업 원장을 유지하십시오. 원장을 통해 운영자는 결정을 감사하고, 모델을 마이그레이션하며, 응답 체인을 사용할 수 없는 경우 복구할 수 있습니다.
좋은 원장은 설득력 있는 문장이 아닌 사실을 담고 있습니다. 예를 들어: "고객이 14:32 UTC에 계획 v7을 승인했습니다"는 "고객이 계획에 만족한 것 같았습니다"보다 더 강력합니다. 도구에서 가져온 주장의 출처 ID를 저장하세요.
장기 실행을 위한 품질 관리
최종 답변 정확도 이상을 테스트하세요. 측정 항목:
- 20, 50, 100턴 후 목표 유지;
- 주입된 연결 해제 후 중복 부작용;
- 컴팩션 후 올바른 재개;
- 도구 결과 출처;
- 인증 지속성 및 만료;
- 마일스톤당 비용;
- 작업 원장과 외부 상태 간의 차이.
이전 메시지가 새로운 지시와 충돌하거나, 도구가 거대한 페이로드를 반환하거나, 에이전트가 일시 중지된 동안 승인이 만료되는 적대적 테스트를 포함하세요. 장기 실행 신뢰성은 주로 전환에 관한 것입니다.
자주 묻는 질문
Conversations 또는 previous_response_id를 사용해야 하나요?
previous_response_id는 간단한 응답 체이닝에 사용하세요. 세션이나 작업 간에 재사용할 수 있는 내구성 있는 객체가 필요할 때는 Conversation을 사용하세요. 동일한 요청에 둘을 함께 제공할 수 없습니다.
백만 토큰 윈도우가 압축을 없앨까요?
비용, 지연 시간, 관련성, 그리고 문서화된 긴 컨텍스트 가격 임계값 모두가 하드 리밋 이전에 컨텍스트 관리를 유용하게 만듭니다.
압축된 콘텐츠를 편집할 수 있나요?
압축된 항목들은 불투명하게 처리하세요. 자신의 편집 가능한 작업 기록은 별도로 유지하세요.
store: false는 무엇을 변경하나요?
응답의 기본 저장을 비활성화합니다. 그러면 애플리케이션이 필요한 상태를 명시적으로 보유하고 자체 보존 및 복구 요구 사항을 충족해야 합니다.
결론
내구성 있는 GPT-6 Astra 에이전트는 API로 관리되는 대화 연속성과 애플리케이션이 소유한 작업 및 실행 상태를 결합합니다. 응답을 의도적으로 연결하거나 유지하고, 비용이 많이 들기 전에 컨텍스트를 예산에 맞추며, 마일스톤에서 압축하고, 불투명한 압축 항목을 보존하며, 모든 외부 작업을 복구 가능하게 만듭니다. 그 결과는 단순히 긴 대화를 기억하는 것이 아니라 안전하게 작업을 재개할 수 있는 에이전트입니다.






























































































