「ローカルLLMを自分のPCで動かす」では、最後に次のコマンドを実行しました。
python polite_rewriter.py
この一行で文章整形アプリが起動し、入力した文章がローカルLLMへ渡され、整えられた文章が画面に表示されます。
処理の途中では、Terminal、Python、Python用のollamaパッケージ、Ollama、qwen3.5:4bが順番に働いています。VS Codeは、Pythonファイルを書き、Terminalを開くための作業場所です。
どれも同じPC上で使うため、最初はひとまとめに見えます。しかし、担当は別々です。その違いを知ると、先ほどの一行が何を動かしていたのか、エラーがどこで起きたのかを追えるようになります。

一行のコマンドを分解する
文章整形アプリが返答を表示するまでには、次のものが関わっています。
| 名前 | 担当すること |
|---|---|
| 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でpythonやollamaを実行した場合も、呼び出されるのは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 installとimportは別の操作
次の二つは、続けて使うことが多いため混同しやすいところです。
python -m pip install ollama
from ollama import chat
pip installは、必要なファイルをPython環境へ追加する操作です。importやfrom ... import ...は、インストール済みのコードを、今実行しているPythonファイルから使えるようにする操作です。
つまり、流れは次のようになります。
- pipでパッケージをインストールする
- Pythonコードで必要な機能を読み込む
- 読み込んだ機能を使う
「パッケージ」と「モジュール」という言葉もよく登場します。簡単に分けると、pipで配布、インストールされるまとまりがパッケージ、Pythonのimportで読み込むコードの単位がモジュールです。
ただし、両者は必ずしも一対一ではありません。一つのパッケージに複数のモジュールが入ることも、インストール時とimport時で名前が違うこともあります。今回のように、どちらもollamaという同じ名前になる例は分かりやすい一方で、名前だけでは役割を区別できません。

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本体が起動し、指定したモデルを利用できる状態になっている必要があります。

AIモデルが実際に文章を生成する
qwen3.5:4bが、実際に文章を生成するLLMです。OllamaはこのモデルのファイルをPCへ保存し、メモリへ読み込んで、入力を渡します。
役割を短く分けると、次のようになります。
- Python用
ollamaパッケージが、PythonとOllamaをつなぐ - Ollamaがモデルを管理し、推論を実行できる状態にする
qwen3.5:4bが、入力の続きとなるトークンを予測して返答を生成する
Ollamaはモデルを動かす仕組みであり、モデルそのものではありません。この区別が付くと、「Ollamaをインストールしたのにモデルがない」「Pythonパッケージは入ったのに接続できない」といった状況を別々の問題として考えられます。
python3、py、pythonの使い分け
仮想環境を作るときに呼び出すコマンドは、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を使うからです。

文章整形アプリが返答を表示するまで
python polite_rewriter.pyを実行してから返答が表示されるまでを、順番に追ってみます。
- テキストエディターで
polite_rewriter.pyを作り、Pythonコードを保存する - Terminalで仮想環境を有効にする
python polite_rewriter.pyを入力し、Pythonを起動する- Pythonがファイルを読み、
from ollama import chatでクライアントライブラリを読み込む chat()が入力文とqwen3.5:4bというモデル名を、PC上のOllamaへ送る- Ollamaが
qwen3.5:4bを使って生成を実行する - 生成結果がPythonへ戻り、
print()でTerminalに表示される
一行で表すと、次の流れです。
入力 → Python → Python用ollamaパッケージ → localhostのOllama → qwen3.5:4b → Python → 画面表示

VS Codeはこの流れの外側にある作業場所で、ファイル編集とTerminal操作をまとめます。エディターが変わっても、PythonからOllamaへ届く流れは変わりません。
エラーを役割ごとに切り分ける
何かが動かないときは、登場したものをまとめて疑うのではなく、どこまで処理が進んだかを確認します。
| 表示や症状 | まず確認する場所 | 確認すること |
|---|---|---|
python: command not found |
Python、仮想環境 | 仮想環境を有効にしたか。作成前ならpython3やpyが使えるか |
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で動かす」の手順を進めながら、それぞれの担当を確かめてみてください。
