-
OpenAI Assistants API가 느린 이유와 성능 개선 팁프로그래밍/기계학습 2025. 4. 30. 09:10반응형
최근 OpenAI에서 공개한 Assistants API를 활용한 프로젝트를 진행하면서, 기존 chat/completions API보다 응답 속도가 체감상 많이 느리다는 느낌을 받았습니다. 단순히 기능이 많아서 그런 것일까 싶었는데, 실제로 내부 구조를 파악해보니 명확한 원인이 존재했습니다. 이 글에서는 Assistants API의 속도가 느려지는 이유와 이를 개선할 수 있는 방법들을 정리해보려고 합니다.
왜 느릴까? Assistants API의 구조적 특성
먼저 기존 chat/completions API와 달리, Assistants API는 대화를 thread와 message라는 구조로 분리해서 관리합니다. 이 구조 덕분에 대화 문맥을 따로 보내지 않아도 OpenAI가 자동으로 관리해주긴 하지만, 그만큼 시스템 내부 처리 과정이 많아집니다.
주요 원인 정리- Thread 및 Message 구조의 오버헤드
대화 내역이 thread로 저장되고, 메시지들이 이 thread에 쌓이게 됩니다. 새로운 message를 추가하고 run을 생성할 때마다 OpenAI는 이 과정을 백엔드에서 복원하고 처리하는 작업을 거칩니다. - 자동 컨텍스트 정리 및 압축 로직
메시지가 많아질수록 context 압축 및 정리 작업이 내부적으로 발생합니다. 예전 메시지를 포함할지 말지를 LLM이 판단하게 되는데, 이 과정에서도 시간이 소요됩니다. - 툴 사용 여부 판단 흐름 존재
명시적으로 Tool을 사용하지 않더라도, OpenAI는 매번 "툴을 써야 하나?"라는 판단 과정을 거칩니다. 이게 비어 있는 툴셋이더라도 시스템은 내부 브랜치를 타게 되어 약간의 시간이 소요됩니다. - 비동기 처리 기반 구조 (run polling)
메시지를 전송하고 바로 응답이 오는 것이 아니라, run이라는 실행 단위를 생성하고 상태를 조회해야 합니다. 이 polling 방식 때문에 체감 속도는 기존 API 대비 1~3초 정도 느려지는 경우가 많습니다.
즉 OpenAI Assistants API가 느린 이유는 단순히 툴 때문만은 아니고 "어시스턴츠 아키텍처 자체의 구조적인 오버헤드" 때문입니다.
이런 상황에서도 툴(벡터 서치 등)을 사용하면 속도가 일반 대화 용도로는 쓰기 힘들정도로 느려집니다...
성능 개선을 위한 팁
실제 프로젝트에서 아래와 같은 방법들을 적용해보니 꽤 만족스러운 개선 효과를 얻을 수 있었습니다.
1. stream: true 옵션 사용
초기 응답까지 기다리지 않고, 응답이 나오는 순간부터 스트리밍으로 받아볼 수 있어 체감 속도가 상당히 개선됩니다. 다만 클라이언트에서 SSE(Server-Sent Events) 처리를 따로 해주어야 합니다.
2. 툴 사용 안 할 경우 명시적으로 비워두기
"tools": []이렇게 설정하면 시스템이 툴 사용 여부를 판단하는 로직을 생략할 수 있어 불필요한 판단 과정을 줄일 수 있습니다.
3. thread_id 관리 전략 고민하기
사용자마다 하나의 thread를 계속 사용하는 방식은 문맥 유지에는 효과적이지만, 시간이 지날수록 메시지 수가 누적되며 속도와 비용 측면에서 불리해질 수 있습니다.
가능하면 대화별로 thread 생성이나 최신 thread만 유지하고 이전 대화는 요약해서 새로운 thread로 이전하는 방식이 적절합니다.4. 단순 대화는 chat/completions API로 처리
문맥 유지나 Tool 사용이 불필요한 경우에는 기존 Chat API를 사용하는 것이 속도나 비용 측면에서 더 효율적입니다. 필요한 경우 이전 대화를 직접 prompt에 붙여서 보내면 되므로, 상황에 따라 선택적으로 사용하시는 걸 추천드립니다.
OpenAI의 Assistants API는 정말 강력한 기능을 제공하지만, 그만큼 구조적으로 복잡합니다. 무조건 새 API가 더 낫다고 보기보다는, 상황에 맞게 선택하고 구성하는 것이 중요하다고 느꼈습니다.
문진형 대화처럼 컨텍스트가 중요한 경우엔 Assistants API가 좋은 선택이지만, 간단한 QA 챗봇이나 응답 속도가 중요한 경우엔 기존 Chat API도 여전히 유용합니다.728x90반응형'프로그래밍 > 기계학습' 카테고리의 다른 글
어플에서 동일한 코드지만 기기에 따라 음성인식이 안 되는 이유 (0) 2025.04.01 cursor.ai에 사용자 규칙 추가하기 (0) 2025.04.01 colab 에서 Llama 3 튜닝하기 - 하드웨어 가속기 선택하기 (0) 2025.03.13 페이스북 Llama 3 사용 후기 (1) 2025.03.12 윈도우에서 GPU VRAM 사양 확인하기 (0) 2025.03.12 - Thread 및 Message 구조의 오버헤드