「LangChainって聞いたことはあるけど、Ubuntuで実際にどうやって使い始めればいいの?」というのが、最初の疑問ですよね。本記事では、Ubuntu 24.04 LTS に LangChain をインストールして、ローカルLLMでチャットアプリを動かせる環境を整えるまで、実際のコマンド出力とスクリーンショット付きでまるごと解説します。
バックエンドには無料で動かせるローカルLLM「Ollama」を使うので、OpenAIのAPIキーは不要です。本記事の数値は、2026-06-15 に Docker の ubuntu:24.04 公式イメージで実際にインストールし、ローカルの Ollama(llama3.2:1b)に対して本当にチェーンを実行して取得したものです。
この記事のポイント
- Ubuntu 24.04 では
pip installに venv が必須(PEP 668)— 知らないとexternally-managed-environmentで必ず詰まる - 2026-06-15 に実測した最新版は
langchain 1.3.9/langchain-core 1.4.7/langchain-ollama 1.1.0(Python 3.12.3) - LangChain の現代的な書き方 LCEL(
prompt | llm | parser) を実行結果付きで解説 - ローカルLLM(Ollama)と接続し、会話履歴を覚えるチャットを実際に動かす
- Gradio でブラウザUIを追加し、実際に質問→応答した画面のスクリーンショットを掲載
LangChainとは
LangChain は、Python で LLM(大規模言語モデル)を使ったアプリを作るためのフレームワークです。「LLMに文章を生成させる」「会話の履歴を保持する」「外部ツール(検索・電卓・データベース)を呼び出す」といった機能を、部品として組み合わせて使えます。
2024〜2026年の LangChain の大きな変化は、LCEL(LangChain Expression Language)というパイプ記法が主流になったことです。コンポーネントを | でつなぐだけでチェーンが作れます。さらに 2026 年現在は langchain 1.x 系がリリースされ、書き方も整理されました。
| 用途 | LangChainの機能 | 具体例 |
|---|---|---|
| テキスト生成 | ChatModel | ChatOllama / ChatOpenAI など |
| プロンプト管理 | ChatPromptTemplate | 変数埋め込み・マルチターン構造 |
| チェーン連結 | LCEL(| 演算子) | prompt | llm | parser |
| 会話記憶 | ChatMessageHistory | InMemoryChatMessageHistory |
| 外部ツール | Tools / Agents | 検索・電卓・ファイル操作 |
前提環境
本記事は以下の環境で検証しています。インストールのコマンドは Docker の ubuntu:24.04 公式イメージで実行しており、VPS でもそのまま使えます。
| 項目 | バージョン / 設定 | 備考 |
|---|---|---|
| OS | Ubuntu 24.04.4 LTS | Docker ubuntu:24.04 / VPS どちらでも可 |
| Python | 3.12.3 | Ubuntu 24.04 に標準搭載 |
| langchain | 1.3.9 | 2026-06-15 実測(venv 経由でインストール) |
| langchain-core | 1.4.7 | 自動インストール |
| langchain-ollama | 1.1.0 | Ollama 接続用・明示的に指定 |
| LLMバックエンド | Ollama(ローカル / llama3.2:1b) | APIキー不要・完全無料 |
Ollamaのセットアップが必要です
本記事の後半ではLLMバックエンドに Ollama を使います。まだインストールしていない場合は、先に「Ollama on Ubuntu インストールガイド」をご覧ください。ollama pull llama3.2:1b 等でモデルをダウンロードしてから続きを進めてください。
インストール手順
手順1:python3-venv をインストールする
Ubuntu 24.04 では PEP 668 という仕様により、システムに直接 pip install するとエラーになります。正直、これを知らずに詰まる人がとても多いです。実際にコンテナで pip3 install langchain を打つと、次のように弾かれました。
Python 3.12.3
$ pip3 install langchain
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to install.
解決策は仮想環境(venv)を使うことです。まず必要なパッケージを入れます。
Reading package lists… Done
Setting up python3-venv (3.12.3-0ubuntu2) …
Setting up python3-full (3.12.3-0ubuntu2) …
手順2:仮想環境を作成して有効化する
~/langchain-env という名前の仮想環境を作ります。source activate を実行してからでないと、インストールしたパッケージが隔離されません。ここだけは順番を間違えると動きません。
$ source ~/langchain-env/bin/activate
(langchain-env) $
# プロンプトに (langchain-env) が表示されたらOK
手順3:LangChain をインストールする
2026年時点の最新構成でインストールします。langchain-ollama はローカルLLMと接続するためのパッケージで、これは明示的に指定しないと入りません。
Collecting langchain …
Collecting langchain-core …
Collecting langchain-ollama …
Successfully installed langchain-1.3.9 langchain-core-1.4.7
langchain-ollama-1.1.0 langsmith-0.8.15
ollama-0.6.2 pydantic-2.13.4 httpx-0.28.1 …
(langchain-env) $ python3 -c “import langchain; print(langchain.__version__)”
1.3.9

