LangChain + OpenAI セットアップガイド

LLMアプリケーション開発フレームワークLangChainとOpenAIの連携設定。


必要なもの

  • Python 3.9以上
  • OpenAI APIキー

インストール

01. パッケージインストール

pip install langchain langchain-openai langchain-community

v0.2以降は langchain-openai が必須

02. 環境変数設定

export OPENAI_API_KEY="sk-..."

基本的な使い方

01. シンプルなChat

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o-mini") response = llm.invoke("Hello, how are you?") print(response.content)

02. プロンプトテンプレート

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([ ("system", "You are a helpful assistant."), ("user", "{input}") ])

chain = prompt | llm response = chain.invoke({"input": "What is LangChain?"})


RAG(検索拡張生成)の基本

01. 追加パッケージ

pip install faiss-cpu sentence-transformers

02. シンプルなRAG

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.documents import Document

ドキュメント作成

docs = [Document(page_content="LangChain is a framework for LLM apps.")]

ベクトルストア作成

embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_documents(docs, embeddings)

検索

results = vectorstore.similarity_search("What is LangChain?")

参考リンク


ここから先は、よくある質問と詰まりポイントを詳しく解説します。


Q&A - インポートエラー

ModuleNotFoundError: No module named 'langchain_openai'

v0.2以降は別パッケージ化された。

pip install langchain-openai

from langchain.chat_models import ChatOpenAI が動かない

旧い書き方。v0.2以降は:

from langchain_openai import ChatOpenAI

DeprecationWarning が大量に出る

LangChainはAPIが頻繁に変わる。警告に従って新しいimportに変更するか、無視する。

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

Q&A - バージョン関連

どのバージョンを使えばいい?

最新版を推奨。古いチュートリアルはv0.1時代のものが多いので注意。

pip install --upgrade langchain langchain-openai

AIが出すコードが動かない

LLMの学習データが古い可能性。LangChainは2024年に大幅リファクタリングされた。公式ドキュメントを参照。


Q&A - APIキー関連

環境変数を設定しても読み込まれない

  • ターミナルを再起動
  • Pythonを再起動
  • 直接渡す: ChatOpenAI(api_key="sk-...")

.envファイルから読み込みたい

from dotenv import load_dotenv
load_dotenv()

以降、環境変数として自動認識される

llm = ChatOpenAI()

Q&A - RAG関連

FAISSとChromaの違い

  • FAISS: Meta製。高速。インメモリ。シンプル。
  • Chroma: 永続化対応。メタデータフィルタリング。フル機能。
学習用途ならFAISS、本番ならChroma推奨。

Embeddingのコストが気になる

OpenAI Embeddingは安い(text-embedding-3-small: $0.02/1M tokens)。

無料で使いたいなら: HuggingFaceEmbeddings

PDFを読み込みたい

pip install pypdf
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("file.pdf")
docs = loader.load()

Q&A - チェーン関連

LLMChainが非推奨になった

LCEL(LangChain Expression Language)に移行。パイプ演算子を使う。

chain = prompt | llm | output_parser

ストリーミング出力したい

for chunk in llm.stream("Hello"):
    print(chunk.content, end="")

参考リンク


タグ: #LangChain #OpenAI #RAG #Python #LLM
← AI初心者シリーズ一覧へ