アーパボー(ARPABLE)
アープらしいエンジニア、それを称賛する言葉・・・アーパボー
AI

LangChain使い方完全ガイド|OpenAI API連携

LangChain使い方完全ガイド|OpenAI API連携

この記事を読むとLangChainとOpenAI APIの基本的な使い方や連携の仕組みがわかり、Google Colabですぐに試せるAIチャットボットを開発できるようになります。

この記事の結論:LangChainとOpenAI APIは「監督と名優」のような関係で、両者を連携させることで高度なAIアプリケーションを効率的に開発できる。

  • 要点1:LangChainは、LLMと外部ツールを連携させるためのフレームワークで、複雑な処理をモジュール化して開発を効率化します。
  • 要点2:OpenAI APIは、GPT-4o miniなどの高性能なAIモデルを手軽に利用できるインターフェースで、テキスト生成の核となります。
  • 要点3:現在の開発では、処理の流れをパイプ(|)で繋ぐLCEL記法が主流となっており、直感的なコーディングが可能です。
Q1. LangChainの利用は無料ですか?
A. はい、LangChain自体は無料のオープンソースです。ただし、連携先のOpenAI APIには利用量に応じた料金が発生します。
Q2. プログラミング初心者でも使えますか?
A. はい、基本的なPythonの知識があれば、この記事で紹介するような簡単なAIアプリから開発を始めることが可能です。
Q3. OpenAI APIだけを使うのと何が違いますか?
A. APIだけでも開発できますが、複数の処理の連携や外部データ参照など、複雑な機能をLangChainが簡単に実現してくれます。

この記事の著者・監修者

ケニー狩野(Kenny Kano)
株式会社アープ取締役。AI開発に10年以上従事、特にディープラーニングや、LLMとDBを利用したRAG等の先端技術を用いた企業のAI導入を支援。
公的役職:一般社団法人Society 5.0振興協会にて、AI社会実装推進委員長を務める。中小企業診断士、PMP。著書に『リアル・イノベーション・マインド』

はじめに:LangChainとOpenAI APIは「映画監督と名優」

要約:AIアプリ開発で注目されるLangChainとOpenAI APIの関係性を「映画監督と名優」に例え、二つの技術が連携する仕組みを初心者にも分かりやすく解説します。

AIアプリ開発の強力なツールであるLangChainとOpenAI APIの関係性を、映画制作にたとえて解説します。

LangChainは、大規模言語モデル(LLM)を活用したアプリケーション開発を効率化するフレームワークです。一方、OpenAI APIは、テキスト生成や質問応答などの機能を提供する強力なAIエンジンです。この2つが連携することで、非常に洗練されたAIアプリが完成します。

  • LangChain = 映画の監督 兼 脚本家
  • OpenAI API = 才能あふれる名優

👨‍🏫 AI専門家が解説:かみ砕きポイント

LangChainは「映画監督」のように、物語全体の構成やシーンの流れ(処理フロー)を設計します。一方、OpenAI APIは「名優」として、監督の指示(プロンプト)に従い、魂のこもった演技(テキスト生成や思考)を実際に行います。優れた監督(LangChain)が名優(OpenAI API)の能力を最大限に引き出すことで、観客の心を動かす傑作(高機能なAIアプリ)が生まれるのです。

LangChainとは? 開発を効率化するフレームワーク

要約:大規模言語モデル(LLM)の能力を最大限に引き出すLangChainの役割を解説。外部ツールとの連携、柔軟な開発、多様なLLMへの対応という3つの利点を解説します。

LangChainは、LLMの能力を最大限に引き出し、外部データやツールと連携させるための「接着剤」の役割を担います。これにより、開発者はより高度で実用的なAIアプリケーションを、驚くほど効率的に構築できます。主な利点として、以下の3つが挙げられます。

1. LLMと外部ツールの簡単な連携

LangChainは、LLMと外部のデータベース、API、計算ツールなどを簡単に接続できます。これにより、LLMだけでは不可能な「最新情報に基づいた回答」や「複雑な計算結果の反映」が可能になります。

👨‍🏫 AI専門家が解説:かみ砕きポイント

たとえるなら、料理人(LLM)が最高の料理を作るには、新鮮な食材(外部データ)と優れた調理器具(外部ツール)が必要です。LangChainは、これらをスムーズにキッチンへ届ける「最高の助手」のような存在です。助手がいれば、料理人は料理そのものに集中できます。

