Mozilla、オープンモデルはエージェント対応だがAPIは未整備と指摘
本文の状態
日本語全文を表示中
詳細モードで約7分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Mozilla AI
Mozilla AI は、OpenAI や Anthropic の API に依存するエージェント開発において、オープンモデルの互換性レイヤーが不足している実態を指摘し、その課題を解決するオープンソースゲートウェイ「Otari」を発表した。
AI深層分析を開く2026年8月4日 12:03
AI深層分析
キーポイント
オープンモデルとフロンティア API のギャップ
モデルの推論能力自体は向上したが、ツール呼び出しやストリーミングなどの周辺機能における実装差が、生産環境でのエージェント構築を阻害している。
「OpenAI 互換」の限界
vLLM や Ollama 経由で提供される多くのエンドポイントは、単にチャットメッセージを送受信できるだけで、プロダクションレベルのエージェントが求める複雑な振る舞い契約を満たしていない。
具体的な機能不全の事例
ツール呼び出しの構文違い、サーバーサイドでのウェブ検索やファイルアップロードの欠如、コード実行環境の不在など、スイッチング時に複数の致命的な不具合が発生する。
Otari の登場と役割
Mozilla AI は、エージェントアプリケーションとオープンモデルランタイムの間に位置し、互換性レイヤー、ツール実行環境、コンテキスト管理、観測性を提供する「Otari」を開発した。
プラットフォーム層の欠如による開発負担
オープンモデル自体に問題があるのではなく、キャッシュや詳細な使用状況報告といった機能を提供するプラットフォーム層が欠落している。そのため、アプリケーションチームは同じギャップを個別に発見して補うために、事実上半分のフロンティア API を再構築することになる。
重要な引用
The gap between frontier APIs and open models is no longer about model quality.
"OpenAI-compatible" mostly means "you can send chat messages and get tokens back."
Tool calls arrive in a slightly different dialect, and streaming emits partial JSON fragments the UI was never built to parse.
When an open endpoint does not, the application team rebuilds it. At the end of that path, you may still be running the same open model you started with, but you have built half a frontier API around it.
編集コメントを表示
編集コメント
この記事は、オープンソースモデルの実用化において「推論能力」だけでなく「エコシステムや API の完備性」が不可欠であることを浮き彫りにしている。開発者は Otari のようなミドルウェアの活用を検討することで、コスト削減と柔軟性を両立できる可能性を秘めている。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
image過去数ヶ月、私は Anthropic、OpenAI、Gemini、あるいはそれらと API 互換のあるモデルを動かす「Octonous」というエージェント型プロダクトの開発に注力してきました。つまり、単にモデルを呼び出すだけでなく、その周囲のプロダクト面にも深く依存していたのです。ツール呼び出し、ストリーミング処理、ファイルの扱い、ウェブ検索、コード実行、プロンプトキャッシュ、トークン課金、コンテキスト管理、そしてエージェントが「壊れやすい」ものではなく「信頼できる」ものとして機能させるための細かい振る舞いの契約などです。
この経験から、はっきりとわかったことがあります。最先端 API とオープンモデルの差は、もはやモデル自体の品質の問題ではありません。オープンモデルでも、すでに推論、ツール呼び出し、コード記述、構造化出力を、大規模なエージェント型プロダクトが求めるレベルで十分にこなすことができます。真のボトルネックは、モデルそのものではなく、その周囲にある生態系です。
vLLM、llama.cpp、Ollama、あるいは「OpenAI 互換」と謳うホストエンドポイントを通じてオープンモデルを呼び出す際、よくあるのが「OpenAI 互換」の意味が「チャットメッセージを送ってトークンを返してもらうだけ」という狭い範囲に限定されてしまうことです。
それは確かに有用ですが、実運用でエージェントが静かに依存してきた契約とは程遠いものです。
このギャップこそが、私たちが Otari で取り組んできた課題です。Otari はエージェントアプリケーションとオープンモデルランタイムの間に位置するオープンソースゲートウェイで、互換性レイヤー、ツールランタイム、コンテキスト管理機能、そして観測機能を兼ね備えています。
もしあなたのエージェントが Anthropic や OpenAI の API に準拠しているなら、Otari の役割は、オープンモデルに対して同じ言語とプラットフォーム挙動で回答させることです。
切り替え時に何が壊れるか
具体的な失敗事例を見てみましょう。
今日、Anthropic モデル上で動作している Octonous エージェントを想定してください。このエージェントは、ツール呼び出しの進行状況を UI にストリーミング配信し、出典を明記しながらウェブ検索を実行し、サンドボックス内で生成されたコードを実行し、ユーザーからのファイルアップロードを受け付けます。さらに、特定のユースケースに基づいてトークン消費を最適化するために、カスタムプロンプトキャッシュを活用しています。
同じエージェントを、OpenAI 互換エンドポイントの背後にある強力なオープンモデルに指向させてみてください。
基本的なチャットは初回で成功します。これがこのギャップを欺く要因となっています。しかし、その後、一つずつ問題が発生します。
ツール呼び出しがわずかに異なる方言で届き、ストリーミングによって UI が解析できるように設計されていない不完全な JSON 断片が出力されます。
ウェブ検索はサーバーサイドに存在しないため、エージェントは信頼して古いトレーニングデータから出典なしで回答します。
ファイルアップロードにはライフサイクルがありません。アップロードエンドポイントも参照先もなく、ユーザーに戻すアーティファクトもありません。差し込まれたファイルは保存する場所がなく、下流の処理が指し示すべき対象も存在しません。
コード実行機能は存在せず、アップストリームのファイルライフサイクルもありません。仮に生成されたコードが実行できたとしても、開くべきファイルが存在しない状態です。「この CSV を分析してください」という指示も二度失敗します。
コンテキストの圧縮処理はサーバー側で対応されていないため、長文の会話管理には独自のロジックを実装する必要があります。
カスタムプロンプトキャッシュが機能しなくなり、提供される場合でも、サービングランタイムが実装する自動キャッシングに頼るしかありません。そもそもキャッシュ機能が提供されないケースもあります。
利用状況レポートの詳細度が不十分で、ユーザーに対して実行コストや失敗理由を説明できなくなりました。
これらはモデル側の責任ではありません。モデル自体は十分に能力を持っている可能性があります。問題を起こしているのはプラットフォーム層です。
フロンティア API がこれらの機能のいずれかを提供する場合、アプリケーション側は自然にそれらに依存するようになります。一方、オープンエンドポイントがそれらを備えていない場合、アプリケーションチームは自前で再構築する必要があります。その過程を経て、最終的に使っているのは当初と同じオープンモデルであっても、その周囲にはフロンティア API の半分を自作したような構造ができ上がってしまいます。
これが「モデルの切り替え」の背後にある見えないコストであり、Otari はこの部分を吸収するために存在します。
エージェントビルダーとして私が望むプロダクト
私が望むプロダクトは、最も良い意味で地味なものです。現在 Claude、GPT、または Gemini で動作している Octonous エージェントを、オープンモデル向けに指し示すだけで、そのまま継続してリリースできるようなものが必要です。ツールが機能し、ファイルが扱え、ストリーミングによって UI が生き生きとし、利用状況が理解可能で、失敗も十分に標準化されてアプリケーションが回復できるようにすることです。
すべてのオープンモデルが、最先端の機能を自動的にサポートするようになるとは考えていません。重要なのは、各アプリケーションチームが同じ課題を個別に発見し、手作業で穴埋めする必要をなくすことです。
オープンモデルにはすでに知能があります。最先端 API を活用して開発しているエンジニアたちは、プラットフォームが多くの処理を代行してくれることに慣れきっています。これは怠惰ではなく、レバレッジ(効率化)です。オープンモデルを実際の製品で競争力を持たせるためには、同等のレバレッジが必要であり、それをすべてのコードベースで再構築する必要はありません。
現状
Otari はまだ初期段階ですが、これは宣言文書ではありません。現在、GitHub リポジトリで提供されているのは、40 以上のプロバイダーに対応する 3 つの生成インターフェース(Chat Completions、Responses、Anthropic Messages)、バーチャルキー、実行前のユーザー別・キー別の予算制限、キャッシュトークン課金を含む利用状況とコストの追跡、内蔵 Web 検索およびサンドボックス化されたコード実行、サーバーサイド MCP、ローカルモデル用のファイルアップロード、オプトイン型のガードレールです。
ローカルで実行して 1 分ほどでメーター請求リクエストを送ることもできますし、otari.ai に接続してプラットフォームに任せることも可能です。
Claude、GPT、または Gemini でエージェントを動かしていて、それをオープンモデルでも実行したいと考えている場合:ゲートウェイを実行環境で試すか、Issue を開くか、あるいは何がボトルネックになっているかを教えてください。それが、開発者が実際に直面する順序で私たちが解消しようとしている課題です。
原文を表示
imageI have spent the last months building Octonous, an agentic product that runs on Anthropic, OpenAI, Gemini, and any model served through an API compatible with those. That means I have not just been calling models. I have been depending on the product surface around them: tool calling, streaming, files, web search, code execution, prompt caching, token accounting, context management, and all the small behavioral contracts that make an agent feel reliable instead of fragile.
That experience has made one thing clear: the gap between frontier APIs and open models is no longer about model quality. Open models can already reason, call tools, write code, and produce structured output well enough for a large class of agentic products. The blocker is everything around the model.
When you swap a frontier model for an open model served through vLLM, llama.cpp, Ollama, or any hosted "OpenAI-compatible" endpoint, you discover that "OpenAI-compatible" mostly means "you can send chat messages and get tokens back."
That is useful, but it is not the contract a production agent has quietly grown to rely on.
This gap is exactly what we have been working on with Otari: an open source gateway that sits between agent applications and open model runtimes: part compatibility layer, part tool runtime, part context manager, part observability surface.
If your agent speaks the Anthropic or OpenAI APIs, Otari's job is to make an open model answer in the same language and with the same platform behavior.
What Breaks When You Switch
Here is a concrete version of the failure.
Take an Octonous agent that is running on an Anthropic model today: it streams tool-call progress to the UI, searches the web with cited sources, executes generated code in a sandbox, accepts user file uploads, and leans on custom prompt caching to optimize token consumption based on our specific usage patterns.
Point that same agent at a strong open model behind an OpenAI-compatible endpoint.
Basic chat works on the first try, which is exactly what makes the gap deceptive. Then, one by one:
Tool calls arrive in a slightly different dialect, and streaming emits partial JSON fragments the UI was never built to parse.
Web search does not exist server-side, so the agent confidently answers from stale training data with no sources.
File uploads have no lifecycle: no upload endpoint, no references, no artifacts to hand back to the user. A dropped-in file has nowhere to live and nothing downstream to point at it.
Code execution does not exist at all, and with no upstream file lifecycle, the generated code would have nothing to open even if it ran. "Analyze this CSV" fails twice.
Context compaction is not handled server-side, so we have to implement our own logic to manage long conversations.
Our custom prompt caching no longer works, and we are left with whatever automatic caching the serving runtime has implemented, if it provides caching at all.
Usage reporting is not detailed enough so you can no longer tell the user what a run cost or why it failed.
None of this is the model's fault. The model may be perfectly capable. What broke is the platform layer.
When a frontier API provides one of these pieces, the application naturally starts depending on it. When an open endpoint does not, the application team rebuilds it. At the end of that path, you may still be running the same open model you started with, but you have built half a frontier API around it.
That is the hidden surface area behind a "model switch," and it is the part Otari exists to absorb.
The Product I Want as an Agent Builder
The product I want is boring in the best way. I want to take an Octonous agent that currently runs on Claude, GPT, or Gemini, point it at an open model, and keep shipping. Tools working, files working, streaming keeping the UI alive, usage intelligible, failures normalized enough that the application can recover.
I do not expect every open model to magically support every frontier feature. The point is to stop forcing every application team to discover and paper over the same gaps independently.
Open models already have the intelligence. Developers building on frontier APIs are used to the platform doing a lot of work for them: that is not laziness, it is leverage. If we want open models to compete in real products, they need comparable leverage, and it should not have to be rebuilt in every codebase.
Where We Are
Otari is early, but it is not a manifesto. What ships today in our GitHub repository: the three generation surfaces (Chat Completions, Responses, Anthropic Messages) in front of 40+ providers, virtual keys, per-user and per-key budgets enforced before the call runs, usage and cost tracking with cached-token accounting, built-in web search and sandboxed code execution, server-side MCP, file uploads for local models, and opt-in guardrails. You can run it locally and make a metered request in about a minute, or connect it to otari.ai and let our platform run it for you.
If you have an agent on Claude, GPT, or Gemini and an open model you wish it ran on: try the gateway against your runtime, open an issue, or tell us which missing feature blocks you first. That is the gap we are closing, in the order agent builders actually hit it.
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み