世界を動かす技術を、日本語で。

AIモデルには仮想マシンが必要です

概要

AIモデルを活用するアプリケーションが増加し、セキュリティや拡張性などOSレベルの品質が求められる状況 AIモデルとシステムの間に標準的な「仮想マシン」層を設ける必要性の提案 Java Virtual Machine(JVM)に着想を得て、AI Model Virtual Machine(MVM)構想を提示 既存の取り組みやプロトコルを整理し、標準化の利点と課題を解説 将来のAIシステムの信頼性・移植性・セキュリティ向上に向けた議論の出発点

AIモデルに仮想マシンが必要な理由

  • AIモデル活用アプリケーション の増加により、セキュリティやプライバシー、拡張性が重要課題
  • 従来のチャットボット は単純なREPL構造だったが、モデルの進化とMCP等の拡張プロトコルにより制御ソフトウェアが複雑化
  • AIソフトウェア にはOS同等の品質(セキュリティ、アイソレーション、拡張性、移植性)が求められる
  • ファイルアクセス等の権限制御 も必要となり、AIモデルの安全な利用環境構築が不可欠
  • AIモデルと制御層の標準化 により、モデル開発と統合ロジックの分離・再利用性向上を目指す

Model Virtual Machine(MVM)構想

  • MVMはAIモデルと外部環境の仲介層 として機能
  • ユーザー入力や履歴、システムプロンプト をAIモデルへ安全に受け渡し
  • ツール呼び出しや権限制御 もMVMが仲介・検証し、不正なアクセスや操作を防止
  • MVMが提供すべき操作例
    • モデルの認証、ロード、初期化、アンロード
    • モデルへのコンテキスト付き呼び出し
    • モデル出力やツール呼び出し結果の解析
    • ツールやデータの権限制御、メモリ管理
    • ユーザーへの入力要求や履歴管理
    • 条件分岐や逐次実行などの制御構造

既存の関連取り組み

  • OpenAI Structured Tool Calling
    • JSONベースのAPIで関数呼び出しを構造化
    • OpenAPI仕様によるプラグイン連携
  • Anthropic Model Context Protocol(MCP)
    • AIアシスタントと外部ツール・データを接続する共通プロトコル
    • USB-Cのような「共通インターフェース」志向
  • セキュアオーケストレーター:FIDES & AC4A
    • FIDES:データ機密ラベルで情報流通を制御
    • AC4A:ファイル・フォルダ階層で権限管理、全操作をランタイムで監視・制限
    • AIモデルの推論的な抜け道 への新たなセキュリティ対策も必要
  • オープンソースエージェントランタイム
    • langchainやSemantic Kernel:AIアプリ開発用の共通ランタイムサービス
    • AICI(現llguidance):モデル動作を細かく制御できる軽量VM統合

AI Model VM標準仕様の利点

  • 分離と交換性
    • モデルロジックと統合ロジックの明確な分離
    • モデルやプラットフォームの入れ替え容易化
  • 組込型セーフティ・ガバナンス
    • ツール利用や外部アクセスをVM経由で一元管理
    • 権限チェック・監査・フェイルセーフの実装容易化
    • セキュリティ要件の標準化やサプライチェーン全体の安全性向上
  • パフォーマンス・リソースの可視化
    • 実行後の診断情報やリソース消費のレポート化
    • モデル間・プラットフォーム間のベンチマーク容易化
  • モデル出力の検証性
    • ゼロ知識証明等の形式手法による出力検証・信頼性強化の可能性

結論と今後の展望

  • AI Model VMの標準仕様 策定は、AIシステムの信頼性・移植性・セキュリティ・相互運用性向上に不可欠
  • 複雑性削減と相互運用性向上 による技術的・戦略的なメリット
  • 旧来のソフトウェア仮想化の教訓 を活かし、AI分野でもポータビリティと安全性を確保
  • コミュニティ全体での議論と合意形成 が今後の重要課題

著者略歴(抜粋)

  • Shraddha Barke :Microsoft Research、AIによる証明生成やAIエージェントの信頼性向上
  • Betül Durak :Microsoft Research、セキュリティ・プライバシー・プロトコル設計
  • Dan Grossman :University of Washington、プログラミング言語・解析の専門家
  • Peli de Halleux :Microsoft Research、LLMアプリ開発効率化
  • Emre Kıcıman :Microsoft、Copilot Tuning責任者、AIセキュリティ・社会的影響研究
  • Reshabh K Sharma :University of Washington、LLMベースシステムの信頼性向上研究
  • Ben Zorn :Microsoft Research、プログラミング言語設計・責任あるAI技術