langchain-community は依存に入りません
以前は pip install langchain-community が定番でしたが、2026年現在は各サービス専用の統合パッケージ(例: langchain-ollama)を使うのが推奨です。実際、pip install langchain langchain-core langchain-ollama を実行しても langchain-community は自動では入らないことを確認しました。新規プロジェクトでは専用パッケージを使いましょう。
手順4:インストールを確認する
2026-06-15 に ubuntu:24.04(Python 3.12.3)の venv で実際に解決されたバージョン一覧です。langchain 本体だけでなく、langchain-core・langsmith・pydantic・ollama など複数の依存が同時に入ります。
Name: langchain
Version: 1.3.9
Name: langchain-core
Version: 1.4.7
Name: langchain-ollama
Version: 1.1.0

LCEL(LangChain Expression Language)の基礎
LangChain の現代的な書き方が LCEL です。コンポーネントを |(パイプ演算子)でつなぐことで、チェーンを簡単に組み立てられます。実際に組み立てると、できあがるオブジェクトの型は RunnableSequence になります(これも実行して確認しました)。

①ChatPromptTemplate — プロンプトを構造化する
プロンプトを文字列ではなく「システムメッセージ + ユーザーメッセージ」の構造で定義します。invoke() すると、実際に2件のメッセージに展開されることが確認できます。
>>> prompt = ChatPromptTemplate.from_messages([
… (“system”, “あなたはLinuxの専門家です。日本語で簡潔に答えてください。”),
… (“human”, “{question}”),
… ])
>>> result = prompt.invoke({“question”: “Ubuntuとは何ですか?”})
>>> print(len(result.messages), “messages”)
2 messages
>>> print(result.messages[0].content)
あなたはLinuxの専門家です。日本語で簡潔に答えてください。
②LCEL チェーンを組み立てて実行する(prompt | llm | parser)
LCEL の真髄は | でつなぐチェーンです。以下は Ollama の llama3.2:1b と接続した例で、実際に chain.invoke() したときの本物の応答です。手元の環境では 応答までおよそ 1.87 秒でした。
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import ChatOllama
# LLM: ローカルの Ollama を使用(APIキー不要)
llm = ChatOllama(model=”llama3.2:1b”, base_url=”http://localhost:11434″)
prompt = ChatPromptTemplate.from_messages([
(“system”, “あなたはLinuxの専門家です。日本語で簡潔に答えてください。”),
(“human”, “{question}”),
])
# LCEL チェーン: | でつなぐだけ
chain = prompt | llm | StrOutputParser()
answer = chain.invoke({“question”: “Ubuntuでインストール済みパッケージを一覧するコマンドは?”})
print(answer)
(langchain-env) $ python3 lcel_chain.py
以下は、Ubuntuでインストール済みパッケージを一覧する方法です。
1. `dpkg -l`:パッケージのリストを表示します。
2. `apt list –all`:すべてのパッケージを一覧します。
会話履歴を覚えるチャットにする
1回ごとに独立した質問ではなく、前の会話を踏まえて答えさせたい場合は会話履歴を持たせます。langchain 1.x では InMemoryChatMessageHistory にメッセージを溜めて、MessagesPlaceholder でプロンプトに差し込むのが現代的なやり方です。
ConversationBufferMemory は古い書き方です
ネット上の古い記事では from langchain.memory import ConversationBufferMemory を使う例が多いですが、これは langchain 0.x 時代の API です。langchain 1.x では langchain_core.chat_history.InMemoryChatMessageHistory を使う本記事の方法が推奨されます。
まず、履歴に4件(ユーザー2件・AI2件)を溜めて、正しく蓄積されるか実際に確認しました。
>>> history = InMemoryChatMessageHistory()
>>> history.add_user_message(“私の名前はTaroです”)
>>> history.add_ai_message(“こんにちは、Taroさん!”)
>>> history.add_user_message(“私の名前を覚えていますか?”)
>>> history.add_ai_message(“はい、あなたはTaroさんです。”)
>>> len(history.messages)
4
>>> for m in history.messages:
… print(type(m).__name__, “:”, m.content[:14])
HumanMessage : 私の名前はTaroです
AIMessage : こんにちは、Taroさん!
HumanMessage : 私の名前を覚えていますか?
AIMessage : はい、あなたはTaroさんです。
次に、この履歴を MessagesPlaceholder でプロンプトに差し込み、ローカルLLMが前のターンの情報を本当に参照するか試しました。「私の名前はKentaです」と伝えた後に「私の名前は何でしたか?」と聞くと、ちゃんと “Kenta” を返してきました。履歴がLLMに渡っている証拠です。
from langchain_ollama import ChatOllama
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.output_parsers import StrOutputParser
from langchain_core.chat_history import InMemoryChatMessageHistory
llm = ChatOllama(model=”llama3.2:1b”)
prompt = ChatPromptTemplate.from_messages([
(“system”, “あなたは親切なアシスタントです。日本語で短く答えてください。”),
MessagesPlaceholder(variable_name=”history”),
(“human”, “{input}”),
])
chain = prompt | llm | StrOutputParser()
h = InMemoryChatMessageHistory()
h.add_user_message(“私の名前はKentaです。”)
h.add_ai_message(“こんにちは、Kentaさん。”)
print(chain.invoke({“history”: h.messages, “input”: “私の名前は何でしたか?”}))
(langchain-env) $ python3 chat_with_memory.py
私が持っている情報では、Kentaです。

Gradio でWebUIを追加する
コマンドライン動作を確認したら、Gradio を使うとブラウザから使えるチャットUIを数行で追加できます。まずインストールします。
Successfully installed gradio-6.18.0
(langchain-env) $ cat app.py
import gradio as gr
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import ChatOllama
llm = ChatOllama(model=”llama3.2:1b”)
prompt = ChatPromptTemplate.from_messages([
(“system”, “あなたは親切なLinuxアシスタントです。日本語で簡潔に答えてください。”),
(“human”, “{input}”),
])
chain = prompt | llm | StrOutputParser()
def respond(message, history):
return chain.invoke({“input”: message})
gr.ChatInterface(fn=respond, title=”LangChain + Ollama チャット”).launch(
server_name=”0.0.0.0″, server_port=7860)
(langchain-env) $ python3 app.py
Running on local URL: http://0.0.0.0:7860
起動後、ブラウザで http://<サーバーIP>:7860 にアクセスするとチャットUIが表示されます。実際に立ち上げて「UbuntuでPythonのバージョンを確認するには?」と質問したところ、ローカルの llama3.2:1b から python3 --version を案内する応答が返ってきました。

続けて「UbuntuでLangChainをインストールする最初のステップは?」と入力すると、その場でローカルLLMが応答を生成します。下の画面は実際に質問→応答した状態をブラウザから撮影したものです。

小さなモデルの回答は鵜呑みにしない
上の画面で llama3.2:1b は一部「apt-get install langchain で入る」といった誤った内容も返しています(LangChain は apt ではなく pip で入れます)。1B クラスの軽量モデルは手軽に動く反面、事実誤認が出やすいです。本番では llama3.2(3B)や qwen2.5 の大きめのモデルを使うと精度が上がります。
VPSで動かす場合は ufw allow 7860 でポートを開けてください。
よくあるエラーと解決策
①error: externally-managed-environment
error: externally-managed-environment
× This environment is externally managed
解決策: python3 -m venv ~/langchain-env && source ~/langchain-env/bin/activate で仮想環境を作ってからインストールしてください。これが Ubuntu 24.04(PEP 668)の正しいやり方です。
②ModuleNotFoundError: No module named ‘langchain_ollama’
ModuleNotFoundError: No module named ‘langchain_ollama’
解決策: pip install langchain-ollama でパッケージを追加してください。langchain 本体を入れるだけでは含まれません(実測でも自動では入りませんでした)。
③Ollama が接続できない(ConnectError)
解決策: ollama serve でOllamaを起動してください。VPSなら systemctl start ollama です。起動確認は curl http://localhost:11434/api/tags でできます。
VPSでLangChainを本格運用するには
自分のPCで動かすのもいいですが、Ollama + LangChain をVPSに置くと、スマホを含むどこからでもアクセスできる自分専用のLLMサーバーが完成します。
LLMはGPUがあると推論速度が格段に上がります。特に Vultr は GPU プランが充実しており、A16・L40S・H100 など複数の GPU から選べます。LLM 推論に十分な VRAM(最低8GB以上)が手軽に試せます。
まずCPUのみのプランで試すなら、Vultr の $5/月プランから始められます。本記事で使った llama3.2:1b のような軽量モデルなら CPU でも十分に動きます。
| VPS | 最安プラン | GPU対応 | 東京リージョン | 特徴 |
|---|---|---|---|---|
| Vultr | $5/月〜 | あり(A16/L40S/H100) | あり | GPUラインナップ豊富・シンプルな操作 |
| DigitalOcean | $6/月〜 | あり(H100) | なし | ドキュメントが充実 |
| ConoHa VPS | 880円/月〜 | なし | あり(国内) | 日本語サポートあり・初心者向け |
まとめ
Ubuntu 24.04 LTS で LangChain を使った LLM アプリ開発環境を構築する手順を、実際の実行結果とスクリーンショット付きで解説しました。
- Ubuntu 24.04 では python3 -m venv で仮想環境を作ってから pip install する(PEP 668 対応)
- 2026-06-15 時点の最新版は langchain 1.3.9 / langchain-core 1.4.7 / langchain-ollama 1.1.0(Python 3.12.3)
- 現代的な LangChain は LCEL の prompt | llm | parser 形式で書き、型は RunnableSequence になる
- 会話履歴は langchain 1.x の InMemoryChatMessageHistory で持たせる(ConversationBufferMemory は古い)
- Gradio を追加すればブラウザUIもすぐ作れる。ただし軽量モデルの回答は事実確認を忘れずに
LLMアプリをVPSで本番運用したい場合は、VPS比較ガイドもあわせてご覧ください。



コメント