ここしばらくBiomniを使う機会が多く、その中で気づいた「Biomniを使った開発上の注意点」をいくつか整理しようと思います。エージェント開発や利用に取り組んでいる方の参考になれば幸いです。
コンテキスト関連
エージェント開発において、LLMへ渡す「コンテキスト」の調整は避けて通れない課題かと思います。Biomni利用において私自身が特に気をつけている点を挙げます。
ツールが返す出力量の管理
BiomniはCodeActの仕組みにより、呼び出されるツールの関数に基づいてコードの生成と実行を繰り返しながらタスクを遂行します。このとき、コードの実行結果はprint文を通じて保持され、次の処理(プロンプト)に加わります。
そのため、出力が極端に長い場合、プロンプトのトークン数を圧迫し、エージェントが適切に動作しなくなることがあります。
私自身、カスタムツールを作成した際に想定以上の長大な出力を返してしまい、処理がうまく進まなくなった経験があります。特にBiomniへ接続する予定のツールを設計する際は、出力を必要最小限に抑えることを常に意識する必要があると感じています。
新規で追加するツール・データベースの選別
Biomniは対応するツール・ソフトウェア・データベースが300以上あり、そこからユーザーの質問に応じて必要なものを動的に選びます。さらに、事前にダウンロードしてあるデータも選別対象になります。Biomniのシステム設計上、上記に加えてさらにユーザー独自のツールやデータを新規追加することも可能です。
私の経験では、50件ほどの新規データを追加した際に、それらがすべてプロンプトに含まれてしまい、入力が肥大化しました。さらに類似データが多かったことも影響し、エージェントが適切にデータを使えなくなる問題が発生しました。
システム上では新規ツールやデータの追加が可能ですが、上記のような経験から、無闇に多くのデータを追加することは避け、本当に必要なものに絞ることが重要だと感じています。用途ごとに追加する対象を制限することで、より安定した挙動につながるように思います。
LLMへの指示文に関する工夫
Biomniは、システムプロンプトやツールの説明文、関数名、関数のDocStringなど、さまざまなテキストから挙動を決定します。したがって、これらの文章の書き方により結果が大きく変わります。
カスタムツールのdescription
私はMCPサーバーを自作してBiomniに接続することが多いのですが、その際に設定ファイル(mcp_config)に記載するツールのdescriptionが改めて重要と感じています。この説明文を頼りにBiomniはツールの利用可否を判断するため、内容が他ツールと曖昧に重なると、使って欲しい場面で全く使われない場面が多々ありました。
試行錯誤の中で、例えば「always use this tool first」といった強い表現を入れると、確実に選択されやすくなることがわかりました。曖昧さを避け、他ツールとの差別化がはっきりした説明を書くことが効果的と感じています。
システムプロンプトの微調整
Biomniのシステムプロンプトは非常に作り込まれており、基本的には変更しないようにしています。ただし、研究内容に合わせた軽微な調整で動作が改善する場合があります。
例えば、Biomniはユーザーの質問に基づきタスク実行の「Plan」を立てますが、プロンプトを少し調整することで、そのPlanが研究目的により適合するケースがありました。私の場合は、「ある条件を満たした場合に特定の処理をPlanに組み込むように」、という指示をシステムプロンプトに追記したところ、私の目的により近いPlanを作成してくれるようになったと感じています。
まとめ
以上、私が最近Biomniを利用する中で意識しているポイントを整理しました。
- ツールが返す出力量は必要最小限にし、コンテキスト圧迫を防ぐ
- 新規追加のツール・データベースは本当に必要なものに絞る
- カスタムツールの説明文は明確かつ差別化を意識する
- システムプロンプトは基本そのまま、必要に応じて軽微に調整
今後も試行錯誤の中で新たな気づきがあれば、また記録していきたいと思います。