※本記事は著者個人の見解であり、ACM SIGPLANやACMの公式見解ではありません。

Hackerたちの意見

AIの時間で言うと100万年前、つまり昨日、ジョン・カーマックがXROSを作るのにメタがどれだけ無駄な時間とお金を使ったかについてHNに投稿してたんだよね。最近、新しいOSを書くのは意味がないって。で、今日のこの投稿はそれに対してすごく強い主張をしてる。(そう、VMは完全なOSじゃないし、完全なOSよりも軽量になるだろうし、業界全体で使われるだろうし、既存のOSやコードベースを使うことになるだろうし、ニュアンスもあるよね。)

主な違いは、LLMのツールやデータへのアクセスをサンドボックス化して簡素化するのが基本機能であるのに対し、XRはパフォーマンスや開発者体験に重点を置いているところだと思う。LLMが自分を動かしているコードを誤って上書きしたり、顧客データを間違っていじったり、実装の詳細に圧倒されないようにするために、かなりの労力をかけるつもりだし、これに関する標準があればずっと楽になるし、他の人のモデルのトレーニングに頼れるようになる。もしただXR SDKのトレーニングを開発者にさせるだけなら、彼らに給料を払ったり、学校に教えさせたりすればいいし。AIにはR&Dプロジェクトのためのチームと計算時間が必要で、高額になることもあるからね。

この記事は新しいオペレーティングシステムを書くことの正当性を示していない。AIが動作するための実行環境を構築するのは、AIのユースケースに最適化された新しいオペレーティングシステムをゼロから作るのとはまったく違うことなんだ。

WebAssemblyはデフォルトでサンドボックス化されるパラダイムを持っていて、ほぼその状態にあるんだ。あとは、インスタンス間でデータやアクセス権を転送するための明確なインターフェースと、他のインスタンスから新しいインスタンスを作成することが必要だね。

全然違うことだよね。しかも、関係ないって分かってるのに、なんでか無理に比較しようとしてるし…

そして今日のこの投稿は、それに対してすごく強い主張をしてる。 この投稿を読んでも、VMの強い主張なんて何も見当たらなかったし、新しいOSなんて全然。彼らが求めてるのはアクセスコントロールだけだよ。

最も進んだ商業モデルがどのように展開されているかを見ると、すでに多くの要素が含まれていて、隔離もその一部だよ。この投稿は、私がすでに存在することを知っている多くのことを概説しているようなもの。文字通りのOSの意味ではなく、提案されたすべての機能の観点からね。それでもまだ不十分なんだ。エージェントは、仕事をするために気にかけているものに強力にアクセスできる必要がある。気にかけているものに対して十分な権限を与えるのは、LLMを制御するよりもずっと難しいし、それ自体も難しい。LLMのセキュリティに適したモデルは、完全な「OS」ではなく、信頼できないユーザースペースなんだ。

信頼できないユーザースペースってのはその通りだね。こういうアプローチが少しは役立つと思うけど、著者たちは「保証する」みたいな言葉を使って過剰に主張してるよ。OSがファイルの権限を強制するように、ツールへのアクセスを制御すべきだと思う。メタファーだってわかるけど、OSの実績ってあんまり良くないよね? 予約ツールを使う許可があるか確認するって、つまりウェブブラウザってこと? ブラウザって結構強力な汎用ツールだし、脱獄のリスクもあるよね。> そのため、セキュリティ研究者は、仮想マシンの制約があってもAIモデルが敵対的な行動を取らないように新しい対策を考えなきゃいけない。これは、アラインメントを本当に解決する必要があるっていう控えめなリマインダーだね。

この記事を読み始めた瞬間から、AIが書いたんじゃないかって思うくらい、毎日ちょっと冷めてきてる気がする。記事が話しているホスティングの観点からすると、AIエージェントを機能させ続けることが大きな課題だと思うし、AIを使うのは素晴らしいけど、基本的な使い方での安定性は私にとっては厳しい。開発者の視点から見ると、私はwsl経由でルートレスのdockerを使ったdevcontainersを使ってるけど、これをバイパスできるマルウェアがあるかもしれない(このVMアプローチの方がずっと強力だろうけど)けど、ホストOSで動かすよりはずっと安全だと感じてる。それに、再現性や関心の分離といった同じ利点も得られるし、AIが環境で何かを壊した時には、単にコンテナを再構築すればいいからね。

