「ローカルLLMを自分のPCで動かす」では、最後に次のコマンドを実行しました。

python polite_rewriter.py

この一行で文章整形アプリが起動し、入力した文章がローカルLLMへ渡され、整えられた文章が画面に表示されます。

処理の途中では、Terminal、Python、Python用のollamaパッケージ、Ollama、qwen3.5:4bが順番に働いています。VS Codeは、Pythonファイルを書き、Terminalを開くための作業場所です。

どれも同じPC上で使うため、最初はひとまとめに見えます。しかし、担当は別々です。その違いを知ると、先ほどの一行が何を動かしていたのか、エラーがどこで起きたのかを追えるようになります。

VS Codeを作業場所として、Python、pip、Ollama、ローカルモデルがどのようにつながるかを示した図

一行のコマンドを分解する

文章整形アプリが返答を表示するまでには、次のものが関わっています。

名前 担当すること
Terminal、PowerShell コマンドを入力し、PC上のプログラムを呼び出す
VS Code コードやファイルを編集し、Terminalを同じ画面で開く
Python .pyファイルに書かれた命令を読み、実行する
pip Python環境へ追加のパッケージをインストールする
Python用ollamaパッケージ PythonのコードからOllamaへリクエストを送る
Ollama モデルを管理し、PC上で動かして、ローカルAPIを提供する
qwen3.5:4b 入力を受け取り、文章を生成するAIモデル

特に紛らわしいのは、Ollama本体、Python用ollamaパッケージ、AIモデルの三つです。これらは別々のものです。順番に見ていきましょう。

Terminalはコマンドの入口

macOSの「ターミナル」やWindowsの「PowerShell」は、文字でPCへ指示を出すためのアプリです。たとえば、次の二つのコマンドは別のプログラムを呼び出します。

ollama pull qwen3.5:4b
python polite_rewriter.py

最初の行はOllamaを呼び出し、二つ目の行はPythonを呼び出しています。Terminalがモデルを動かしたり、Pythonコードを解釈したりしているわけではありません。入力されたコマンドを見て、対応するプログラムを起動しています。

Terminalには「現在いるフォルダー」があります。python polite_rewriter.pyを実行したのにファイルが見つからない場合は、Pythonより前に、Terminalがpolite_rewriter.pyのあるフォルダーを見ているか確認します。

VS Codeはコードを書く場所

Pythonファイルを書くときは、文字をプレーンテキストとして保存できるエディターを使います。代表的なコードエディターの一つが、Visual Studio Code、略してVS Codeです。

たとえば、次のことを一つの画面で行えます。

  • プロジェクト内のファイルを一覧で見る
  • Pythonコードを色分けして表示する
  • ファイルを編集して保存する
  • 画面の中でTerminalを開く

ただし、VS Code自身がPythonコードを実行したり、AIモデルを動かしたりするわけではありません。VS Code内のTerminalでpythonollamaを実行した場合も、呼び出されるのはPCに入っているPythonやOllamaです。

polite_rewriter.pyのようなPythonファイルは、VS Codeで作成して保存できます。複数のファイルを扱うときも、左側の一覧から目的のファイルを選び、同じ画面でTerminalを開いて実行できます。

エディターはコードを書く場所です。どのエディターを使っても、保存された.pyファイルを読むのはPythonであり、モデルを動かすのはOllamaです。

Pythonはコードを読む実行役

Pythonはプログラミング言語の名前です。同時に、Pythonで書かれたコードを読み、実行するプログラムも指します。

たとえば、次の内容をhello.pyとして保存します。

print("こんにちは")

Terminalで次を実行すると、Pythonがファイルを読み、print()の命令を実行します。

python hello.py

polite_rewriter.pyでも、Pythonが文章を生成しているわけではありません。Pythonは利用者の入力を受け取り、Ollamaへ渡し、返ってきた文章を表示していました。文章そのものを生成したのは、Ollamaが動かしているqwen3.5:4bです。

pipはPythonへ追加機能を入れる

