はじめに
LLMをPythonから使うだけなら、OpenAI APIを直接呼び出すこともできます。ただ、実際に少し作り込もうとすると、すぐに次のような要素が出てきます。
- プロンプトをテンプレート化したい
- モデルの呼び出し部分を差し替えやすくしたい
- 出力を文字列やJSONとして扱いやすくしたい
- 将来的には検索、外部ツール、履歴管理なども組み合わせたい
このような処理を、部品としてつなげやすくするためのライブラリが LangChain です。この記事では、まず一番小さな例として、LangChainとOpenAI APIを使って、質問に答えるLLMプログラムを作ります。
この記事のコードは、2026年7月時点のLangChain/OpenAI APIまわりの書き方を前提にしています。LangChainは更新が速いので、動かない場合はインストール済みパッケージのバージョンと公式ドキュメントも確認してください。
この記事で作るもの
作る処理はとても単純です。ユーザーの質問を受け取り、プロンプトに埋め込み、OpenAIのチャットモデルに渡し、返ってきた回答を文字列として受け取ります。
LangChainでは、この流れを次のようにつなげます。
chain = prompt | model | parser
最初はこの1行の意味が少し不思議に見えるかもしれませんが、考え方はシンプルです。入力文を作る部品、モデルを呼ぶ部品、出力を整える部品を、左から右へ順番につないでいるだけです。
ライブラリのインストール
まず、必要なライブラリをインストールします。
pip install langchain langchain-openai
Pythonからimportするときの名前は、langchain_openai です。pipで入れるパッケージ名は langchain-openai、import名は langchain_openai なので、ここは少し紛らわしいところです。
APIキーの設定
OpenAI APIを使うため、環境変数 OPENAI_API_KEY を設定します。ターミナルで設定するなら、例えば次のようにします。
export OPENAI_API_KEY="your_api_key"
Jupyter Notebookなどで試すだけなら、Pythonコード内で一時的に設定することもできます。
import os
os.environ["OPENAI_API_KEY"] = "your_api_key"
ただし、実際の開発ではAPIキーをコードに直接書かない方が安全です。公開リポジトリに置く可能性がある場合は、.env ファイルや環境変数で管理するのが無難です。
最小コード
まずは、全体像を先に見ます。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
prompt = PromptTemplate.from_template(
"""
以下のユーザーの質問に対して、初心者にもわかるように答えてください。
質問: {question}
"""
)
model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
parser = StrOutputParser()
chain = prompt | model | parser
result = chain.invoke({"question": "LangChainを使うと何が便利ですか?"})
print(result)
このコードを実行すると、question に入れた質問がプロンプトに埋め込まれ、OpenAIのモデルに渡されます。返ってきた回答は文字列として result に入ります。
PromptTemplateで入力文を作る
まずはプロンプトです。
prompt = PromptTemplate.from_template(
"""
以下のユーザーの質問に対して、初心者にもわかるように答えてください。
質問: {question}
"""
)
{question} の部分が、あとで差し込まれる変数です。例えば、次のように実行したとします。
chain.invoke({"question": "LangChainを使うと何が便利ですか?"})
すると、モデルにはおおむね次のような文章が渡されます。
以下のユーザーの質問に対して、初心者にもわかるように答えてください。
質問: LangChainを使うと何が便利ですか?
つまり、PromptTemplate は 毎回変わる入力を、決まった形のプロンプトに差し込むための部品です。
ChatOpenAIでモデルを呼び出す
次に、モデルを用意します。
model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
ここでは、OpenAIのチャットモデルをLangChain経由で呼び出しています。temperature=0 は、回答のばらつきを抑えたいときによく使う設定です。毎回なるべく安定した回答がほしい場合は、まず 0 にしておくと挙動を確認しやすくなります。
StrOutputParserで文字列として受け取る
モデルから返ってくる出力は、そのままだとLangChainのメッセージオブジェクトです。ブログ記事や簡単なスクリプトでは、まず文字列として扱いたいことが多いので、ここでは StrOutputParser を使います。
parser = StrOutputParser()
この部品を最後につなげておくと、モデルの回答本文だけを文字列として取り出しやすくなります。
chainで部品をつなぐ
ここまでの3つをつなげます。
chain = prompt | model | parser
この | は、LangChainの処理を左から右へ渡していくための書き方です。流れとしては、次のようになります。
入力データ
↓
PromptTemplateでプロンプト化
↓
ChatOpenAIでモデルに送信
↓
StrOutputParserで文字列化
↓
結果を受け取る
最初は少し独特に見えますが、慣れると「処理の流れ」がかなり読みやすくなります。
実行する
チェーンを実行するときは、invoke を使います。
result = chain.invoke({"question": "LangChainを使うと何が便利ですか?"})
print(result)
PromptTemplate の中で {question} を使っているので、invoke に渡す辞書にも question というキーを指定します。キー名がずれていると、プロンプトに値を差し込めずエラーになります。
よくあるつまずき
pipの名前とimport名が違う
インストールは次のようにします。
pip install langchain-openai
一方、Pythonコードでは次のようにimportします。
from langchain_openai import ChatOpenAI
- と _ の違いで混乱しやすいので注意してください。
APIキーが設定されていない
OPENAI_API_KEY が設定されていないと、モデル呼び出し時に認証エラーになります。ターミナルで実行している場合は、そのターミナル内で環境変数が設定されているか確認してください。
echo $OPENAI_API_KEY
ライブラリのバージョンでimport先が変わる
LangChainは更新が速いライブラリです。古い記事では、次のようなimportが使われていることがあります。
from langchain.prompts import PromptTemplate
from langchain.schema.output_parser import StrOutputParser
最近の書き方では、この記事のように langchain_core からimportする形がよく使われます。
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
エラーが出る場合は、まずインストール済みのLangChainのバージョンと、公式ドキュメントの書き方を確認するとよいです。
まとめ
この記事では、LangChainとOpenAI APIを使って、最小構成のLLMプログラムを作りました。重要なのは、次の3つです。
PromptTemplateで入力をプロンプトに変換するChatOpenAIでモデルを呼び出すStrOutputParserで出力を文字列として受け取る
この3つを prompt | model | parser のようにつなぐと、入力から出力までの流れを1つのチェーンとして扱えます。ここまで理解できれば、次は会話履歴を持たせたり、外部データを検索して回答させたり、ツール実行と組み合わせたりする方向に進めます。LangChainは機能が多いですが、最初はこの小さなチェーンの理解から始めると見通しがよくなります。
さらに学びたい方へ
LangChainのコードを読みやすくするには、Pythonの関数や型ヒントに慣れておくと役立ちます。
Pythonの型ヒント(型アノテーション)のすすめ https://tobarilabo.com/type_hint/
独学でも十分進められますが、動画で流れを見たい場合は以下の講座も参考になります。


コメント