FuchsiaはAIモデルの操作を制約するための実用的なOSになりそうだね。オブジェクト能力オペレーティングシステムとして、各コンポーネント(つまり、それがインスタンス化されるプロセス)は、明示的に付与された能力にしかアクセスできない。

その気持ちはめっちゃわかるし、Fuchsiaのデザインも好きなんだけど、実現するとは思わなかったな。新しいOSが必要ってわけじゃなくて、WASMやWASIコンポーネントに基づいたFuchsiaみたいなシステムが、クラウドからスマホまでホストできる形になるんじゃないかな。

ChatGPTを使ってコードを実行する時、例えばCSVファイルで何かをさせると、特定のツールやライブラリが使えるVM内で動いているみたいで、サンドボックス化されたディスクアクセスもあるけど、インターネットにはアクセスできないんだ。だから、もうすでにその状態に近いよね。

それもDevinやOpenHandsのやり方だね。エージェントがVM内で動くのは、少なくともデフォルトでは、数ヶ月前に私が実施したAIパイロットの重要な機能だった。

それはKubernetes上で動いてて、AKS(Azure Kubernetes)で、いくつかのgvisorの仕組みを使ってる。確かJupyterだったと思う。

いや、そうじゃない。今、自分のマシンかサーバーで二つのAI(例えばChatGPT)を動かしてると想像してみて。 もしかしたら、何かで協力してほしいかもしれない。どうする?そう、できないよね。標準もないし、相互運用性もないし、何もない。

それは考え方が間違ってるよ。問題は「どのツールをLLMに与えるか」じゃなくて、どんなアクションができるかなんだ。例えば、チケット予約のシナリオでは、いくつかのウェブサイトをチェックして価格を比較できるようにしたいし、支払いもしてほしい。3ドル安いからって、37時間の旅に3回も乗り換えさせるようなことはしてほしくない。逆に、自分の福利厚生のステータスを確認したいけど、LLMは同僚の福利厚生の詳細を提供できないようにすべきだよ。それは同じツールだけど、範囲が違うんだ。人事にいるなら、自分が担当している従業員の福利厚生のステータスを見ることはできるべきだけど、それには監査ログが必要になるよね。つまり、重要なのはアクションじゃなくて、意図なんだ。LLMは、その行動をするユーザーと同じ枠に置かれるべきだよ。

これは単なる例だってわかってるけど、なんで従業員の給与や福利厚生が同僚に見えちゃいけないの? 知識が一方通行なら、交渉の能力も一方通行になるよ。それって、交渉で有利な立場にいる会社以外には誰にも得にならないじゃん。

問題は、ツールができるアクションだけじゃなくて、アクセスできるアクションとデータの組み合わせなんだ。これが重要なのは、LLMが何をするかわからないからで、ユーザーと同じくらい信頼できない状態にする必要があるから。例えば、LLMインスタンスには予約サイトと話してほしいけど、SSNや銀行口座情報を送信してほしくない。だから、データの出所や権限の問題があるんだ。タスクがアクセスできるデータが敏感であればあるほど、そのアクションは制限される必要があるし、その逆も然り。だから、データには権限情報を持たせて、仲介者がタスクが生成されるときにデータやアクションを制限する必要がある。親タスクが異なる権限を持つ子タスクを安全に生成できるように、仲介者レベルでやるべきことがたくさんあるんだ。例えば、旅行プランナーのタスクがチケットを探す子タスクを生成する場合(より高いネットワークアクセスが必要)だけど、仲介者はその子タスクが旅程の一部のような低感度データにしかアクセスできないようにする必要があるんだ。

