macOS 27にはローカルLLMが入っている
macOS 27には、Appleの言語モデルをTerminalから直接使える fm コマンドが入っています。
追加のアプリをインストールする必要はなく、APIキーもいりません。対応するMacなら、Terminalを開いて次の1行を入力するだけで会話を始められます。
fm chat
いわゆる「ローカルLLM」がOSに最初から入っている、と考えると分かりやすいと思います。ただし、Appleの公式な呼び方は「オンデバイスモデル」または「Apple Foundation Model」で、fm 自体はモデルではなく、それを利用するためのコマンドラインツールです。
今回の実機で確認できたモデルは AFM 3 Core Advanced、コンテキスト長は8,192トークンでした。初回設定や日本語での質問、画像入力など、実行結果を交えながら使い勝手を見ていきます。
検証日: 2026年9月17日
fmの機能はmacOSやモデルの更新によって変わる可能性があります。この記事では、手元のMacで確認できた結果を中心に紹介します。
まずは初回設定
最初に fm available を実行したところ、ライセンスにまだ同意していないという警告が表示されました。
fm available
YOU HAVE NOT AGREED TO THE APPLE FOUNDATION MODELS CLI LEGAL NOTICE & TERMS.
Agreeing to the Apple Foundation Models CLI Legal Notice & Terms applies to every user on the machine, so it must be run as a privileged user (e.g. 'sudo fm license').
画面の案内どおり、次を実行します。
sudo fm license
sudo が必要なのは、同意がそのMacの全ユーザーに適用されるためとのこと。毎回 sudo で fm を起動するわけではありません。
今回は記事用に初回画面も残したかったので、最初は n で終了してスクリーンショットを撮り、その後もう一度実行して同意しました。普通に使うだけなら、内容を確認してそのまま進めれば大丈夫です。
1行で質問する
もっとも簡単なのは、fm respond に質問をそのまま渡す使い方です。
fm respond "Rubyで配列から重複を取り除く方法を簡潔に説明してください"
少し待つと、回答がTerminalへそのまま表示されます。
ChatGPTの画面を開かず、Terminalからさっと文章を整えたり、コードについて聞いたりできるのは意外と便利そうです。
続けて会話する
単発の質問ではなく、前の回答を踏まえて話を続けたい場合は fm chat を使います。
fm chat
スクリーンショットについて質問する
AppleのWWDCセッションでは、--image で画像を渡す例も紹介されています。
fm respond \
"このスクリーンショットに表示されている内容を説明してください" \
--image Screenshot.png
画面に表示されているアプリを尋ねたり、画像内の情報を整理したりできます。テキストだけの小さなモデルという印象だったので、画像も渡せるのは少し意外でした。
JSONで答えてもらう
スクリプトから使うなら、自然な文章よりJSONで返ってきた方が扱いやすいです。
fm schema で出力の形を作り、fm respond --schema に渡すと、指定した構造で結果を受け取れます。
fm schema object \
--name AppsIdentified \
--string app_names \
--array > schema.json
fm respond \
"このスクリーンショットに表示されている内容を説明してください" \
--image Screenshot.png \
--schema schema.json
例えば、Messages・Mail・Calendarが写った画像を入力した場合、出力形式は次のようになります。
{"app_names":["Messages","Mail","Calendar"]}
ローカルAPIとして起動する
fm には、モデルをローカルAPIとして利用するための serve コマンドも用意されています。
fm serve --help
これを使えば、Terminal以外のツールからAppleのモデルを呼び出せそうです。OllamaなどのローカルLLM環境を使ったことがある人には、この形の方が用途を想像しやすいかもしれません。
実際に動いているモデルを確認する
Foundation Modelsフレームワークから、現在使われているモデル名とコンテキスト長を確認できます。
swift -e 'import FoundationModels; let m = SystemLanguageModel.default; print(m.variant.displayName); print(m.contextSize)'
今回の実機では、次の結果になりました。
AFM 3 Core Advanced
8192
このMacでは AFM 3 Core Advanced が使われ、コンテキスト長は8,192トークンでした。
Appleのサポート情報では、Macで AFM Core Advanced を利用できる目安は、M3以降かつユニファイドメモリ12GB以上とされています。ただし、モデルやコンテキスト長は実機で確認するのが確実です。
8,192トークンはどのくらいか
8,192トークンには、質問だけでなく、会話履歴やモデルが生成する回答なども含まれます。8,192トークン分の文章を丸ごと貼れる、という意味ではありません。
短い質問、数百〜数千字程度の要約、小さなコード片、数往復の会話には十分使えそうでした。一方、長い会議録や大きな設計書、リポジトリ全体を一度に読ませるには小さく感じます。
ChatGPTやClaudeの大きなコンテキストウィンドウに慣れていると物足りなく感じますが、Mac上のちょっとした処理に使うモデルと考えれば、用途はありそうです。
最後に、少し意地悪な質問
先ほどの「なぜローマ帝国はスマートフォンを使っていたのですか?」という質問には、前提の誤りを指摘できていました。
それなら、と架空の作品名でも試してみます。
夏目漱石の小説『月曜日のペンギン』のあらすじを教えてください。
今度は「夏目漱石が1916年に発表した短編小説」として、あらすじまで説明してくれました。ペンギンが人間の家庭に迷い込み、家族の一員になるそうです。
改善の余地はありそうですが、現時点のローカルLLMとしては必要十分ではないでしょうか。







