Open Chat : Onicaiを使ったLLM AIエージェントチャットボットの作り方
オンチェーンAIとOpenChatボタソン構築に関する報告書
1. はじめに
本報告書は、YouTubeで配信されたイベント(字幕:https://www.youtube.com/watch?v=rFwlpqOVhgM )の内容を元に、オンチェーンで実行されるAI(LLM:大規模言語モデル)およびOpenChatボタソンの構築プロジェクトについて詳細にまとめたものです。イベントでは、技術的実装の具体例から、実際にどのようなシステムアーキテクチャを採用しているか、さらに将来的な拡張性やコミュニティとの連携についても議論されました。
2. イベントの背景と目的
2.1. プロジェクトの背景
-
オンチェーンAIの必要性
従来、LLMの推論エンジンはOpenAIやMicrosoft、Googleなどの外部プロバイダーに依存していましたが、今回のプロジェクトはすべてをインターネットコンピュータ上のキャニスター内で完結させることを目標としています。これにより、分散型で透明性の高いAIシステムの実現を目指しています。 -
OpenChatボタソンとの連携
プロジェクトチームは、OpenChatボタソンプラットフォームを主なコミュニケーションツールとして採用しており、社内外の連携を強化するため、オンチェーンAIの出力(深遠な引用や技術的な発言)を直接チャットへ投稿できる仕組みの構築に取り組んでいます。
2.2. 参加メンバーと役割
- Arjanさん(発表者)
インターネットコンピュータの早期からの開発経験を活かし、C++ CDKの開発やオンチェーンLLMの実装に取り組んできた人物。今回のイベントでは、技術的背景やシステム全体の構成について詳述しています。 - Patrick Friedrichさん、Nunoさんなど
チームの共同創設者として、分散型AIの構築、ブラウザ上でのLLM実行ツール「Vinci」の開発、及び各種キャニスターの管理や統合に貢献。 - OpenChatコミュニティ
プロジェクトの実装およびフィードバックの面で中心的役割を果たし、内部コミュニケーションおよび外部展開の両面で活用されています。
3. 技術的な概要とシステム構成
本プロジェクトでは、オンチェーンAIの実装において「優秀な人」が押さえる基本機能と、さらにトップラインで実現すべき高度な機能・連携が両立されています。
3.1. 基本的な実装要素(優秀な人が抑えるべきポイント)
-
完全オンチェーン実行の実現
- インターネットコンピュータ上で、C++およびMotokoで書かれたキャニスターを活用して、LLM推論エンジンを直接動作させる。
- LLMの呼び出しは、従来のオフチェーン依存を排除し、すべての処理をキャニスター内で完結させる点が重要です。
-
基本的なキャニスター設計とロードバランシング
- 一つのLLMキャニスターではトークン生成数が13トークンに制限されるため、複数回の呼び出しおよび更新呼び出し(ラウンドロビン方式)により、継続的な文章生成を実現。
- Cycle Upsなどの仕組みを利用し、キャニスター間で計算リソース(サイクル)の管理を行っています。
-
プロンプト設計とキャッシュ機能
- 多くのLLM呼び出しでは、繰り返し使用されるプロンプトの一部をキャッシュすることで、再処理の手間を省き、計算コストを低減。
- システムプロンプト(例えば「古代の哲学者として回答する」など)と動的部分を分離する設計が採用されています。
3.2. トップラインで実現すべき高度な取り組み
-
オンチェーンとブラウザ連携の最適化
- ブラウザ上で直接LLMを実行するツール「Vinci」をはじめ、オンチェーンAIとOpenChatボタソンとの連携により、ユーザー体験の向上を図っています。
- コマンドボットと自律型ボットの両面を提供し、ユーザーがスラッシュコマンドによる操作だけでなく、タイマーによる自動投稿も利用可能にするなど、柔軟な運用体制を整備。
-
スケーラビリティと拡張性の確保
- 複数のLLMキャニスター間でリクエストを分散するラウンドロビン方式により、負荷分散を実現。将来的には、さらに大規模なモデル(例:10億パラメーター以上のモデル)の導入を視野に入れた拡張計画もあり。
- モデルファイルは安定メモリに保存され、コードアップデート時に再アップロードの必要がなく、アップグレードが迅速に行える設計。
-
オープンソースとコミュニティ連携
- GitHub上でMITライセンスにより完全オープンソースとして公開され、開発者やコミュニティメンバーが自由にクローン・改良可能。
- Rust SDKやMotokoボットSDKなど、今後の拡張や他プラットフォームとの連携を見据えた複数のSDK実装も進行中。
4. 開発とデプロイメントの実践
4.1. デプロイメントの手法
- ローカル環境でのデプロイ
- Dockerイメージが用意され、ローカルホスト上で簡単にOpenChatボタソンやオンチェーンエージェントを実行可能。これにより、開発者は本番環境と同様の環境で検証が行えます。
- 初回デプロイ時は、数百メガバイト規模のLLMモデルファイルのアップロードが必要ですが、以降のアップグレードは安定メモリからの再読み込みで高速化される仕組みです。
4.2. コマンドボットと自律型ボットの運用
- コマンドボットの仕組み
- ユーザーがスラッシュコマンドを入力することで、特定のプロンプトが呼び出され、引用や文章生成が行われる仕組みです。内部でMotokoキャニスターがループ処理を行い、複数回の更新呼び出しを通じて出力を生成。
- 自律型ボットの特徴
- タイマー機能を組み込むことで、定期的に自動投稿が行われる自律型ボットも実現。タイマーは60秒ごとに起動し、生成された引用をOpenChatチャンネルや他の外部プラットフォーム(Xなど)に投稿できる設計。
- セキュリティ面では、特定のキャニスターのコントローラーにのみタイマーのエンドポイント呼び出しを許可するなど、堅牢なアクセス制御が組み込まれています。
5. コミュニティと今後の展望
5.1. コミュニティとの連携
- OpenChatの活用
- プロジェクトチームは日常的にOpenChatを内部コミュニケーションツールとして利用しており、そこで得られるフィードバックをもとに、システムの改善や新たな機能の追加を迅速に行っています。
- また、ユーザーからの質問や提案を受け付け、次回以降のストリームやアップデートで反映する仕組みを整えています。
5.2. 将来的な技術拡張
- さらなるスケーラビリティの追求
- 現在は5億パラメーター規模のモデル(quen 2.5)が動作しているが、より大規模なモデルへのアップグレードや、複数のLLMキャニスターを連携させることで、より多彩なユースケースに対応する計画。
- 多様なSDKとAPIの展開
- Rust SDKや、今後公開予定のAPI仕様を通じて、他の分散型アプリケーションとの連携や、外部プラットフォームへの自動投稿機能の実装が予定されています。
- また、プロンプトキャッシュの高度な設計により、効率的なトークン生成と計算コストの低減を実現し、オンチェーンでの実用性をさらに向上させる取り組みが進行中。
5.3. 優秀な実装とトップラインの比較
-
優秀なエンジニアが重視する基本機能
- キャニスター間の効率的なリソース管理、プロンプトのキャッシュ機能、安定したLLM呼び出しなど、最低限の品質と信頼性を確保するための実装が徹底されています。
-
トップラインで実現すべき高度な取り組み
- オンチェーンとブラウザのシームレスな統合、ユーザー体験を向上させる自律型ボットの実装、さらには他プラットフォーム(例:XやDiscord)との連携を実現するためのAPI連携と拡張性の追求。これらは単なる基本機能に留まらず、戦略的かつ革新的な部分であり、プロジェクトの差別化要素となっています。
6. 結論
本イベントでは、インターネットコンピュータ上でのオンチェーンAI実装およびOpenChatボタソンの構築に関する技術的背景、具体的なシステムアーキテクチャ、さらには今後の拡張性やコミュニティ連携について詳細に議論されました。
- 技術面では、C++とMotokoによるキャニスターの活用、LLM推論エンジンの最適化、プロンプトキャッシュの実装など、基本となる技術を確実に実装する一方で、ロードバランサーや自律型ボットといった高度な機能にも挑戦しています。
- 戦略面では、オープンソースとしてGitHub上にコードを公開し、コミュニティとの連携を深めるとともに、オンチェーンとオフチェーンの融合による新たなユーザー体験の創出を目指しています。
全体として、今回のプロジェクトは「優秀な人」が基礎を固めるために必要な実装と、トップラインの技術者がさらに踏み込むべき先進的な取り組みの双方を兼ね備えた好例と言えるでしょう。今後もさらなるフィードバックや技術の進展を通じて、分散型AIの実用化と新たなユースケースの開発が期待されます。