순차적 에이전트 루프의 토큰 지연 시간 해결(병렬 도구 호출 수정) 및 효과적인 방법 공유
fixing token latency in sequential agent loops (Parallel Tool Calling fix) and this method worked for me well.
핵심 요약
에이전트 루프에서 asyncio.gather를 사용하여 도구 호출을 병렬로 처리함으로써 응답 속도를 개선하는 방법을 설명합니다.
- 에이전트 성능 최적화 — 순차적 도구 호출로 인한 병목 현상을 병렬 처리로 해결함.
- 병렬 실행 구현 — asyncio.gather를 사용하여 여러 도구를 동시에 호출하도록 개선함.
- 지연 시간 단축 — 전체 실행 시간을 가장 느린 도구 하나가 걸리는 시간으로 줄임.
- 커뮤니티 협업 — 에이전트 코드 루프 최적화를 위한 전용 워크스페이스를 운영함.
다단계 에이전트 루프를 구축하다 보면, 두 작업이 서로 의존적이지 않은데도 에이전트가 도구 A가 완전히 끝날 때까지 기다렸다가 도구 B를 시작하는 병목 현상을 겪어보셨을 겁니다. 순차적 실행은 사용자 경험을 완전히 망칩니다. 여기 파이썬의 asyncio를 사용하여 에이전트 오케스트레이션 루프 내에서 강제로 병렬 도구 실행을 수행하게 하는 간단한 아키텍처 수정 방법이 있습니다.
느린 방식: 순차적 실행
import asyncio
async def sequential_run(): result_a = await call_tool_a() # 2.5초 대기 result_b = await call_tool_b() # 2.0초 대기 return [result_a, result_b] # 총 시간: 4.5초
빠른 방식: 병렬 실행
import asyncio
async def parallel_run(): # 두 도구 호출을 동시에 실행 results = await asyncio.gather( call_tool_a(), call_tool_b() ) return results # 총 시간: ~2.5초 (가장 느린 도구 기준)
LLM의 tool_calls JSON 배열을 파싱할 때, 일반적인 for 루프로 순회하지 마세요. 대신 async gather 블록으로 매핑하세요. 이렇게 하면 모든 도구의 응답 시간을 합치는 대신, 가장 느린 도구 하나가 걸리는 시간으로 전체 실행 지연 시간을 줄일 수 있습니다. 이 코드에 대한 오류나 수정 사항이 있다면 알려주세요.🤗
저는 이런 다중 에이전트 성능 병목 현상을 자주 겪어서, 깔끔한 에이전트 코드 루프를 함께 만들고 싶은 분들을 위해 r/AI_Agentic_Devs에 전용 워크스페이스를 만들었습니다.


