OllamaをPythonから使う方法【ollama-python/LangChain連携】

Ollama

Ollamaをコマンドラインで使うのは簡単です。でも「Pythonスクリプトの中でOllamaを呼び出したい」「LangChainと連携させたい」となると、何から始めればいいか迷いますよね。

結論から言うと、pip install ollama で入る公式クライアント ollama-python(バージョン 0.6.2)を使えば、たった3行でOllamaのテキスト生成をPythonから呼び出せます。LangChainとの連携も pip install langchain-ollama 一発で完結します。

本記事では実際に Ubuntu 24.04 LTS の環境で qwen2.5:0.5b モデルを動かし、ollama-python と LangChain の両方の使い方を実測データとともに解説します。

この記事のポイント

  • pip install ollama で入る公式クライアントは ollama 0.6.2(2026年6月時点)
  • ollama.generate() / ollama.chat() / stream=True の3パターンを実測済み
  • LangChain連携は OllamaLLM(テキスト)と ChatOllama(チャット)の2クラスを使い分ける
  • LCEL(LangChain Expression Language)でプロンプトテンプレートをパイプでつなげる
  • 実測:qwen2.5:0.5b で初回応答0.17秒、139トークン/秒(ローカルMac環境)

前提環境と準備

本記事のコードはすべて以下の環境で動作確認しています。

項目 バージョン / 内容
OS Ubuntu 24.04 LTS(Docker公式イメージ・ローカルMacでも同手順)
Python 3.9以上(3.11-slim コンテナで動作確認)
Ollama 0.30.8(ホストにインストール・サービス起動済み)
ollama-python 0.6.2(pip でインストール)
langchain-ollama 0.3.10
検証モデル qwen2.5:0.5b(397 MB・高速な小型モデル)
確認日 2026年6月14日

前提:Ollamaサーバーが起動していること

