Ollama APIを業務に活かすメリットまとめ

AI

前回、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呼出サンプル

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呼出サンプル

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#呼出サンプル

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から簡単に利用できました。
ローカル環境での利用なので、データを外部送信せずに利用することができ、外部サービスの従量課金も避けることができます。
ひとまずどういった使い方ができるか試してみたり、実際にツールやシステムに組み込んで試してみると良いかもしれません。
できることの幅が格段に広がります。

コメント

タイトルとURLをコピーしました