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: 永続化対応。メタデータフィルタリング。フル機能。
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