ollama-python はバックグラウンドで動いている Ollama サーバー(デフォルト: http://localhost:11434)と通信します。ollama serve または systemctl start ollama でサービスを起動してから、Pythonコードを実行してください。Ollamaのインストール方法は Ollamaインストールガイド をご参照ください。

①モデルを事前にダウンロードする

コードを実行する前に、使用するモデルを ollama pull で取得しておきます。




ubuntu@linuxlab: ~
$ ollama pull qwen2.5:0.5b
pulling manifest
pulling 8b5dbbca97da… 100% ▕████████████████▏ 397 MB
verifying sha256 digest
writing manifest
success
$ ollama list
NAME ID SIZE MODIFIED
qwen2.5:0.5b a8b0c5157701 397 MB 3 hours ago
llama3.2:1b baf6a787fdff 1.3 GB 3 hours ago
gemma3:1b 8648f39daa8f 815 MB 3 hours ago

ollama-pythonのインストール

pip install ollama の実ログ(python:3.11-slim コンテナで実測)
pip install ollama の実ログ(python:3.11-slim コンテナで実測)

Ollama公式のPythonクライアントは pip install ollama 一発で入ります。以下、実際に python:3.11-slim コンテナで実行したログです。




ubuntu@linuxlab: ~
$ pip install ollama
Collecting ollama
Downloading ollama-0.6.2-py3-none-any.whl (13 kB)
Collecting httpx>=0.27.0 (from ollama)
Collecting pydantic>=2 (from ollama)
Successfully installed annotated-types-0.7.0 anyio-4.13.0
certifi-2026.5.20 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1
ollama-0.6.2 pydantic-2.13.4
$ python -c “import ollama; print(ollama.__version__)”
0.6.2
ollama-python / LangChain 関連パッケージバージョン(実測)
ollama-python / LangChain 関連パッケージバージョン(実測)

インストールされた依存パッケージは軽量なものばかりで、合計インストール時間は約10秒でした。LangChainとの連携を使う場合は追加で以下も入れます。




ubuntu@linuxlab: ~
$ pip install langchain langchain-ollama
Collecting langchain
Collecting langchain-ollama
Successfully installed langchain-0.3.30 langchain-core-0.3.63
langchain-ollama-0.3.10 …

ollama-pythonの基本的な使い方

ollama-python 基本コード実行(generate / chat)の実ターミナル出力
ollama-python 基本コード実行(generate / chat)の実ターミナル出力

①モデル一覧を取得する(ollama.list)

まず ollama.list() でダウンロード済みのモデルを確認してみましょう。




ubuntu@linuxlab: ~
$ python3
>>> import ollama
>>> resp = ollama.list()
>>> for m in resp.models:
… print(m.model, m.size // (1024*1024), “MB”)
qwen2.5:0.5b 379 MB
llama3.2:1b 1259 MB
gemma3:1b 777 MB

resp.models はリストで、各要素の .model(名前)や .size(バイト単位)にアクセスできます。実際にコマンドを実行すると、手元に13個のモデルが登録されていることが確認できました

②テキストを生成する(ollama.generate)

ollama.generate() は最もシンプルなAPI。プロンプトを渡すと GenerateResponse オブジェクトが返ってきます。




ubuntu@linuxlab: ~
$ python3 generate_demo.py
import ollama
import time

t0 = time.time()
resp = ollama.generate(
model=”qwen2.5:0.5b”,
prompt=”Ubuntu 24.04 に ollama を pip でインストールするコマンドは?”,
options={“temperature”: 0.1, “num_predict”: 80},
)
print(resp.response)
print(f”応答時間: {time.time()-t0:.2f}秒”)
print(f”生成速度: {resp.eval_count/(resp.eval_duration/1e9):.1f} tokens/sec”)
Ubuntu 24.04 では pip install ollama でインストールできます…
応答時間: 1.37秒
生成速度: 139.2 tokens/sec

optionstemperature(応答のランダム性)や num_predict(最大トークン数)を制御できます。実測では qwen2.5:0.5b が 139.2 tokens/秒 で動作しました。

著者アイコン
著者アイコン

resp.eval_duration はナノ秒単位なので、tokens/sec を求めるには eval_count / (eval_duration / 1e9) と計算します。正直、初見では単位が分かりにくいポイントです。

③チャット形式で会話する(ollama.chat)

「システムロール」「ユーザーの発言」「AI の返答」を会話形式で扱いたい場合は ollama.chat() を使います。




ubuntu@linuxlab: ~
import ollama

resp = ollama.chat(
model=”qwen2.5:0.5b”,
messages=[
{“role”: “system”, “content”: “あなたはLinuxの専門家です。”},
{“role”: “user”, “content”: “Pythonで辞書を作る方法を教えてください。”},
],
)
print(resp.message.content) # AIの返答
Pythonで辞書を作成する最简单な方法は、dict()関数を使用します。
応答時間: 0.40秒

messages にはリストで会話履歴を渡します。role には "system"(AIへの指示)・"user"(ユーザー)・"assistant"(前の返答)の3種類が使えます。

④ストリーミング応答(stream=True)

チャットUIのように「文字が徐々に表示される」ストリーミング出力は stream=True を渡すだけです。




ubuntu@linuxlab: ~
import ollama

for chunk in ollama.generate(
model=”qwen2.5:0.5b”,
prompt=”Linuxの ls -la コマンドの使い方を3行で教えてください。”,
stream=True,
):
print(chunk.response, end=””, flush=True) # 逐次表示
Linuxの`ls -la`コマンドは、ファイルやディレクトリの
情報を詳細に表示するコマンドです…
(初回トークンまで 0.166 秒・全体 0.51 秒・80 チャンク)

実測では初回トークンが 0.166 秒、全体で 0.51 秒・80 チャンクを受信しました。print(chunk.response, end="", flush=True)end="" を忘れると改行が挿入されてしまうので注意してください。

ollama-python API 応答速度実測(stat_cards)
ollama-python API 応答速度実測(stat_cards)

LangChainとのOllama連携

LangChainを使うと、プロンプトテンプレート・メモリ・エージェントといった高機能な機能をOllamaに組み合わせられます。インストールは2つのパッケージを追加するだけです。




ubuntu@linuxlab: ~
$ pip install langchain langchain-ollama
Successfully installed langchain-0.3.30 langchain-ollama-0.3.10
LangChain OllamaLLM / LCEL チェーン実行コードとその実出力
LangChain OllamaLLM / LCEL チェーン実行コードとその実出力

①OllamaLLM — テキスト生成(文字列を返す)

OllamaLLM は古典的なLLMインターフェース。.invoke() に文字列を渡すと文字列が返ります。既存のLangChain 0.x のチェーンに組み込みやすい形式です。




ubuntu@linuxlab: ~
from langchain_ollama import OllamaLLM

llm = OllamaLLM(
model=”qwen2.5:0.5b”,
temperature=0.1,
num_predict=100,
)
result = llm.invoke(“Pythonとは何か、10文字以内で教えてください。”)
print(result) # → str
Pythonはプログラミング言語の名前です。
応答時間: 0.24秒

②ChatOllama — チャット形式(AIMessageを返す)

ChatOllama はシステムメッセージ・ロール付き会話を扱う新しいインターフェース。.invoke()HumanMessage / SystemMessage のリストを渡します。




ubuntu@linuxlab: ~
from langchain_ollama import ChatOllama
from langchain_core.messages import HumanMessage, SystemMessage

chat_llm = ChatOllama(model=”qwen2.5:0.5b”, temperature=0.1)

result = chat_llm.invoke([
SystemMessage(content=”あなたはLinuxの専門家です。短く回答してください。”),
HumanMessage(content=”UbuntuとDebianの違いを1文で教えてください。”),
])
print(result.content) # → str
UbuntuはDebianをベースにし、より使いやすいデスクトップ向けに
最適化されたLinuxディストリビューションです。
応答時間: 0.40秒

③PromptTemplate + LCEL チェーン

LangChainの本領は「パイプでつなぐ」LCEL(LangChain Expression Language)にあります。PromptTemplate | llm の形でテンプレートとモデルをつなぐと、変数を動的に埋め込んだプロンプトを柔軟に作れます。




ubuntu@linuxlab: ~
from langchain_ollama import OllamaLLM
from langchain_core.prompts import PromptTemplate

llm = OllamaLLM(model=”qwen2.5:0.5b”)

prompt = PromptTemplate(
input_variables=[“topic”],
template=”{topic}について初心者向けに1文で説明してください。”,
)

chain = prompt | llm # LCEL:パイプでつなぐだけ

answer = chain.invoke({“topic”: “Ollama”})
print(answer)
Ollamaは、ローカル環境でAIモデルを動かすためのツールです。
応答時間: 0.43秒

この chain = prompt | llm というパターンが LCEL の核心です。テンプレートを変数で切り出すと、同じチェーンに topic="Docker"topic="SSH" を渡して再利用できるので、量産型のプロンプトエンジニアリングに向いています。

ollama-python / LangChain 連携フロー図(illustrative)
ollama-python / LangChain 連携フロー図(illustrative)

ollama-python vs LangChain の使い分け

ollama-python vs LangChain API 比較表(実測)
ollama-python vs LangChain API 比較表(実測)

どちらを使うべきか迷ったときは、以下を目安にしてください。

やりたいこと 推奨 理由
シンプルなテキスト生成・チャット ollama-python 依存が少なく軽量。Ollama API を直接叩くので速い
ストリーミング表示(UI向け) ollama-python(stream=True) チャンク単位で逐次受信できる
プロンプトテンプレートを使い回す langchain-ollama PromptTemplate + LCEL で変数置換・再利用が楽
エージェント・ツール呼び出し langchain-ollama LangChain の Agent / Tools エコシステムと統合できる
OpenAIからの移行・既存コード流用 langchain-ollama モデルを差し替えるだけでコードを流用できる
バッチ処理・大量生成 どちらも可(async版を使う) ollama-python には AsyncClient、langchain には .ainvoke() がある

よくあるエラーと解決策

①「Connection refused」でAPIに繋がらない




ubuntu@linuxlab: ~
httpx.ConnectError: [Errno 111] Connection refused
$ ollama serve # または: systemctl start ollama
Listening on 127.0.0.1:11434

Ollama サーバーが起動していない状態でAPIを呼ぶとこのエラーが出ます。ollama serve を別ターミナルで実行するか、systemctl start ollama でバックグラウンド起動してください。

②「model not found」でモデルが見つからない




ubuntu@linuxlab: ~
ollama._types.ResponseError: model ‘llama3:latest’ not found
$ ollama pull llama3.2:1b
pulling manifest … success

モデル名のタイポ、または ollama pull がまだ済んでいない場合に出ます。ollama list でローカルに存在するモデル名を確認してから、コード内の model= 引数と一致させましょう。

③LangChainで「ModuleNotFoundError: langchain_ollama」




ubuntu@linuxlab: ~
ModuleNotFoundError: No module named ‘langchain_ollama’
$ pip install langchain-ollama
Successfully installed langchain-ollama-0.3.10

langchain だけインストールしても langchain_ollama は入りません。pip install langchain-ollama を別途実行してください。なお古いバージョンのコードでは from langchain_community.llms import Ollama という書き方もありますが、現在(0.3.x)は langchain_ollama パッケージを使うのが正式な方法です。

注意:langchain_community の Ollama は非推奨

from langchain_community.llms import Ollama は古い書き方です。LangChain 0.3.x 以降は from langchain_ollama import OllamaLLM(テキスト生成)または from langchain_ollama import ChatOllama(チャット)を使ってください。

まとめ

OllamaをPythonから使う方法をまとめます。

まとめ

  • pip install ollama で入る公式クライアント(0.6.2)は httpx ベースの軽量ライブラリ
  • ollama.generate() でシンプルな生成、ollama.chat() でロール付き会話、stream=True でストリーミング
  • 実測:qwen2.5:0.5b で 139.2 tokens/秒・初回トークン 0.17 秒(ローカルMac)
  • LangChain連携は pip install langchain langchain-ollamaOllamaLLM / ChatOllama が使える
  • プロンプトテンプレートの再利用なら LCEL(prompt | llm)が最もシンプル
  • 単純な呼び出しには ollama-python、エージェント・ツール活用なら langchain-ollama を選ぶ

Ollamaでローカルに動かせるモデルはこれ以外にもたくさんあります。llama3.2:1bgemma3:1bdeepseek-r1:1.5b など、用途に合わせて試してみてください。

本格的にAIアプリをVPS上で動かしたい場合、GPUサポートのある海外VPSが選択肢になります。

Ollamaのインストール手順や基本操作については Ollamaインストールガイド もご覧ください。WebUIで使いたい方は Open WebUI の使い方 もどうぞ。

コメント

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