デイリー · 記事 01 · 7 分で読む
- オープンソース
- Hugging Face
Hugging Face、複数のAIモデルをつなぐ開発ツールを公開
10月20日発表 · 10月21日に公式原文を再確認
要約・概要
Hugging Faceが10月20日、Swift開発者向けライブラリAnyLanguageModel 1.0を公開しました。アプリから端末内のモデルにも外部のAIサービスにも同じ方法で要求できるようにする道具で、モデルと外部サービスの料金は開発者が自分で用意します。
メモを要約するアプリを作るとしましょう。利用者が見る入力欄は同じでも、答えを作るAIがスマホの中にあるか外部のサーバーにあるかで、開発者が書く接続コードは変わります。AnyLanguageModelは、この接続コードを一つの形にそろえる道具です。
主な事実
AIモデルの共有プラットフォームを運営するHugging Faceが10月20日、Swift開発者向けライブラリAnyLanguageModel 1.0を公開しました。土台になっているのはApple Foundation Modelsです。Appleの端末に組み込まれたシステムモデルをアプリから使うためのAppleのフレームワークで、AnyLanguageModelはこのAPIのまま、アプリが使うモデルと提供元を選べるようにしました。新しいAIモデルではなく、モデルをアプリにつなぐための道具です。開発チームの発表
端末内のモデルは、llama.cpp・MLX・Core MLを通じて使います。いずれも公開モデルを端末の上で直接動かす実行環境です。外部のモデルには、OpenAI・Anthropic・Google GeminiなどのAPIでつなぎます。リポジトリのコードはApache 2.0ライセンスで公開されています。公式リポジトリ ライセンス

