前回、Ollamaを使用してみました。
その際、チャット形式で入力していましたが、APIでも使用することができます。
REST APIが提供されているため、簡単に利用することができます。
今回はOllama APIを使用してみたいと思います。
Ollama APIのメリット
Ollama API というよりローカルLLMのメリットですが、様々あります。
データを外部送信不要なことと、システムへの組込みが容易なことが個人的にはメリットです。
❇️ シンプルな導入
簡単コマンド
外部サービス契約不要
❇️ セキュリティ
データを外部に送信せず、ローカルで処理可能
顧客情報や機密データを外部に出さずに使用できる
❇️ オフライン利用可能
アプリとモデルをダウンロードすれば、その後インターネット接続不要
オフライン環境や閉域ネットワークでも利用可能
❇️ アプリやシステムへの組込み
REST APIなので、既存システムとの親和性も高く連携が容易
❇️ コスト効率
クラウドAPIの従量課金を避けられる
開発時のプロトタイピングに最適
Ollama APIを使用するには
1️⃣ Ollamaのインストール
こちらはAPI用のインストールは不要で、前回インストールしたOllamaがあれば大丈夫です。
Ollamaをまだインストールしていなければ、インストールしてください。
Ollamaをインストールしていれば、チャット形式のGUIもOllama APIも両方使用することができます。
2️⃣ モデルのダウンロード
こちらも前回ダウンロードしたモデルで大丈夫です。追加作業はありません。
前回はGUIで選択してダウンロードしましたが、コマンドでのダウンロードも可能です。
# ollama pull [モデル名]
ollama pull gpt-oss:20b
3️⃣ Ollamaサーバー起動
下記のコマンドでサーバーが起動します。
Ollamaのアプリを起動している場合は起動済のため、実行不要です。
ollama serve
Ollama APIの機能
Ollama APIはREST APIで提供されています。
Ollamaをインストールするとサービスが起動し、HTTPリクエストを送信することでOllamaの機能にアクセスできます。
主な機能は下記のものがあります。
✅️ テキスト生成
POST /api/generate: 指定されたプロンプトに基づいてテキストを生成します。ストリーミング(逐次生成)もサポートしています。
✅️ チャット
POST /api/chat: 会話形式でテキストを生成します。複数のメッセージを含む履歴を扱えます。
✅️ 埋め込み(Embedding)
POST /api/embeddings: 入力されたテキストのベクトル表現(埋め込み)を生成します。
RAG(検索拡張生成)システムで、文書の意味的な類似性を計算するのに不可欠な機能です。
✅️ モデル
POST /api/pull: 指定されたモデルをOllamaのライブラリからダウンロードします。
POST /api/push: ローカルのモデルをOllamaのライブラリにアップロードします。
GET /api/tags: ローカルに保存されているすべてのモデルのリストを取得します。
DELETE /api/delete: 指定されたモデルをローカルから削除します。
POST /api/copy: 既存のモデルを新しい名前でコピーします。
POST /api/show: モデルに関する詳細情報(パラメーター、ライセンスなど)を表示します。
Ollama API呼出しサンプル
REST APIで提供されているため、リクエストを送信すればOKです。
使用するモデルとプロンプトを設定するだけなので、非常に簡潔ですね。
📒 Python呼出サンプル
import requests
import json
url = "http://127.0.0.1:11434/api/generate"
payload = {
"model": "gpt-oss:20b",
"prompt": "Hello from Python!",
"stream": False
}
resp = requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(payload))
resp.raise_for_status()
data = resp.json()
print(data["response"])
📒 JavaScript呼出サンプル
// node sample: node sample.mjs
const res = await fetch("http://127.0.0.1:11434/api/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "gpt-oss:20b",
prompt: "Hello from JavaScript!",
stream: false
})
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data.response);
📒 C#呼出サンプル
// dotnet add package System.Net.Http.Json
// dotnet add package System.Text.Json
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
using System.Text;
var http = new HttpClient();
var url = "http://127.0.0.1:11434/api/generate";
var payload = new
{
model = "gpt-oss:20b",
prompt = "Hello from C#!",
stream = false
};
using var res = await http.PostAsync(
url,
new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json")
);
res.EnsureSuccessStatusCode();
using var stream = await res.Content.ReadAsStreamAsync();
using var doc = await JsonDocument.ParseAsync(stream);
var response = doc.RootElement.GetProperty("response").GetString();
Console.WriteLine(response);
おわりに
Ollama APIを利用すれば、LLMをREST APIから簡単に利用できました。
ローカル環境での利用なので、データを外部送信せずに利用することができ、外部サービスの従量課金も避けることができます。
ひとまずどういった使い方ができるか試してみたり、実際にツールやシステムに組み込んで試してみると良いかもしれません。
できることの幅が格段に広がります。
コメント