📱

「Enchanted」 を使って iPhone から Ollama にアクセスしてみる

2024/06/01に公開

はじめに

なぜか、急にローカルLLMにハマり色々遊んでいます。

私はローカルLLM新参なのでこれまでの状況があまりわかっていませんが、流行っているっぽいので「Ollama」で遊んでいます。

Web UIを使われている方も多いと思うのですが、スマホからできたら楽しいなーと思って調べてたら、iOS向けに配信されている 「Enchanted」 というiPhoneアプリを見つけました。ChatGPTライクなUIで使いやすいです。私は使っていませんが、テキスト読み上げ機能などもあります。

機能の一覧やスクリーンショットは下記から見ていただいた方が早いと思います。

https://github.com/AugustDev/enchanted

というわけで、このアプリを使って「Ollama」にアクセスしてみると地味にハマった部分があったりしたので、メモします。

「Ollama」はインストール済みの前提で書くので、インストールについては下記の記事が役に立つと思います。

https://note.com/masayuki_abe/n/na6b4fc388fb5

※ OSによって大きな差異はないと思うのですが、私はWindows上でOllamaを動かしているので、コマンドとかはWindows前提のお話しになります。

「Enchanted」の準備

下記からダウンロード/インストールできます。

https://apps.apple.com/gb/app/enchanted-llm/id6474268307

以上。

「Ollama」の準備

「Ollama」のインストール直後だとモデルがないと思うので、そこから準備します。

> ollama pull llama3

llama3の部分は適切なモデル名に変えてください。
このコマンドでロードできるモデルは下記に一覧があります。

https://ollama.com/library

ここにないモデルの場合はダウンロードした後、Modelfileというのを書いてコマンドを入力すれば使えます。今回は「Umievo-itr012-Gleipnir-7B」を4bit量子化したものを使わせていただきました。

https://huggingface.co/umiyuki/Umievo-itr012-Gleipnir-7B

Modelfileの書き方例はこんな感じです。

FROM ./Umievo-itr012-Gleipnir-7B_q4_K_M.gguf

PARAMETER temperature 1.0
PARAMETER repeat_penalty 1.2
PARAMETER num_ctx 4096

TEMPLATE """{{ if .System }}{{ .System }} {{ end }}{{ if .Prompt }}USER: {{ .Prompt }} {{ end }}ASSISTANT: {{ .Response }}"""

SYSTEM """あなたはユーザーに親身になり、役立つ、詳細な、丁寧な回答を提供します。"""

PARAMETER stop "USER:"
PARAMETER stop "ASSISTANT:"
PARAMETER stop <s>
PARAMETER stop </s>

Modlefileを作ったら、下記のコマンドでモデルデータを作ります。

> ollama create モデル名 -f ./Modelfile

今回はこう。

> ollama create Umievo-itr012-Gleipnir-7B_q4_K_M -f ./Modelfile

-fオプションをつけないと同じディレクトリにあるModlefileが読み込まれるので、ファイルを明示的に指定する場合は-fオプションをつけてください。

ここで指定するモデル名は後々も出てくるので、わかりやすいものにしておくのをオススメします。

少し時間がかかります。その後確認すれば追加したモデルがリストに表示されるはずです。

> ollama list

NAME                                                    ID              SIZE    MODIFIED
Umievo-itr012-Gleipnir-7B_q4_K_M:latest                 809c4cf8b016    4.4 GB  2 hours ago
llama3:latest                                           365c0bd3c000    4.7 GB  5 hours ago

まずは、手元で試してみます。

> ollama run Umievo-itr012-Gleipnir-7B_q4_K_M

>>> あなたは誰ですか?
私はAIアシスタントの「AnyChat」です。ユーザーに様々な情報や解決方法を提供することが役割です。ご相談事やお悩み、あ
ゆるジャンルの疑問等、気兼ねなくどんなことでもお訊きください。

>>> 明日の夕飯についてアドバイスを下さい
もちろんです!ご家族やお好み、予算等によって異なりますが、これから季節的に旬を迎える食材を取り入れたメニューはいか
でしょうか?
例えば「秋鮭」。脂の乗って美味しい時期を迎えます。簡単に調理できる「ホイル包み焼き」や、子どもさんが喜びそうな「ム
エル」といったレシピはいかがでしょう。
ほかにも秋野菜を使用して作れる「秋野菜のグリル盛り合わせ」や、食欲増進効果のある香辛料「生姜」を使った「豆腐とねぎ
生姜スープ」などもおすすめです。
ご家族全員が喜んでくれそうなメニュー選びに、私たちアシスタントを是非活用してみて下さいね!

大丈夫そうですね、次に行きましょう。

※ なんらかの理由で「Ollama」が落ちていたら下記のコマンドで起動してください

> ollama serve

「Enchanted」で接続してみる

ここまで終わったら「Enchanted」の“Settings”にアドレスを入力して保存を押せばOK……と思っていたのですが、なぜか繋がりません。

「何回も見返したけどアドレスはあってるじゃろーーー???」って、調べてたら下記の記事にたどり着きました。

https://qiita.com/7shi/items/65741fa8ab0a553f51be

デフォルトでは 127.0.0.1:11434 で待ち受けされるため、ローカルからのアクセスに制限されます。

なるほど。というわけで環境変数を設定します。環境変数を設定した後は「Ollama」を再起動しておきましょう。

> set OLLAMA_HOST=0.0.0.0
> set OLLAMA_ORIGINS=192.168.10.*

※ 公式のドキュメントには「ngrok」を使う方法が書いてあります。いわゆるトンネリングツール的なやつで、外出先から使ったりとかするときには割と便利なことに気がつきました。
もし、ご興味ある方がいらっしゃったら下記の記事などを参考にどうぞ。静的ドメインにすると楽だと思いますが、そこはセキュリティ的なアレコレとかとのバランスで。

https://zenn.dev/y_taiki/articles/ngrok_domain

繋がった!

これでiPhoneからも遊べます、やったね!

Discussion