Ollamaとは|ローカルでLLMを動かせるCLIツールの使い方まとめ

概要

今回はオープンソースのLLMをローカルPC上で動かせるツール「Ollama」について紹介していきます。

生成AI系のツールを触っていると、どうしても入力した内容を外部に送信する必要があり、機密性の高い内容を送信できない場面がありますよね。

Ollamaを使うと、モデルのダウンロードから実行、API提供までを1つのCLIツールで完結できて、Dockerでイメージをpullしてrunする感覚に近いです。

インストール方法からCLI・REST API・Python・JavaScriptでの呼び出し方まで、自分が実際に触って把握した内容をまとめていきます。

それではやっていきましょう!

目次

Ollamaとは

Ollamaは、オープンソースのLLM(大規模言語モデル)をローカルPC上で簡単に実行・管理できるプラットフォームです。

Go言語で開発されており、内部ではllama.cppをバックエンドとして利用しています。

モデルのダウンロード・実行・API提供までを1つのCLIツールで完結させられる点が特徴で、Docker的な感覚で「イメージ(モデル)をpull→run」することができます。

主な特徴

  • ローカル実行
    • ネットワークに送信せず自分のマシン上で推論できるので、プライバシー確保やオフライン利用がしやすい
  • クラウド実行オプション
    • より大きなモデルはOllama側のクラウドで実行することも可能
  • 豊富なモデル対応
    • チャット・コーディング・画像理解(ビジョン)・埋め込み(embedding)・推論特化モデルなど多様な用途に対応
  • OpenAI互換API
    • 既存のOpenAI SDKベースのアプリをほぼそのまま接続できる
  • 多言語クライアント
    • Python、JavaScriptの公式ライブラリを提供
  • モデルカスタマイズ
    • Modelfileを使って独自のシステムプロンプトやパラメータを持つカスタムモデルを作成できる
  • 外部アプリ統合
    • ollama launchコマンドで、対応するコーディングエージェントなどと連携起動できる機能も追加されている

対応モデルの例(2026年8月時点)

公式のモデルライブラリで確認できた範囲だと、主要なモデルファミリーは以下の通りです。

  • Meta
    • Llama 3.1 / 3.2 / 3.3 / 4系
  • Alibaba
    • Qwen 2 / 2.5 / 3系(3, 3.5, 3.6, 3.8)
  • Google
    • Gemma 2 / 3 / 4系
  • Microsoft
    • Phi 2 / 3 / 3.5 / 4系
  • DeepSeek
    • DeepSeek-R1、DeepSeek-V2〜V4系
  • Mistral
    • Mistral Small/Large、Mixtral、Mistral Nemo
モデルは日々更新されるため、最新の対応状況は公式のモデルライブラリページで確認するのが確実です。

インストール方法

macOS・Linuxは以下のコマンドでインストールできます。

macOS・Linux

1
curl -fsSL https://ollama.com/install.sh | sh

Windows(PowerShell)は以下です。

Windows

1
irm https://ollama.com/install.ps1 | iex

Docker、Homebrew、Pacmanなどのパッケージマネージャからも導入できます。

CLIでの使い方

インストールが終わったら、まずはCLIで触ってみるのが手っ取り早いです。

コマンド 説明
ollama run <model> モデルを実行してチャット開始 ollama run gemma4
ollama pull <model> モデルのダウンロードのみ実行 ollama pull llama3.3
ollama ls ダウンロード済みモデル一覧を表示 ollama ls
ollama ps 現在メモリ上で稼働中のモデルを表示 ollama ps
ollama stop <model> 稼働中モデルを停止 ollama stop gemma4
ollama rm <model> モデルを削除 ollama rm gemma4
ollama serve APIサーバーを起動(通常は自動起動) ollama serve

ollama runは実行中のモデルが無ければ自動でpullしてくれるので、最初はollama pullを意識せずollama runだけ叩けば十分です。

カスタムモデルの作成

Modelfileを書くと、システムプロンプトやパラメータを固定した独自モデルを作れます。

Modelfile

1
2
3
4
5
6
7
8
FROM gemma4