確かに、彼らは逆に考えてるよね。モデルはシンプルで、LLMエージェントはユーザーなんだ。マシン上の別のユーザーってこと。で、働いているコンテキストに応じて権限が与えられる。例えば、このソースコードのフォルダ内では読み書き権限があって、別のフォルダでは読み取り専用権限がある。権限はコンテキストによって変わるんだ。同じマシン上で異なるプロジェクトに取り組んでいる場合、LLMエージェントには異なる権限が与えられる。権限は、実行しているユーザーの権限の交差点やサブセットになる。権限は3つのカテゴリーに分かれる。許可、拒否、確認で、アカウンタブルなユーザーに何かをする許可があるか尋ねるんだ。(つまり、実行しているユーザーにアクションXを実行してもいいか聞く)。問題は、OS(アプリやデータを含む)が一般的に権限が細かくないから、もっと細かくなる必要があるってこと。LLMがgitを使えるかどうかの問題じゃなくて、特定のgitコマンドだけを使えるようにすべきなんだ。gitはこういう風に設計される必要があるし、他にもたくさんのことがそうだよ。その結果、アプリがこのモデルをユーザーランドで再構築しようとして、いろんなregexを使ってるんだ。ワークフローは、sudoのようにアプリをLLMエージェントユーザーとして起動することだ。それはデフォルトの権限を引き継ぐ。作業するコンテキストを与えると、そのコンテキストに応じて権限が与えられたり拒否されたりする。リクエストをして、私が許可したことをしてくれるけど、私が許可されたこと以上のことは絶対にできない。今は、すべてのエージェントアプリがこのワークフローを再構築する必要があるか、悪意のあるエージェントのリスクを抱えることになる。これはOSサービスであるべきだ。間にあるハッキーなステップは、エージェントのコンテキストや使用ごとに一時的なユーザーを作成することだ。そのユーザーに権限を与えて、ローカルのLLMとIPCやネットワークでのみ通信する。だけど、その過程でたくさんのユーザーアカウントを作ったり削除したりすることになるね。

あなたが言ってるのは、基本的に「能力セキュリティモデル」のことだね。ソフトウェアエージェントにアクセスを許可する能力を明示的に渡さないといけなくて、そのリストにないことを物理的にする手段がないんだ。残念ながら、主流のOSは実際にはこの能力モデルを実装してないんだよね。いくつかの著名な研究の試みや、商業化の試みはあったけど、ほとんど市場では失敗してるし、他のOSに能力ベースのセキュリティを追加しようとした試みも大体失敗してる。だから、実際にコンピュータの世界で広く利用可能な能力ベースのセキュリティに最も近いのは、特定の能力を提供するツールだけをVMに入れる仮想マシンなんだ。これも完璧ではないけど、これらのツールは本来の能力よりもずっと一般的だからね。でも、現代のソフトウェアは最小権限の原則に基づいて作られてないんだ。そういうソフトウェアは市場で失敗しがちだから。

37時間の旅に3回もストップがあるルートを選ぶのはやめてほしい。3ドル安いからって。これは難しそうだね。つまり、LLMからの十分な応答がどうあるべきかを定義して強制できるなら、LLM自体は必要ないってことだ。> HRの人には意図を持った人間がいるから聞けるけど、LLMには意図がないから難しいよね。

これが実現するとは思えないな。たとえLLMがそれをできるとしても、ウェブサイトはLLMを検出する方法を見つけて、価格を上げるだろうし、決定木をいじるだろうね。考えてみると、すべてのものが進化している中で、LLM APIが登場するだろう。人間が見るためにウェブサイトを作って、その後LLMにそれを単純なDBのルックアップに戻させるなんて、馬鹿げてるよね。誰でも使える「rss + json」APIがないのが驚きだよ。70年代や80年代のBBSテキストインターフェースや、初期の電話時代のSMSメニューシステムは、LLMにとってウェブページよりずっと優れている。データと選択肢だけでいいのに。LLMに広告を出す意味もわからない。LLMに出すべき唯一の広告は、騙したり、混乱させたりするためのものだよ。広告は十分に悪いのに、LLMがサイトにアクセスしたときに役立つためには、もっと悪意を持たせる必要がある。LLMに広告が探しているものだと思わせるように騙すんだ。例えば、フライトを検索しているときに、広告がLLMを騙して最高の取引だと思わせるとか。そうでなければ、広告の意味は何なの?LLMは広告を無視して、単純なタスクを実行するだけだよ。もしすべてのウェブサイトにRSSがあって、すべての取引サイトに標準APIがあれば、既存のモデルを使っていろいろできるようになってるはずだよ。生データを扱うだけで済むのに。追記:実際、面白いね。なんでダメなの?AIはこの段階では簡単に騙せるから、AIに特化した広告会社があれば最高だよ。彼らを自分のウェブサイトに誘導して、あなたの取引を選ばせて、彼らのオーナーにあなたの会社が最高だと報告させることができる。すごく簡単にできるしね。うーん。

