도구 정의와 누적된 tool_result 블록은 컨텍스트 윈도우를 소비합니다. 많은 도구나 많은 턴을 가진 장시간 실행되는 에이전트는 작업이 완료되기 전에 사용 가능한 컨텍스트를 소진할 수 있습니다. 네 가지 접근 방식이 파이프라인의 다양한 지점에서 이 문제를 해결합니다.
각 접근 방식은 컨텍스트 압력의 다른 원인을 목표로 합니다. 토큰이 어디로 가는지와 일치하는 접근 방식을 선택하세요.
| 접근 방식 | 감소시키는 것 | 적합한 경우 | 자세히 알아보기 |
|---|---|---|---|
| 도구 검색 | 미리 로드된 도구 정의 | 대부분의 도구가 매 턴마다 필요하지 않은 대규모 도구 세트(20개 이상의 도구) | 도구 검색 도구 |
| 프로그래밍 방식의 도구 호출 | tool_result 왕복 | 단일 스크립트로 실행할 수 있는 도구 호출 체인 | 프로그래밍 방식의 도구 호출 |
| 프롬프트 캐싱 | 반복된 도구 정의의 토큰 비용 | 많은 요청에서 안정적인 도구 세트 | 프롬프트 캐싱을 사용한 도구 사용 |
| 컨텍스트 편집 | 히스토리의 이전 tool_result 블록 | 초기 결과가 더 이상 관련이 없는 긴 대화 | 컨텍스트 편집 |
도구 검색은 Claude가 요청할 때까지 도구 정의를 컨텍스트 윈도우 밖에 유지합니다. 50개의 도구 스키마를 미리 보내는 대신, 단일 tool_search 도구를 보내고 Claude가 필요에 따라 나머지를 발견하도록 합니다. 이는 약간의 지연(도구를 조회하기 위한 추가 턴)을 기본 컨텍스트 사용량의 큰 감소로 교환합니다.
프로그래밍 방식의 도구 호출은 도구 호출 시퀀스를 Claude가 작성하고 Anthropic의 코드 실행 샌드박스가 실행하는 단일 코드 블록으로 축소합니다. tool_use와 tool_result의 5번의 왕복 대신, Claude는 샌드박스 내에서 5개의 함수를 모두 호출하는 하나의 스크립트를 내보냅니다. 중간 결과는 대화 히스토리에 들어가지 않습니다.
프롬프트 캐싱은 컨텍스트의 토큰 수를 줄이지는 않지만, 후속 요청에서 이들에 대해 지불하는 비용을 줄입니다. 도구 정의가 안정적이면, 한 번 캐시하고 수천 개의 요청에서 캐시된 접두사를 재사용합니다. 이는 도구 세트가 크지만 고정되어 있을 때 올바른 선택입니다.
컨텍스트 편집은 이전 tool_result 블록이 목적을 달성한 후 대화 히스토리에서 제거합니다. 긴 에이전트 루프는 당시에는 유용했지만 이제는 불필요한 수백 개의 중간 결과를 생성할 수 있습니다. 컨텍스트 편집을 사용하면 대화를 다시 시작하지 않고도 이들을 정리할 수 있습니다.
이러한 접근 방식들은 구성됩니다. 장시간 실행되는 에이전트는 도구 검색을 사용하여 도구 세트를 간결하게 유지하고, 프롬프트 캐싱을 사용하여 남은 정의의 비용을 분산하고, 대화가 증가함에 따라 컨텍스트 편집을 사용하여 오래된 결과를 정리할 수 있습니다. 각각이 문제의 다른 부분을 해결하므로, 함께 사용하는 데 충돌이 없습니다.
고용량 에이전트를 위한 합리적인 시작점:
미리 로드하는 대신 필요에 따라 도구 정의를 로드합니다.
도구 호출 체인을 단일 실행 가능한 스크립트로 축소합니다.
요청 전체에서 도구 정의를 캐시하여 토큰 비용을 절감합니다.
장시간 실행되는 대화에서 오래된 도구 결과를 정리합니다.
Was this page helpful?