ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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가 자동으로 관리해주긴 하지만, 그만큼 시스템 내부 처리 과정이 많아집니다.

     


    주요 원인 정리

    1. Thread 및 Message 구조의 오버헤드
      대화 내역이 thread로 저장되고, 메시지들이 이 thread에 쌓이게 됩니다. 새로운 message를 추가하고 run을 생성할 때마다 OpenAI는 이 과정을 백엔드에서 복원하고 처리하는 작업을 거칩니다.
    2. 자동 컨텍스트 정리 및 압축 로직
      메시지가 많아질수록 context 압축 및 정리 작업이 내부적으로 발생합니다. 예전 메시지를 포함할지 말지를 LLM이 판단하게 되는데, 이 과정에서도 시간이 소요됩니다.
    3. 툴 사용 여부 판단 흐름 존재
      명시적으로 Tool을 사용하지 않더라도, OpenAI는 매번 "툴을 써야 하나?"라는 판단 과정을 거칩니다. 이게 비어 있는 툴셋이더라도 시스템은 내부 브랜치를 타게 되어 약간의 시간이 소요됩니다.
    4. 비동기 처리 기반 구조 (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
    반응형
Designed by Tistory.