自分でKiwi.com使えばいいよ。そっちの方が早いから。

同意。これがコンテキストセキュリティの基本だよね。前にこのテーマについてのセキュリティ論文を実装したデモを作ったことがあるよ。 https://studio.youtube.com/video/inncx8_4tXU/edit

あなたの例は、実際にはあまり問題じゃないと思うよ。もうそのためのアクセス設定はできてるし(つまり、あなたと同じやつ)。 他の例については、AIがあなたの明示的な許可がないと何もできないっていう妥協案がいいと思う。あなたの例では、適切だと思うフライトを見つけて、リストを通知してくれる。そしたら、シンプルな「はい/いいえ/もっと情報」ボタンを押せばいい。そうすれば、かなりお金が節約できるし、危険なことや損害を与える可能性もかなり低くなるよ。

この記事は具体性が全然ないから、彼らが何を提案しているのかよくわからない。VMは何らかの命令セットを持っていて、制御フローやレジスタがあるはずなのに、記事のほとんどが認可についてで、概念とは関係ないように思える。彼らが本当に言いたいのは、サンドボックスや監獄、コンテナのようなもので、「syscall」に相当するものがモデルと外界をつなぐってことじゃないかな。

はい、彼らの定義によれば、現在のAIエージェントはすでにVM内で動いていると言えるね。例えば、MCPホストがユーザーに何かを実行するように促すことができ、claudeコードのようなルールで特定のコマンドパターンを自動的に許可することもできる。

この記事は具体性が全然ないから、彼らが何を提案しているのかよくわからない。そうだね。彼らは仮想マシンの実行エンジンを提案してるの?LLMのためのDocker?それとも何か?これは何かのパッケージングのように見える。悪くデザインされたパッケージシステムは呪いだよ。Pythonがどれだけのものを経てきたか見てみて。

仮想マシンを作ることで、もっと複雑になる理由が見えないな。ユーザーアカウントや、ユーザー/グループのための読み取り/書き込み/実行権限があるし、読み取りはアクセス・トークンを付与できるから、一時的なリモート要件も解決できる。ほかの能力モデルもその観点で定義できると思う。新しい抽象的なマシンやプロトコルを再発明するよりも、すでにあるツールの簡素化を見たいな。今はみんな新しいものを作る実験をしているけど、再評価して、適切なコストで余計なものを取り除いて、シンプルな形に戻すいい機会だと思う。例えば、好きなMCPサーバーを見つけて、ClaudeにMCPの部分を全部削除してCLIに入れるように言った。これで、そのツールを呼び出すだけで済む(コンテキストコストを払わずに)。10分で終わったよ。Claudeがそれを再構築するのは、かなりの指導がないと難しいと思う。

大体は同意だよ。多くのセキュリティリスクは、VMにいるかどうかに関わらず存在すると思う。深層防御は最終的にはもっと重要になるだろうけど、今は攻撃者にとってAIエージェントをユーザーに対して利用するための低いハードルがたくさんあると思う。あなたが言ってることは、そういうことだよね!

ファイルを編集するツールを持つと、ほぼ全てのセキュリティが失われるよね。

仮想マシンは爆風の範囲を制限するんだ。良いエージェントなら、システム内のゼロデイを利用して簡単に侵入できるから、ユーザーでいることは本当に楽だよ。知識を慎重にファイアウォールで守らなきゃいけないけど、ネット上には情報を手に入れる方法がたくさんある(例えば、ゲートキーパーAIを突破できるサービスから、暗号化されたファイルのダウンロードを頼むとか)。これらのものはシステムを破るのがすごく上手になるから、信じて、しっかりした対策が必要になるよ。