Pythonには多くの機能が最初から入っていますが、外部サービスとの通信など、必要な機能をあとから追加することもよくあります。その追加を担当するのがpipです。

PythonからOllamaへ接続する機能は、次のコマンドで追加します。

python -m pip install ollama

ここでインストールしたのは、Ollama本体でも、qwen3.5:4bでもありません。PythonからOllamaへ接続するためのPythonパッケージです。

パッケージは、配布される追加機能のまとまりです。pipはそのパッケージを取得し、現在使っているPython環境へインストールします。

pip installimportは別の操作

次の二つは、続けて使うことが多いため混同しやすいところです。

python -m pip install ollama
from ollama import chat

pip installは、必要なファイルをPython環境へ追加する操作です。importfrom ... import ...は、インストール済みのコードを、今実行しているPythonファイルから使えるようにする操作です。

つまり、流れは次のようになります。

  1. pipでパッケージをインストールする
  2. Pythonコードで必要な機能を読み込む
  3. 読み込んだ機能を使う

「パッケージ」と「モジュール」という言葉もよく登場します。簡単に分けると、pipで配布、インストールされるまとまりがパッケージ、Pythonのimportで読み込むコードの単位がモジュールです。

ただし、両者は必ずしも一対一ではありません。一つのパッケージに複数のモジュールが入ることも、インストール時とimport時で名前が違うこともあります。今回のように、どちらもollamaという同じ名前になる例は分かりやすい一方で、名前だけでは役割を区別できません。

python -m pip install ollamaでパッケージを仮想環境へ追加し、from ollama import chatでコードから読み込む二段階を示した図

python -m pip-mは何をしているのか

-mは、指定したモジュールを探し、Pythonのプログラムとして実行するための指定です。

python -m pip install ollama

このコマンドは、「今呼び出したpythonを使って、pipモジュールを実行し、ollamaパッケージをインストールする」と読めます。

PCに複数のPython環境があると、pipだけで実行した場合に、パッケージのインストール先と、あとでコードを実行するPythonがずれることがあります。python -m pipと書くと、どのPythonに対してpipを動かすのかが明確になります。

Ollama本体とPython用パッケージは別物

同じollamaという名前が出てきますが、次の二つは別々にインストールします。

Ollama本体

Ollama本体は、モデルの取得、管理、読み込み、推論を担当するアプリです。通常はPC上のlocalhost:11434でAPIを提供し、Terminalや別のプログラムからの入力を待ち受けます。

ollama pull qwen3.5:4b
ollama run qwen3.5:4b --think=false

これらはOllama本体へ出す命令です。

Python用ollamaパッケージ

Python用ollamaパッケージは、PythonコードからOllamaのAPIを使いやすくするクライアントライブラリです。

from ollama import chat

response = chat(
    model="qwen3.5:4b",
    messages=[
        {"role": "user", "content": "ローカルLLMを一言で説明してください"}
    ],
    think=False,
)

このchat()は、入力とモデル名をOllamaへ送ります。Pythonパッケージの中にAIモデルが入っているわけではなく、このパッケージだけをインストールしても文章は生成できません。Ollama本体が起動し、指定したモデルを利用できる状態になっている必要があります。

Python用ollamaパッケージ、Ollama本体、qwen3.5:4bモデルの役割と、生成結果がPythonへ戻る流れを、線と文字を分けて示した図

AIモデルが実際に文章を生成する

qwen3.5:4bが、実際に文章を生成するLLMです。OllamaはこのモデルのファイルをPCへ保存し、メモリへ読み込んで、入力を渡します。

役割を短く分けると、次のようになります。

  • Python用ollamaパッケージが、PythonとOllamaをつなぐ
  • Ollamaがモデルを管理し、推論を実行できる状態にする
  • qwen3.5:4bが、入力の続きとなるトークンを予測して返答を生成する

Ollamaはモデルを動かす仕組みであり、モデルそのものではありません。この区別が付くと、「Ollamaをインストールしたのにモデルがない」「Pythonパッケージは入ったのに接続できない」といった状況を別々の問題として考えられます。

python3pypythonの使い分け

