iOS のオンデバイス AI、実践編
iPhone 上で言語モデルを動かす二つの iOS アプリを作る中で書いた六つのガイドです。Swift での llama.cpp、必ずパースできる JSON、フォールバック付きの Apple Intelligence、モデルのダウンロード、フェアな無料トライアル。どのコードも単体で動き、購入は不要です。
Swift と llama.cpp で iPhone 上でローカル LLM を動かす
Swift Package Manager で llama.cpp を iOS アプリに追加し、GGUF モデルを Metal で読み込んで、サーバーなしで iPhone 上でテキストを生成します。
Swift と GBNF 文法でローカル LLM に必ず正しい JSON を出力させる
llama.cpp を GBNF 文法で制約し、小さなオンデバイスモデルが指定した形の JSON しか書けないようにします。文法の解説、Swift でのジェネレータ、注意点をまとめました。
Apple Intelligence 非対応の iPhone にもフォールバックする Foundation Models の使い方
Apple Intelligence 対応端末では Foundation Models、非対応端末ではローカル GGUF モデルやルールにフォールバック。DynamicGenerationSchema で構造化出力を統一します。
長いプロンプトで llama_decode がクラッシュする:GGML_ASSERT n_tokens_all <= n_batch の原因と修正
llama.cpp が長いプロンプトで GGML_ASSERT(n_tokens_all <= cparams.n_batch) により落ちる理由と、Swift での 3 つの修正方法を解説します。
URLSession・ミラー・SHA-256 で 2 GB のモデルを iOS でバックグラウンドダウンロードする
大容量の GGUF モデルを URLSession のバックグラウンドダウンロードで取得。アプリのサスペンドに耐え、再起動後に再接続し、ミラーへフォールバックして SHA-256 で検証します。
再インストールでもリセットされない無料トライアル:キーチェーンと StoreKit 2
数回分の無料利用を提供し、そのカウンターをキーチェーンに保存して再インストールでリセットされないようにします。アンロックは StoreKit 2 の非消耗型課金として販売し、復元にも対応します。