2. 柔軟性の高い開発プロセス

LangChainは、機能ごとに独立したコンポーネント(部品)を提供します。開発者はこれらの部品を組み合わせるだけで、複雑な機能を驚くほど簡単に実装できます。さらに最新の**「LangChain Expression Language (LCEL)」**を使えば、シンプルかつ強力にワークフローを定義でき、AIエージェント開発にも適用できます。

3. 多様な選択肢と拡張性

特定のLLM(例: GPT-4o)に縛られず、GoogleやAnthropicなど、さまざまな企業のLLMに簡単に切り替えられます。これにより、開発者はプロジェクトの要件やコストに応じて最適なエンジンを選べます。

LCELで書くLangChainの基本

現在のLangChain開発では、LCEL (LangChain Expression Language) を使った記述が主流です。これは、各コンポーネント(プロンプト、モデル、出力パーサーなど)をパイプ演算子「|」で繋いで処理の流れ(Chain)を構築する、非常に直感的で強力な方法です。この記事の実践編でも、このLCELスタイルでコードを書いていきます。なお、分岐やループ、複数エージェントの本格的な制御が必要な場合は、LangChain公式が推奨するLangGraphの採用も検討してください。

LangChainの主要コンポーネント

LangChainは主に以下のコンポーネントで構成されており、これらをLCELで組み合わせることでAIの振る舞いを設計します。

  1. Models: LLM本体とのインターフェース。「どの俳優(AI)を起用するか」を決めます。(例: ChatOpenAI
  2. Prompts: LLMへの指示を管理するテンプレート。「俳優に渡す脚本」です。(例: ChatPromptTemplate
  3. Chains (Runnables): LCELによってパイプで繋がれた一連の処理フロー。「脚本に書かれたシーンの流れ」そのものです。
  4. Output Parsers: LLMからの出力を扱いやすい形式(文字列など)に整形する部品。「俳優のセリフを観客に分かりやすく翻訳する」役割です。(例: StrOutputParser
  5. Retrievers: 外部データを検索・取得する仕組み。「参考資料や文献の索引」にあたります。
  6. Agents: LLMが状況に応じて自律的に次の行動を判断する機能。「脚本にない事態にアドリブで対応する」名優の判断力です。

OpenAI APIとは? あらゆる文章を生み出すAIエンジン

要約:世界最高峰のLLMを手軽に利用できるOpenAI APIの概要を解説。最新のAPI(Responses API)の紹介や、モデル選定の考え方、安全なAPIキーの管理方法を学びます。

OpenAI APIは、世界最高峰のLLMを手軽に呼び出して、自分のプログラムに組み込むための「魔法の杖」です。このAPIを通じて、文章生成、要約、翻訳、質問応答など、多岐にわたるタスクをAIに実行させることができます。

2025年現在、新規開発ではResponses APIの利用が推奨されています(従来のChat Completions APIも引き続き利用可能で、公式の移行ガイドも公開されています)。

今選ぶモデルの考え方(o4-mini / GPT-4.1 mini など)

OpenAIはモデルの更新が速く、様々な性能やコストのモデルを提供しています。2025年9月時点では、小型・高速でコストパフォーマンスに優れる「o4-mini」や「gpt-4.1-mini」などが、多くのアプリケーション開発で最初の選択肢として推奨されます(2025年8月の発表)。本記事のサンプルコードでは「o4-mini」を使用します。

APIの利用準備

APIを利用するには、以下の準備が必要です。

  1. OpenAIの公式サイトでアカウントを作成します。
  2. 管理画面からAPIキーを取得します。
  3. 取得したAPIキーをプログラムの環境変数に設定します。コードに直接書き込むのは絶対に避けてください。

⚠️ APIキーの安全な管理方法

APIキーは、あなたのアカウントにおけるパスワードと同じくらい重要です。第三者に漏洩すると不正利用される危険があります。OpenAIのベストプラクティスに従い、安全に管理しましょう。さらに漏えいが疑われたら直ちにキーを無効化・再発行し、必要最小限の権限で運用しましょう(監査ログの定期確認も推奨)。

  • Google Colabの場合: 左メニューの「鍵」アイコン(シークレット)をクリックし、OPENAI_API_KEYという名前でキーの値を保存します。コードからはuserdata.get('OPENAI_API_KEY')で安全に読み込めます。
  • ローカル環境の場合: .envファイルを作成してキーを記述し、python-dotenvライブラリを使って読み込むのが一般的です。

コード内にはキーを直接書かず、必ず環境変数から読み込むようにしましょう。

実践①:Google ColabでシンプルなAIチャットボットを作る

要約:まずはLangChainを使わず、OpenAI API単体で簡単なAIチャットボットを作成します。最新のResponses APIを使い、Google Colab上で実際に動作するコードを学びます。

まずは小道具(LangChain)を使わず、名優(OpenAI API)だけで簡単な演技をさせてみましょう。ここでは、最新のResponses APIを使ってチャットボットを実装します。Google Colabは、ブラウザ上でPythonを無料で実行できる非常に便利なサービスです。inputは複数メッセージの配列を受け付けますが、トークン節約のため直近数ターンに絞るのが実務の定石です。公式推奨のストリーミング版も利用可能です。

# Python 3.10+想定
# OpenAIは最新安定版を推奨
# !pip install --upgrade openai

from openai import OpenAI
import os

# Google Colabのシークレット機能からAPIキーを読み込む
try:
    from google.colab import userdata
    os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')
except ImportError:
    print("Google Colab環境でないため、事前に環境変数OPENAI_API_KEYを設定してください。")

# 環境変数が設定されていることを前提にクライアントを初期化
client = OpenAI()

# 会話履歴を保存するリスト
messages = []

print("チャットボットを開始します。終了するには 'quit' と入力してください。")

while True:
    user_input = input("あなた: ")
    if user_input.lower() == 'quit':
        print("\nチャットを終了します。")
        break
    
    messages.append({"role": "user", "content": user_input})
    
    try:
        history_to_send = messages[-6:]

        print(f"ボット: ", end="")
        bot_reply_full = ""
        # ストリーミングでレスポンスをリアルタイムに受け取る
        with client.responses.stream(model="o4-mini", input=history_to_send) as stream:
            for event in stream:
                if event.type == "response.output_text.delta":
                    delta = event.delta
                    print(delta, end="", flush=True)
                    bot_reply_full += delta
        print() # 改行
        
        messages.append({"role": "assistant", "content": bot_reply_full})
        
    except Exception as e:
        print(f"\nエラーが発生しました: {e}")
        break
▶ 参考:従来のChat Completions APIを使った場合(クリックで開閉)

既存のコードや古いチュートリアルでよく見られるclient.chat.completions.createを使った書き方です。基本的な構造は似ていますが、レスポンスから返答を取り出す部分が異なります。

# (前略)
    try:
        # OpenAI APIにリクエストを送信 (Chat Completions API)
        response = client.chat.completions.create(
            model="o4-mini",
            messages=messages[-6:] # こちらでも履歴の絞り込みは有効
        )
        bot_reply = response.choices[0].message.content
        print(f"ボット: {bot_reply}")
        
        # ボットの返答も会話履歴に追加
        messages.append({"role": "assistant", "content": bot_reply})
# (後略)

実践②:LangChainとOpenAI APIを連携させてアプリを作る

要約:LangChainのLCEL記法を使い、OpenAI APIと連携したAIアプリを開発します。複数の処理を連結し、より高度なタスクを自動化する具体的な実装方法を学びます。

いよいよ監督(LangChain)が登場し、名優(OpenAI API)に複雑な演技を指示します。ここでは「AI搭載の歯ブラシを作る会社の名前と、その説明文を自動生成する」というタスクを、LCELを使って2つの処理を連結して実装します。RunnablePassthrough.assignを使うことで、辞書形式のデータをパイプラインで引き回しながら、新しい要素を追加していくことができます。

# Python 3.10+想定
# LangChain系はバージョン固定を推奨(0.3系で安定動作)
# !pip install "langchain==0.3.*" "langchain-openai==0.2.*"

import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

# Google Colabのシークレット機能からAPIキーを読み込む
try:
    from google.colab import userdata
    os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')
except ImportError:
    print("Google Colab環境でないため、事前に環境変数OPENAI_API_KEYを設定してください。")

# 1. LLMを初期化 (チャットモデル用のChatOpenAIを使用)
llm = ChatOpenAI(model="o4-mini", temperature=0.7)

# 2. プロンプトテンプレートを定義
prompt_name = ChatPromptTemplate.from_template(
    "AIを使って{product}を作る会社の良い名前を1つ提案してください。"
)
prompt_desc = ChatPromptTemplate.from_template(
    "{company_name}という会社の20字程度のキャッチーな説明文を書いてください。"
)

# 3. LCELでChainを構築
name_chain = prompt_name | llm | StrOutputParser()
desc_chain = prompt_desc | llm | StrOutputParser()

# 4. 全体のChainを定義し、実行する (RunnablePassthrough.assignを使用)
# 詳しい使い方は公式How-toを参照: https://python.langchain.com/docs/expression_language/how_to/passthrough
chain = RunnablePassthrough.assign(
    company_name=name_chain
) | RunnablePassthrough.assign(
    description=desc_chain
)

# 連携させたChainを実行
product_query = {"product": "AI搭載の歯ブラシ"}
result = chain.invoke(product_query)

# 実行結果を出力
print(result)

💡 実行結果の例

{'product': 'AI搭載の歯ブラシ', 'company_name': 'デンティ・インサイト (Denti-Insight)', 'description': 'AIが導く、次世代のオーラルヘルス。'}

このように、LangChainのLCELを使えば、まるでデータをパイプで流し込むように、複数の処理を直感的かつ柔軟に連結できます。

Key Takeaways(持ち帰りポイント)

  • LCEL記法では、プロンプト・モデル・パーサーといった部品をパイプ「|」で繋ぐことで直感的に処理を記述できます。
  • RunnablePassthrough.assign() を使うと、処理の途中で新しい値を計算し、元のデータ(辞書)に追加できます。
  • LangChainを使えば、APIを直接叩くだけでは実装が面倒な「複数処理の連携」を簡単かつ綺麗に実現できます。

まとめ

要約:LangChain(監督)とOpenAI API(名優)の関係をたとえで解説し、LCEL記法を用いた実装までをColabコードで実践的に示しました。

専門用語まとめ

LLM(大規模言語モデル)
人間のように自然な文章を生成したり理解したりできるAI。OpenAIのGPTシリーズなどが有名です。
API(アプリケーション・プログラミング・インターフェース)
ソフトウェアやプログラムの機能を、外部の別のプログラムから呼び出して利用するための「窓口」や「接続方法」のことです。
フレームワーク
アプリケーション開発を効率的に行うための「骨組み」や「土台」となるソフトウェア。決まった枠組みに沿って開発することで、品質を保ちつつ手間を省けます。

よくある質問(FAQ)

Q1. LangChainの利用は無料ですか?

A1. はい、LangChainフレームワーク自体はオープンソース(MITライセンス)であり、無料で利用できます。ただし、連携させるOpenAI APIや他のクラウドサービスには、利用量に応じた料金が発生します。公式のModels一覧(性能・制限)とPricing(料金)ページで最新情報を必ず確認してください。

Q2. プログラミング初心者でも使えますか?

A2. 基本的なPythonの知識(変数、関数、辞書など)があれば、この記事で紹介したような簡単なアプリから始めることが可能です。LangChain、特にLCELは複雑な処理を抽象化し、直感的に記述できるため、初心者でもAIアプリ開発の第一歩を踏み出しやすいツールです。

Q3. OpenAI APIだけを使うのと何が違うのですか?

A3. OpenAI APIだけでもAIアプリは作れますが、複数の処理を連携させたり、外部のPDFファイルやWebサイトを参照させたり、会話履歴を管理したりといった複雑なことをやろうとすると、全ての仕組みを自力で開発する必要があります。LangChainは、そうした「よくある面倒な処理」を肩代わりしてくれる便利な道具立て(フレームワーク)です。

主な参考サイト

合わせて読みたい

更新履歴

  • 初版公開
  • 最新情報にアップデート、読者支援機能の強化


ABOUT ME
ケニー 狩野
AI開発に10年以上従事し、現在は株式会社アープ取締役として企業のAI導入を支援。特にディープラーニングやRAG(Retrieval-Augmented Generation)といった最先端技術を用いたシステム開発を支援。 一般社団法人Society 5.0振興協会ではAI社会実装推進委員長として、AI技術の普及と社会への適応を推進中。中小企業診断士、PMP。著書に『リアル・イノベーション・マインド』。