最近、優秀な研究者の方から、BotpressがどのようにLLMと連携しているのかというメールをいただきました。
彼はベンダーロックインを回避する方法について論文を書いており、私たちがLangChainやHaystackのようなフレームワークを使っているのか知りたかったようです。
私は、Botpressの開発者がLLMと連携できるように独自の抽象化を作成したことをお伝えできて、とても嬉しく思いました。
このテーマへの関心が高まっていることもあり、この情報を公開することにしました。他の開発者やプラットフォームのユーザーにも役立つかもしれません。私自身が作っていて面白かったので、皆さんにも興味を持っていただければ幸いです。
BotpressがLLMと連携する2つの方法
Botpressは、2つの方法で機能する独自の抽象化を作成しました。
1. インテグレーション
インテグレーションには、特定の入力・出力型を持つアクションという概念があります。
プラットフォーム上にはオープンソースのコンポーネントがあり、コミュニティが独自のインテグレーションを作成できます。これらは非公開にも公開にもできます。
そのため、OpenAI、Anthropic、GroqなどのLLMプロバイダーごとにインテグレーションがあります。これがユーザーがそれらと連携する一つの方法です。
2. LLMインテグレーションインターフェース
インテグレーションの概念に加えて、「インターフェース」を追加しました。
これらは、インテグレーションが拡張できる標準的なスキーマ定義です。私たちはLLM用の標準スキーマを作成しました。
このスキーマを拡張する統合であれば、その統合はLLMプロバイダーとして認識されます。つまり、Botpressですぐに利用できます。
さまざまなLLMプロバイダー向けのBotpressインテグレーション例をご紹介します。
text2image、image2text、voice2text、text2voiceなど、同様のインターフェースも用意しています。
モデル設定
Botpress Studio内では、「Best Model」と「Fast Model」という2つの一般的な設定があります。ほとんどのタスクはこの2つのモードのどちらかに簡単に当てはまることが分かりました。


しかし、単なるモデル選択だけでなく、各プロバイダーはツール呼び出しやメッセージ形式が大きく異なるため、単純にモデルを切り替えても十分なパフォーマンスが得られないことが分かりました。
Botpress推論エンジン
そのため、私たちはLLMzという独自の推論エンジンを開発しました。これは、ほとんどプロンプトを変更せずに、どんなモデルにも対応できます。また、ツール呼び出しの精度が大幅に向上し、トークンコストやLLMとの往復回数の面でも、より高いパフォーマンスを発揮します。
このエンジンは、ツール定義の裏側でTypeScript型を使い、メッセージやコード出力形式にはMarkdownを利用し、推論にはLLMネイティブの実行サンドボックスを用いています。
LLMzは、以下のような高度なユースケースに必要な多くの最適化やデバッグ機能を提供します。
- 入力トークンの圧縮
- スマートなトークン切り捨て
- トークン最適化されたメモリからコンテキストへの変換
- ツールの並列・複合呼び出し
- 複数のメッセージとツール呼び出しを1回のLLM呼び出しで実行
- 完全な型安全なツール(入力・出力)
- サンドボックスのシリアライズによる長期間のセッション維持
- ツールのモック、ラッピング、トレース
- 軽量なV8アイソレートによる完全な実行分離(数千の同時実行を高速かつ低コストで実現)
- 自動反復とエラー回復
これらすべては私たちのユースケースに必要でした。しかし、通常のツール呼び出しでは実現が難しいか、ほぼ不可能でした。
軽量ルーターモデルを採用しない理由
私たちは長い間、既存モデルの上に軽量なルーターモデルを構築し、タスクに応じて自動で最適なモデルを選択することを検討してきました。
しかし、いくつかの理由からそれを採用しないことにしました。
1. 予測可能性
多くのお客様は、当然ながら、信頼性が高く予測可能な結果を求めています。
そのため、動的なモデルルーターの導入は、高度なエージェントにとっては不安要素となります。LLMにさらなる予測不可能性を加えることになるからです。
2. スピード
私たちのユースケースでは、レイテンシーが非常に重要です。ルーターを高速にするためには、ルーティング先のモデルよりもかなり小さく(そしておそらく単純な)モデル、つまり従来型の分類器が必要です。
こうしたモデルは特定タスクに特化して訓練されていれば一般的に問題なく動作しますが、a)長いプロンプトには短いコンテキストサイズが問題となり、b)訓練されていないプロンプトには一般化できません。
3. モデルの優位性か、モデルの平等か
ベンチマークでは異なる結果が出ることもありますが、実際の現場ではGPT-4oより優れたモデルを目にすることはほとんどありません(今のところ)。
今後、LLMがタスクXよりタスクYで本当に優れた性能を発揮するのか、それともすべてのLLMがほとんどのことに非常に優れるようになるのかはまだ分かりません。後者の場合、モデル選択に労力をかける意味はなくなります。
フィードバックによるLLMの将来対応
数年後には、LLMはコモディティ化し、モデル選択自体が重要ではなくなるでしょう。
こうした理由から、私たちはLLMに例を提供するための優れた仕組みの開発に注力することにしました。
そこで、フィードバックを収集するシステムを構築しました。これは「学習内容」を将来の実行のために保存します。そして、将来の実行時に最も関連性の高い学習内容を動的にプロンプトに提供し、継続的かつ信頼性の高い改善を実現します。
LLMがますます高性能になる中、私たちはプラットフォームのユーザーのためにそれらを最大限活用できるよう、準備を整えています。