仮想環境を作るときに呼び出すコマンドは、OSによって異なります。

macOSとLinuxでは、次のようにpython3を使いました。

python3 -m venv .venv

Windowsでは、Python Launcherのpyを使いました。

py -m venv .venv

どちらも、Python 3を使って.venvという仮想環境を作る操作です。仮想環境は、そのプロジェクトで使うPythonパッケージをほかの作業と分けて管理するための場所です。

仮想環境を有効にしたあとは、macOS、Linux、Windowsのいずれもpythonへそろえられます。

python -m pip install ollama
python polite_rewriter.py

コマンド名が途中から変わるのは、OS上のPythonで仮想環境を作り、その後は仮想環境のPythonを使うからです。

macOSやLinuxのpython3とWindowsのpyで仮想環境を作り、有効化後はpythonを使う流れを示した図

文章整形アプリが返答を表示するまで

python polite_rewriter.pyを実行してから返答が表示されるまでを、順番に追ってみます。

  1. テキストエディターでpolite_rewriter.pyを作り、Pythonコードを保存する
  2. Terminalで仮想環境を有効にする
  3. python polite_rewriter.pyを入力し、Pythonを起動する
  4. Pythonがファイルを読み、from ollama import chatでクライアントライブラリを読み込む
  5. chat()が入力文とqwen3.5:4bというモデル名を、PC上のOllamaへ送る
  6. Ollamaがqwen3.5:4bを使って生成を実行する
  7. 生成結果がPythonへ戻り、print()でTerminalに表示される

一行で表すと、次の流れです。

入力 → Python → Python用ollamaパッケージ → localhostのOllama → qwen3.5:4b → Python → 画面表示

python polite_rewriter.pyを実行してTerminal、Python、ollamaパッケージ、Ollama、qwen3.5:4bを通り、生成結果が画面へ戻る流れを、線と文字を分けて示した図

VS Codeはこの流れの外側にある作業場所で、ファイル編集とTerminal操作をまとめます。エディターが変わっても、PythonからOllamaへ届く流れは変わりません。

エラーを役割ごとに切り分ける

何かが動かないときは、登場したものをまとめて疑うのではなく、どこまで処理が進んだかを確認します。

表示や症状 まず確認する場所 確認すること
python: command not found Python、仮想環境 仮想環境を有効にしたか。作成前ならpython3pyが使えるか
can't open file Terminal、ファイル Terminalの現在地に対象の.pyファイルがあるか
No module named 'ollama' Python、pip コードを実行するPythonと、パッケージを入れたPythonが同じか
Ollamaへ接続できない Ollama本体 Ollamaが起動しているか。curl http://localhost:11434/api/tagsへ届くか
モデルが見つからない Ollama、モデル ollama lsに指定したモデル名があるか
返答の内容がおかしい モデル、入力 モデル名、プロンプト、生成結果を確認する

たとえばNo module named 'ollama'は、AIモデルが壊れているという意味ではありません。Pythonが、必要なモジュールを現在の環境で見つけられないという意味です。一方、接続エラーなら、Pythonコードを読むところまでは進み、その先のOllamaとの境界で止まった可能性があります。

まとめ

polite_rewriter.pyでは、複数の道具が順番に役割を受け持っています。

  • Terminalは、コマンドを入力してプログラムを呼び出す
  • VS Codeは、コードを書くために選べる作業場所
  • Pythonは、.pyファイルを読み、処理を進める
  • pipは、Python環境へ追加パッケージを入れる
  • Python用ollamaパッケージは、PythonからOllamaへ入力を送る
  • Ollamaは、ローカルAPIを提供し、モデルを管理して動かす
  • AIモデルは、入力をもとに文章を生成する

すべてを一つの「AIを動かす道具」として覚える必要はありません。どの道具が、どこからどこまでを担当しているかを見れば、コマンドの意味とエラーの場所を追えるようになります。

インストールからもう一度試すときは、「ローカルLLMを自分のPCで動かす」の手順を進めながら、それぞれの担当を確かめてみてください。