최근에 한 재능 있는 학자로부터 Botpress가 LLM과 어떻게 연동되는지에 대한 이메일을 받았습니다.
그분은 공급업체 종속을 피하는 방법에 관한 논문을 쓰고 있었고, 혹시 우리가 LangChain이나 Haystack 같은 프레임워크를 사용하는지 궁금해했습니다.
저는 Botpress 빌더들이 LLM과 연동할 수 있도록 저희만의 추상화 계층을 만들었다는 사실을 기쁘게 공유했습니다.
이 주제에 대한 관심이 높아진 만큼, 이 정보를 공개하고자 합니다. 다른 개발자나 플랫폼 사용자에게도 도움이 될 수 있습니다. 저 역시 만들면서 흥미로웠던 만큼, 여러분께도 유익하길 바랍니다.
Botpress가 LLM과 인터페이스하는 두 가지 방식
Botpress는 자체 추상화를 만들어 두 가지 방식으로 작동합니다:
1. 통합
통합에는 특정 입력 및 출력 타입을 가진 액션 개념이 있습니다.
플랫폼에는 오픈소스 컴포넌트가 있어, 커뮤니티가 자체 통합을 만들어 비공개 또는 공개적으로 사용할 수 있습니다.
따라서 LLM 제공업체(OpenAI, Anthropic, Groq 등)마다 각각 통합이 있습니다. 이것이 사용자가 이들과 인터페이스할 수 있는 한 가지 방법입니다.
2. LLM 통합 인터페이스
통합 개념 위에 “인터페이스”를 추가했습니다.
이것들은 통합에서 확장할 수 있는 표준 스키마 정의입니다. 우리는 LLM을 위한 표준 스키마를 만들었습니다.
이 통합이 해당 스키마를 확장하기만 하면, 그 통합은 LLM 제공자로 간주됩니다. 그래서 Botpress에서 바로 사용할 수 있습니다.
다양한 LLM 제공업체를 위한 Botpress 통합 예시는 다음과 같습니다:
text2image, image2text, voice2text, text2voice 등에도 유사한 인터페이스가 있습니다.
모델 구성
Botpress Studio 내에는 "최적 모델"과 "빠른 모델" 두 가지 일반 설정이 있습니다. 대부분의 작업은 이 두 가지 모드 중 하나에 쉽게 맞는다는 것을 알게 되었습니다.


하지만 단순히 모델 선택만으로는, 각 제공업체가 도구 호출 방식과 메시지 포맷에서 너무 달라서 모델을 쉽게 바꿔도 좋은 성능을 기대하기 어렵다는 점을 알게 되었습니다.
Botpress 추론 엔진
이러한 이유로, 저희는 LLMz라는 자체 추론 엔진을 개발했습니다. 이 엔진은 어떤 모델과도 (또는 거의) 프롬프트 변경 없이 작동합니다. 또한 도구 호출이 훨씬 더 뛰어나고, 토큰 비용이나 LLM 왕복 횟수 측면에서도 훨씬 더 나은 성능을 제공합니다.
이 엔진은 도구 정의를 위해 내부적으로 타입스크립트 타입을 사용하고, 메시지 및 코드 출력 포맷에는 마크다운을, 추론에는 LLM 네이티브 실행 샌드박스를 사용합니다.
LLMz는 다음과 같은 고급 사용 사례에 필요한 다양한 최적화 및 디버깅 기능을 제공합니다:
- 입력 토큰 압축
- 스마트 토큰 절단
- 토큰 최적화 메모리-컨텍스트 변환
- 병렬 및 복합 도구 호출
- 여러 메시지와 도구 호출을 단일 LLM 호출로 처리
- 완전 타입 안전 도구(입력 및 출력)
- 샌드박스 직렬화를 통한 장기 세션 유지
- 도구 모킹, 래핑, 추적
- 경량 V8 아이솔레이트에서 완전한 실행 격리(수천 개의 동시 실행을 빠르고 저렴하게 지원)
- 자동 반복 및 오류 복구
이 모든 기능은 저희의 사용 사례에 꼭 필요했습니다. 하지만 일반적인 도구 호출 방식으로는 불가능하거나 매우 어려웠습니다.
경량 라우터 모델에 대한 반론
기존 모델 위에 경량 라우터 모델을 두고, 작업에 맞는 모델을 자동으로 선택하도록 만드는 방안을 오랫동안 고민했습니다.
하지만 여러 이유로 그렇게 하지 않기로 결정했습니다:
1. 예측 가능성
대부분의 고객들은 당연하게도 신뢰할 수 있고 예측 가능한 결과를 원합니다.
그래서 동적 모델 라우터라는 개념은 고급 에이전트에게는 다소 불안 요소가 됩니다. LLM에 또 다른 예측 불가능성을 더하기 때문입니다.
2. 속도
저희가 다루는 사용 사례에서는 지연 시간이 매우 중요합니다. 라우터가 빠르려면, 모델이 매우 작아야 하고 (그리고 아마도 더 단순해야 하며) 라우팅 대상이 되는 모델보다 덜 똑똑해야 합니다. 이는 전통적인 분류기일 가능성이 높습니다.
이런 모델들은 특정 작업에 맞춰 학습되면 대체로 괜찮게 동작하지만, a) 짧은 컨텍스트 크기는 긴 프롬프트에 문제가 되고, b) 학습되지 않은 프롬프트에는 일반화가 어렵습니다.
3. 모델 우위 또는 모델 평등
벤치마크 결과와 달리, 실제 환경에서는 GPT-4o보다 뛰어난 모델을 거의 본 적이 없습니다.
시간이 지나면 LLM이 작업 X에서 Y보다 더 잘할지, 아니면 모든 LLM이 대부분의 작업에서 매우 뛰어나게 될지는 아직 불분명합니다. 후자의 경우라면, 모델 선택 자체가 큰 의미가 없을 것입니다.
피드백으로 LLM의 미래 대비
몇 년 후에는 LLM이 일반화되어 모델 선택이 큰 의미를 갖지 않게 될 것입니다.
이러한 이유로, 저희는 LLM에 예시를 제공하는 좋은 메커니즘을 만드는 데 노력을 집중하기로 했습니다.
그래서 피드백을 수집하는 시스템을 구축했습니다. 이 시스템은 향후 실행을 위한 "학습 내용"을 저장합니다. 그리고 다음 실행 시점에 가장 관련성 높은 학습 내용을 동적으로 제공하여, 신뢰할 수 있고 지속적으로 개선되는 결과를 보장합니다.
각 LLM이 점점 더 높은 성능을 향해 발전함에 따라, 저희는 플랫폼 사용자들이 이를 최대한 활용할 수 있도록 준비되어 있고 기대하고 있습니다.





.webp)