1. アプリ、ライブラリ、モデルの役割
利用者がアプリの入力欄にメモを入れると、アプリはそれをモデルへ送り、返ってきた要約を画面に表示します。その間で要求を送り、答えを受け取るコードを書くのが開発者です。ライブラリ はこうしたコードを書くときに使う道具の集まりで、Swift は主にApple端末向けのアプリを作るときに使うプログラミング言語です。
AnyLanguageModelにモデルは入っていません。どのモデルをつなぐかは開発者が決め、そのモデルを動かす端末の条件や外部サービスの利用条件も開発者が整えます。
%% モデルをつなぐ前に決める順番 · 編集部による整理
flowchart TD
A["必要な結果 · 例: メモの要約"] --> B["計算する場所 · 端末内か外部サーバーか"]
B --> C["その経路の条件 · モデルファイル、APIキー、料金"]
C --> D["実際のメモで結果を比べる"]猫と一緒に読み解く Q&A
- 猫の研究員
メモ要約アプリにこれを入れたら、要約AIも付いてくる?
ポケットノートモデルは自分で選んでつなぐよ。このライブラリが受け持つのはアプリとモデルの間の接続で、要約を作るのはつないだモデルのほう。
- 猫の研究員
開発者じゃなければ、関係ないニュース?
ポケットノート自分でインストールすることはないよ。利用者はメモを入れて要約を受け取るだけで、今回の話はSwiftでアプリを作る開発者向けなんだ。
2. 要求の方法をそろえる共通API
API は、プログラム同士が要求と応答をやり取りする約束です。提供元ごとに約束が異なると、アプリの接続コードも提供元ごとに書くことになります。AnyLanguageModelはアプリ側の要求をFoundation ModelsのAPIにそろえ、その先につなぐモデルだけを差し替えられるようにします。すでにFoundation Modelsで作ったアプリなら、import の1行を書き換えるだけで移行できるとリポジトリは説明しています。公式リポジトリ
猫と一緒に読み解く Q&A
- 猫の研究員
モデルを替えたら、コードはどれくらい直すの?
ポケットノート要求を送って答えを受け取る部分は、ほぼそのままだよ。画像の入力みたいに、モデルによって対応が分かれる機能を使うなら、替えたモデルで一度動かしてみてね。公式リポジトリ
3. 端末で計算するか、サーバーに頼むか
ローカル実行 はモデルの計算を利用者の端末で行う方式、外部提供モデル はアプリがネットワーク経由で提供元のサーバーに要求する方式です。スマホに入っているアプリでも、答えはサーバーで計算されることがあります。
| 比較する点 | 端末内モデル | 外部提供モデル |
|---|---|---|
| モデルの計算 | 利用者の端末 | 提供元のサーバー |
| 準備するもの | 対応端末・メモリ・モデルファイル | 通信・APIキー・利用条件 |
| 費用 | 端末の資源、アプリの配布・運用の負担 | 提供元の料金と呼び出し量 |
| データの経路 | その計算は端末内で完結 | 送ったデータが提供元のサーバーへ移動 |
猫と一緒に読み解く Q&A
- 猫の研究員
端末内モデルなら、メモは外に出ない?
ポケットノート要約の計算は端末の中で終わるよ。ただ、モデルのダウンロードやWeb検索みたいな機能は通信を使うことがあるから、アプリ全体がオフラインで動くとは限らない。
- 猫の研究員
じゃあ、ローカルのほうが速くて安い?
ポケットノートモデルの大きさと端末の性能しだいだね。外部の呼び出し料金はかからないけど、容量・メモリ・電池を使う。
4. 要約から「木曜」が抜けたら
「会議は金曜15時、資料は木曜までに共有」というメモを、二つのモデルに同じように入れるとします。共通APIのおかげで接続コードは同じでも、問題が起きたときに見る場所は症状によって変わります。
| 症状 | 見る場所 |
|---|---|
| 端末内モデルから答えが返らない | モデルファイル・対応端末・メモリ |
| 外部モデルから答えが返らない | 通信・APIキー・サービスの状態 |
| 答えは来たが「木曜」が抜けている | 同じメモで二つのモデルの要約を比べる |
答えが返ってきたなら、接続はできています。でも要約から「木曜」が抜けていれば、利用者に頼まれた仕事は失敗で、それは実際のメモを入れて比べないとわかりません。リポジトリの説明では、答えを決まった形式で受け取る guided generation もすべての提供元で使えます。この機能がそろえるのは形式なので、欄の中身が正しいかは、やはり実際の入力で比べることになります。公式リポジトリ
猫と一緒に読み解く Q&A
- 猫の研究員
どのモデルが自分のメモをうまく要約するかは、どうやって見分けるの?
ポケットノート実際に入れてみるしかないよ。本物のメモをいくつか両方のモデルに同じように入れて、日付や締め切りのような抜けてはいけない内容が残っているか比べてみて。このライブラリはモデルを差し替えやすくするだけで、どちらがいいかは選んでくれない。
5. ライセンス、料金、APIキー
リポジトリのコードは Apache 2.0 ライセンスで公開されています。このライセンスが決めるのはライブラリのコードの利用条件までで、ダウンロードするモデルのライセンスや外部APIの料金は、それぞれの提供元が決めます。ライセンス
| 項目 | 読んでおく条件 |
|---|---|
| ライブラリのコード | Apache 2.0ライセンスと表示条件 |
| ダウンロードするモデル | そのモデルのライセンス・対応環境 |
| 外部API | 提供元の料金・使用量・データ処理条件 |
外部APIを使うなら、APIキーの管理も開発者の仕事です。リポジトリは、キーをアプリにそのまま埋め込まないよう案内しています。配布したアプリは解析され、キーを抜き出されるおそれがあるからです。その代わりに、利用者が自分のキーを入れる方法と、開発者のサーバーを経由して要求する方法を、それぞれの長所と短所とともに紹介しています。認証情報の案内
猫と一緒に読み解く Q&A
- 猫の研究員
キーをアプリに入れられないなら、作っている間のテストはどうするの?
ポケットノート開発やテストの間は環境変数に入れて使ってかまわない、とリポジトリは説明しているよ。配布する前に、利用者のキーか自分のサーバーを経由する方法に切り替えればいい。
まとめ
このニュースからわかること
AnyLanguageModelは、Swiftアプリが端末内のモデルと外部のモデルを同じ方法で呼び出せるようにする接続の道具です。モデルを替えるときに直すコードは減ります。どのモデルを使うか、料金とAPIキーをどう扱うか、要約が使えるものかどうかは、これまでどおり開発者が実際の入力で決めることになります。
ローカルAIになじみがなければ、前回の週間記事でモデルが端末の中で動く仕組みから読めます。