VPSのOllamaを、自分のアプリからOpenAI互換APIで呼ぶ
Ollamaは、OpenAIのAPIと同じ形式のエンドポイントを持っています。そのため、OpenAI向けに書いたプログラムは、 接続先を自分のサーバーに替えるだけで動くことがあります。ここでは、VPSで動かしているOllamaを、 手元のPCから呼ぶ方法を説明します。先にOllamaのインストール手順を済ませて、モデルを取得しておいてください。
1手元のPCから、トンネルでつなぐ
Ollamaを外に公開せず、SSHの通り道を借ります。手元のPCで、次を実行したままにします。
ssh -N -L 11434:localhost:11434 ユーザー名@サーバーのIPアドレスこれで、手元の http://localhost:11434 が、VPSのOllamaにつながります。
2curlで試す
OpenAIと同じ形式の /v1/chat/completions に送ります。 モデル名は、取得済みのものを指定します。
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2:3b",
"messages": [{ "role": "user", "content": "VPSとは何ですか。一文で答えてください。" }]
}'ほかに、/v1/models(取得済みのモデルの一覧)、/v1/embeddings(文章の数値化。検索や社内文書への質問に使う)、/v1/completions も使えます。
3Pythonで呼ぶ(OpenAIのライブラリを使う)
OpenAIの公式ライブラリを入れます。
pip install openai接続先(base_url)を、トンネルの先に替えるだけです。api_key は必須の引数ですが、Ollamaは値を無視します。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # 必須の引数だが、Ollamaは無視する
)
reply = client.chat.completions.create(
model="llama3.2:3b",
messages=[{"role": "user", "content": "VPSとは何ですか。一文で答えてください。"}],
)
print(reply.choices[0].message.content)4既存のアプリに使うときの注意
- 接続先を替える:アプリの設定にある「APIのベースURL」を、
http://localhost:11434/v1/に替えます。 - モデル名が固定のアプリ:
gpt-3.5-turboのような名前を前提にしている場合は、取得済みのモデルに別名を付けます。ollama cp llama3.2:3b gpt-3.5-turbo - 会話の長さ(コンテキスト)を変えたいとき:OpenAI形式のリクエストには、その指定がありません。
num_ctxを書いたModelfileから、別名のモデルを作ってそれを呼びます。 ただし、長くするほどメモリが増えます(メモリの見積もりツール)。 - 使えない機能:
tool_choice、logprobs、画像のURL指定などは未対応です。 対応していない値は、無視されずに400のエラーになります。
よくある質問
APIキーは何を入れればよいですか
OpenAI向けのライブラリは値の入力を求めますが、Ollamaはその値を無視します。公式の例では 'ollama' と書いています。何を入れても動きますが、これは認証ではありません。
OpenAIの機能は、すべて使えますか
使えない項目があります。たとえば tool_choice、logprobs、画像のURL指定(Base64の画像は使えます)は対応していません。対応していない値は無視されず、400のエラーが返ります。
インターネットに公開してよいですか
お勧めしません。Ollamaには認証がありません。自分のPCからは、SSHトンネルでつないでください(Ollamaのインストール手順の「手順5」)。
ToolkITBoxのAIツール・解説と併用する
姉妹サイトの、この記事と相性のいいページです。
- Local LLM Memory Estimator
モデルファイルとKVキャッシュから、必要なメモリを見積もる — toolkitbox.net
- メモリはどれだけ要るか
モデルファイルとKVキャッシュ(会話の長さで増える分)の考え方 — toolkitbox.net
- LLM API Cost Calculator
APIの月額を見積もり、自前のVPSと比べる材料にする — toolkitbox.net
- 自前のVPSでAIを動かす
必要なメモリの見積もりと、公開してはいけないもの — toolkitbox.net
- LLMをローカルで動かす
Ollama・LM Studio・llama.cppの入れ方とモデルの入手先 — toolkitbox.net
- CIDR Calculator
ファイアウォールの許可レンジを計算する — toolkitbox.net
- Password Generator
サーバー用に強いパスワードをその場で生成 — toolkitbox.net
内容はOllama公式のドキュメント(OpenAI compatibility)で確認した範囲です。バージョンアップで対応が変わることがあります。