SDK도 프롬프트의 실제 행동을 바꿔
SDK마다 재시도, 스트리밍, 취소, 도구 반복을 다르게 처리하므로 같은 프롬프트도 감싼 SDK에 따라 다르게 움직여. 여러 제공업체를 잇는 코드에서 가장 흔한 운영 버그가 여기서 나와.
재시도
- 대부분 일시 오류를 지수형 대기로 다시 시도하지만 기본 횟수는 달라.
- 429 재시도는 보통 안전하지만 도구 호출 중 5xx 재시도는 부작용을 두 번 실행할 수 있어.
- 멱등하지 않은 행동은 SDK 자동 재시도를 끄고 애플리케이션이 멱등성 키로 다뤄.
스트리밍
- Anthropic의 content_block_delta와 OpenAI의 choices[0].delta처럼 사건 모양이 달라.
- 도구 인수는 조각으로 오므로 끝까지 모아야 해.
- 스트림 중 ‘connection closed’를 성공으로 착각하지 마.
취소
- 대부분 스트림을 실제로 닫아야 청구도 멈춰.
- Python 비동기 생성기에 asyncio.wait_for를 씌우지 말고 각 조각을 기다리며 취소 범위를 써.
- 에이전트 취소는 실행 중인 도구에도 전달해야 뒤 작업과 청구가 멈춰.