# システムプロンプトを固定
SYSTEM """
あなたは丁寧な日本語で回答するカスタマーサポートAIです。
"""

PARAMETER temperature 0.3

カスタムモデルの作成・実行

1
2
ollama create support-bot -f Modelfile
ollama run support-bot

用途ごとにシステムプロンプトを固定したモデルを何個も作っておけるので、同じベースモデルでもキャラ違いのアシスタントを切り替えて使えるのは結構便利です。

REST APIでの実装例

Ollamaはインストール後、ローカルのhttp://localhost:11434でAPIサーバーとして常駐します。

チャットAPI

チャットAPIの呼び出し

1
2
3
4
5
6
7
curl http://localhost:11434/api/chat -d '{
"model": "gemma4",
"messages": [
{ "role": "user", "content": "Ollamaの特徴を3つ教えて" }
],
"stream": false
}'

単純な生成API

生成APIの呼び出し

1
2
3
4
5
curl http://localhost:11434/api/generate -d '{
"model": "gemma4",
"prompt": "空が青い理由を教えて",
"stream": false
}'

Pythonでの実装例

公式のPythonライブラリは以下でインストールできます。

インストール

1
pip install ollama

基本のチャット

基本のチャット

1
2
3
4
5
6
from ollama import chat, ChatResponse

response: ChatResponse = chat(model='gemma4', messages=[
{'role': 'user', 'content': '空が青い理由を教えて'},
])
print(response.message.content)

ストリーミング応答

ストリーミング応答

1
2
3
4
5
6
7
8
9
10
from ollama import chat

stream = chat(
model='gemma4',
messages=[{'role': 'user', 'content': '空が青い理由を教えて'}],
stream=True,
)

for chunk in stream:
print(chunk['message']['content'], end='', flush=True)

埋め込み(Embeddings)の取得

RAG(検索拡張生成)の前処理などで使う埋め込みベクトルも取得できます。

埋め込みの取得

1
2
3
4
5
6
7
8
9
10
import ollama

# 単一テキスト
result = ollama.embed(model='gemma4', input='空は光の散乱で青く見える')

# バッチ処理
results = ollama.embed(
model='gemma4',
input=['空は青い', '草は緑色である'],
)

非同期処理(AsyncClient)

非同期処理

1
2
3
4
5
6
7
8
9
import asyncio
from ollama import AsyncClient

async def main():
message = {'role': 'user', 'content': '空が青い理由を教えて'}
response = await AsyncClient().chat(model='gemma4', messages=[message])
print(response.message.content)

asyncio.run(main())

JavaScript(Node.js)での実装例

インストール

1
npm install ollama

基本のチャット

1
2
3
4
5
6
7
8
import ollama from 'ollama';

const response = await ollama.chat({
model: 'gemma4',
messages: [{ role: 'user', content: '空が青い理由を教えて' }],
});

console.log(response.message.content);

Python版・JS版どちらもAPIの形がほぼ揃っているので、片方の書き方を覚えれば移植は難しくないです。

ユースケース

  • 社内向けチャットボット
    • 機密情報を外部送信せずにローカルLLMで運用できる
  • RAG(検索拡張生成)
    • ollama.embedで文書をベクトル化し、社内ドキュメント検索と組み合わせる
  • コーディング支援
    • コーディング特化モデルをローカルで動かし、エディタ拡張やCLIエージェントから利用する
  • オフライン環境でのプロトタイピング
    • ネットワークがない環境でもLLM機能を試せる
  • 既存OpenAI互換アプリの移行
    • OpenAI SDKを使ったアプリのエンドポイントをOllamaに向けるだけで動作確認できる

締め

いかができたか?
claudeなどのサブスクサービスはお金が高いので、オフラインでできるタスクはこっちでやるのもありかもしれないです!

あとは機密情報を外部に出したくないけど、AIにデータを読ませたい場合は、Ollamaを使えばよいと感じました。

皆さんもぜひ使ってみてくださいね!

以上となります。
スペック問題はあるけど、これはかなり使えますね!
それではお疲れさまでした。