一般的に、デスクトップオペレーティングシステムのセキュリティモデルは現代には全く不十分だよ。ユーザーの利益に反することをするソフトウェアの量を考えると、そんな頻繁に何も考えずに王国の鍵を渡すのはほとんど狂気だよ。もちろん、ユーザーが本当にゼロガードレールの体験を望むなら、それを得るべきだけど、多分それがデフォルトであるべきではない。ソフトウェアは、ユーザーが信頼を示すまで非常に厳しい制約を受けるべきだし、信頼が示された場合でも、特定のドメインごとに権限を与えるべきだよ。例えば、ディスク使用量を視覚的に表現するプログラムは、フルファイルシステムアクセスが必要だけど、ローカルネットワークをスニッフィングする必要はないし、パッケージマネージャーが更新を管理するプラットフォームでも、インターネットに接続する必要はない。

LLMの世界には一時的な読み取りなんて存在しないよ。一度コンテキストに入ったら、エージェントに接続された他の全てがそれを外部に流出させる可能性があると考えなきゃいけない。これは、VMで動かしているかどうかに関わらずそうだから、VMがセキュリティソリューションではないというのには同意するよ。

この記事をもっと詳しく読んで、いくつかのリンクを追ったら、これが「AIのためのVM」という要約が示す以上に基礎的なことを指していると思った。VMのアナロジーは、LLMが敏感なデータを扱うときに信頼できない場合のワークフローを保護するには不十分なんだ。敏感な操作(ネットワークアクセス)と敏感なデータ(PII、認証情報)にアクセスが必要なトップレベルのワークフローがあって、プロンプトインジェクション攻撃や一般的な正確性と整合性の問題に脆弱なLLMがいる。敏感な操作とデータの両方にアクセスできるVM内でLLMの呼び出しを実行するだけではダメなんだ。ワークフロー、サブタスク、操作、データを分けて、ほとんどのサブタスクが非常に限られた世界観を持つようにして、情報フローを使ってデータの出所を追跡する必要がある。敏感な操作とデータの両方が必要なサブタスクは、高い信頼性とレビューが求められるだろう。この投稿はその点にも触れているけど、私が重要だと思うのは「セキュアオーケストレーター」の部分と、FIDES論文「情報フロー制御によるAIエージェントのセキュリティ」だ。VMの部分は、与えられた能力とデータにしかアクセスできない非常に制限されたコンテナ内でタスクを実行すること。オーケストレーターは、これらのコンテナを生成し、適切な能力を与え、生成されたデータを正しくラベル付けする重要な部分になる。彼らは正しい方向に進んでいると思うし、この分野で働いている他の人たちも同意するだろう。ただ、「AIのためのVM」よりも、もっと良いフックが必要だと思う。「パーティショニング」や「アイソレーション」を強調して、データの部分を何とかして強調するべきだね。

「ワークフロー」は排除すべき側面で、LLM+VMの組み合わせでそれができるんだ。ワークフローっていうのは、LLMにツールを提供して、目標を達成するためにそれを使うように頼むことを指す。これ自体はうまくいくけど、予め定義されたツールセットではカバーできない変則的な問題が出てくると失敗する。もう一つの問題は、ワークフローベースのアプローチは常に線形で、DAGであっても、ループがあってもそうだってこと。次のステップは、LLMにツールを提供せず、その場で自分で発明させることだ。一部の問題は強引に解決する必要がある。

それは https://microsoft.github.io/wassette/ のことかな。

基本的には、今のアプリケーションやフレームワークのレイヤーじゃなくて、システムレイヤーでコアAIプリミティブ(チャット補完、ツール呼び出し、コンテキスト管理)を実装するって話だよ。もしこれの実際の実装例を見たいなら(他にもあると思うけど)、Daggerでかなり進んでるよ:

  • サンドボックス化されたランタイムで関数を実行するためのシステムプリミティブは既にあったし、
  • 関数が1) LLMにプロンプトを送ることと、2) 他の関数をコールバックとしてLLMに渡すことができるようにした。
  • これで、関数がLLMを呼び出せて、LLMが関数を呼び出せる、いろんな組み合わせができる。
  • これにより、完全に決定論的なワークフローから自律エージェントまで、幅広く探求できるようになる。特定のプログラミング言語やライブラリ、フレームワークに縛られることなくね。
  • さらに、オブジェクトをLLMに渡して、そのオブジェクトのメソッドをツール呼び出しにマッピングする実験もしてる。これにより、オブジェクトが状態を持てるから、LLMのコンテキストをテキストだけじゃなくて、任意の構造化データにまで拡張できる。複雑なデータベースみたいな追加の依存関係なしにね。 関連するドキュメントページ: https://docs.dagger.io/features/llm