최근 한 유능한 학자로부터 Botpress 과 LLMs 의 인터페이스 방법을 묻는 이메일을 받았습니다.
그는 벤더 종속을 피하기 위한 논문을 쓰고 있었는데, 우리가 LangChain이나 Haystack과 같은 프레임워크를 사용하는지 알고 싶어했습니다.
저는 Botpress 빌더가 LLMs 과 인터페이스할 수 있는 자체 추상화를 만들었다는 사실을 그와 공유하게 되어 기뻤습니다.
이 주제에 대한 관심이 높아짐에 따라 이 정보를 공개하고 싶었습니다. 다른 개발자나 저희 플랫폼 사용자들에게도 도움이 될 수 있을 것입니다. 제가 이 자료를 만들면서 느꼈던 흥미로움을 여러분도 느끼셨으면 좋겠습니다.
Botpress 인터페이스하는 두 가지 방법 LLMs
Botpress 는 두 가지 방식으로 작동하는 자체 추상화를 만들었습니다:
1. 통합
통합에는 특정 입력 및 출력 유형이 있는 작업의 개념이 있습니다.
플랫폼에 오픈 소스 구성 요소가 있으므로 커뮤니티는 비공개 또는 공개용으로 사용할 수 있는 자체 통합을 만들 수 있습니다.
따라서 LLM 제공업체( OpenAI, Anthropic, Groq 등)는 각각 통합 기능을 제공합니다. - 각각 통합 기능이 있습니다. 이는 사용자가 이들과 인터페이스할 수 있는 한 가지 방법입니다.
2. LLM 통합 인터페이스
통합이라는 개념에 "인터페이스"라는 개념을 추가했습니다.
이는 통합에서 확장할 수 있는 표준 스키마 정의일 뿐입니다. LLMs 에 대한 표준 스키마를 만들었습니다.
통합이 이 스키마를 확장하는 한, 통합은 LLM 공급자로 간주됩니다. 따라서 Botpress 에서 바로 작동합니다.
다음은 다양한 LLM 제공업체에 대한 Botpress 통합의 몇 가지 예입니다:
텍스트2이미지, 이미지2텍스트, 음성2텍스트, 텍스트2보이스 등에도 유사한 인터페이스가 있습니다.
모델 구성
Botpress 스튜디오에는 '베스트 모델'과 '빠른 모델'이라는 두 가지 일반적인 구성이 있습니다. 일반적으로 대부분의 작업은 이 두 가지 모드 중 하나에 쉽게 적합하다는 것을 알게 되었습니다.
하지만 단순한 모델 선택뿐 아니라 도구 호출과 메시지 형식에 있어서도 제공업체마다 차이가 너무 커서 한 모델을 다른 모델로 쉽게 교체하고 좋은 성능을 기대할 수 없다는 사실을 발견했습니다.
Botpress 추론 엔진
그래서 저희는 LLMz라는 자체 추론 엔진을 만들었고, 이 엔진은 어떤 모델에서든 즉각적인 변경 없이(또는 아주 최소한으로) 작동합니다. 그리고 이 엔진은 훨씬 더 나은 도구 호출과 토큰 비용 및 LLM 왕복 횟수 측면에서 훨씬 더 나은 성능을 제공합니다.
이 엔진은 도구 정의를 위한 백그라운드에서 타입스크립트 유형, 메시지 및 코드 출력 형식을 위한 마크다운, 추론을 위한 LLM-네이티브 실행 샌드박스와 함께 작동합니다.
LLMz는 다음과 같은 고급 사용 사례에 필요한 많은 최적화 및 디버깅 기능을 제공합니다:
- 입력 토큰 압축
- 스마트 토큰 잘라내기
- 토큰에 최적화된 메모리-컨텍스트 간
- 병렬 및 복합 도구 호출
- 단일 LLM 호출에 여러 메시지 + 도구 호출 혼합
- 완전 입력형 안전 도구(입력 및 출력)
- 샌드박스 직렬화를 통한 긴 수명 세션
- 도구 모킹, 래핑 및 추적
- 경량 V8 격리에서 전체 실행 격리(수천 개의 동시 실행을 매우 저렴하고 빠르게 실행할 수 있음)
- 자동 반복 및 오류 복구
이 모든 것이 저희 사용 사례에 필요했습니다. 하지만 일반적인 도구 호출로는 불가능하거나 매우 어려웠습니다.
경량 라우터 모델에 대한 사례
저희는 기존 모델 위에 올려놓고 작업에 적합한 모델을 자동으로 선택할 수 있는 경량 라우터 모델을 만드는 것에 대해 오랫동안 고민했습니다.
하지만 여러 가지 이유로 그렇게 하지 않기로 결정했습니다:
1. 예측 가능성
대부분의 고객은 - 당연히 - 신뢰할 수 있고 예측 가능한 결과를 원합니다.
따라서 동적 모델 라우터라는 아이디어는 고위급 상담원에게는 다소 무섭습니다. LLMs 에 또 다른 예측 불가능성을 가져다주기 때문입니다.
2. 속도
지연 시간은 사용 사례에서 매우 중요합니다. 라우터가 빠르려면 라우터가 라우팅할 모델(아마도 기존 분류기)보다 매우 작아야 합니다(그리고 아마도 더 느려야 할 것입니다).
일반적으로 특정 작업에 대해 훈련된 경우에는 정상적으로 작동하지만, a) 긴 프롬프트에서는 짧은 컨텍스트 크기가 문제가 되고, b) 훈련된 것 이외의 다른 프롬프트로 일반화하지 못합니다.
3. 모델 우월주의 또는 모델 평등
벤치마크에서는 그렇지 않다고 말할 수 있지만, 실제로는 GPT-4o(지금까지)를 능가하는 모델을 거의 본 적이 없습니다.
시간이 지남에 따라 LLMs 이 작업 Y보다 작업 X에서 실제로 더 나은 성과를 낼지, 아니면 LLMs 이 모든 작업을 매우 잘 수행할지는 아직 확실하지 않습니다. 후자의 경우 모델 선택은 노력할 가치가 없습니다.
피드백을 통한 미래 대비 LLMs
LLMs 는 몇 년 안에 상품이 될 것이며 모델 선택은 더 이상 중요하지 않을 것입니다.
이러한 이유로 저희는 LLMs 에 예시를 제공하기 위한 좋은 메커니즘을 제공하는 데 노력을 기울이기로 결정했습니다.
그래서 저희는 피드백을 수집하는 시스템을 구축했습니다. 이 시스템은 향후 실행을 위한 '학습'을 저장합니다. 그리고 향후 실행을 위해 가장 관련성이 높은 학습 내용을 적시에 동적으로 제공하여 시간이 지나도 안정적이고 지속적으로 개선할 수 있도록 합니다.
LLMs 점점 더 높은 성능을 향해 구축되는 만큼, 저희는 플랫폼 사용자를 위해 이를 최대한 활용할 준비가 되어 있고 기대가 큽니다.