langchain について
LangChainは、LLMをワークフローに組み込むアプリケーション向けのPythonフレームワークです。チェーン、ツールやベクトルストアとの連携、プロンプト管理、エージェント、非同期実行に対応します。
主な機能
- 01LLMチェーンの構築
- 02ツールとベクトルストアの連携
- 03動的なプロンプト管理
- 04ツールを使うエージェントの構築
- 05非同期チェーンの実行
活用シーン
- 01文書検索を使う質問応答アプリの構築
- 02検索ツールを使うエージェントの作成
- 03複数クエリの並行処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill langchainインストール後、Claude Code で/langchainを入力して読み込まれたか確認します。
詳細
langchain
目的
LangChainは、LLMをワークフローに統合するアプリケーションを開発するためのPythonフレームワークです。複数のLLMやツールを組み合わせたチェーンを作成でき、質問応答やデータ処理などのタスクに活用できます。
使用する場面
複雑なクエリに対応するために複数のモデルを統合するなど、LLMを連鎖させる必要があるAI搭載アプリを構築する場合や、LLMで外部データソースを扱う場合にLangChainを使用します。リアルタイムデータを取得するチャットボットなどのAIエージェントを迅速にプロトタイピングする場合や、スケーラブルなLLMワークフローが必要なaimlopsクラスターでのML運用にも適用できます。
主な機能
- チェーンの構築:
LLMChainなどのクラスを使ってLLMのシーケンスを作成します。たとえば、プロンプトテンプレートとLLM呼び出しを組み合わせます。 - ツールの統合:
OpenAIクラスを介したOpenAIなどのAPIとの統合をサポートします。意味検索にはFAISSでベクトルストアを扱います。 - プロンプト管理:
PromptTemplateを使ってプロンプトを定義し、動的にレンダリングします。たとえば、ユーザー入力用の変数を使用します。 - エージェントフレームワーク:
AgentType.ZERO_SHOT_REACTを使用してツールを備えたエージェントを構築し、LLMの出力に基づいてツールを動的に選択できます。 - 非同期処理のサポート:スケーラブルなアプリケーションで複数のクエリを同時に処理するなど、非同期チェーンを活用できます。
使用パターン
LangChainを使用するには、pip install langchainでインストールし、コンポーネントをインポートして設定します。基本的なチェーンでは、LLMインスタンスを作成し、プロンプトまたはツールに接続します。パターン:APIキーを使ってLLMを初期化し、チェーンを構築して、反復タスク用のループ内で実行します。エージェントの場合は、ツールを定義し、入力に基づいてエージェントにアクションを決定させます。
主なコマンド/API
- インストールとセットアップ:追加機能を含めるには
pip install langchain[all]を実行します。認証用にexport OPENAI_API_KEY=your_keyなどの環境変数を設定します。 - 基本的なチェーンの例:
from langchain.llms import OpenAI from langchain.chains import LLMChain llm = OpenAI(model_name="gpt-3.5-turbo") chain = LLMChain(llm=llm, prompt="What is {topic}?") result = chain.run(topic="LangChain") - APIエンドポイント:LangChainを外部サービスと使用する場合は、LangChainのラッパーを介して
https://api.openai.com/v1/chat/completionsなどのエンドポイントを呼び出します。認証トークンを含むヘッダーを渡します。 - 設定形式:たとえば、次のようなファイルでチェーンの設定にYAMLを使用します。
chains: - name: simple_chain llm: OpenAI prompt: "Summarize {text}"from langchain.utilities import load_configで読み込みます。 - CLIコマンド:LangChain CLIを拡張して使用する場合は、
langchain serveでチェーンをサービスとして実行するか、langchain debug --chain my_chainで実行をトレースしてデバッグします。
統合に関する注意事項
他のツールを呼び出し可能な関数としてラップすることで、LangChainと統合できます。たとえば、データベースクエリツールを追加するには、Tool.from_functionを使用してエージェントに渡します。OpenAIモデル用の$OPENAI_API_KEYや検索統合用の$SERPAPI_API_KEYなど、キーの環境変数を設定します。aimlopsクラスターのツールと組み合わせる場合は、ログ記録にLangChainのコールバックシステムを使用して互換性を確保します。トークン使用量を追跡するには、from langchain.callbacks import get_openai_callbackをインポートします。ベクトルデータベースでは、from langchain.vectorstores import Pineconeを初期化し、環境変数を通じてAPIキーを指定してPineconeと統合します。
エラー処理
チェーンの実行をtry-exceptブロックで囲んでエラーを処理します。例:
try:
result = chain.run(input_data)
except ValueError as e:
print(f"Invalid input: {e}")
except Exception as e:
print(f"General error: {e} - Check API key or network")
よくある問題には、APIのレート制限(if e.status_code == 429: retry()で確認)、無効なAPIキー($OPENAI_API_KEYが設定されていることを確認)、チェーンの設定ミス(利用可能な場合はchain.validate()を使用)があります。本番環境でのデバッグには、LangChainのハンドラーを使用してエラーを記録します。
具体的な使用例
-
シンプルな質問応答チェーン:LLMとベクトルストアを使用して質問に回答するチェーンを構築します。まず、
export OPENAI_API_KEY=your_keyを設定します。次に:from langchain.chains import RetrievalQA from langchain.llms import OpenAI qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff") answer = qa_chain.run({"query": "What is LangChain?"})関連するドキュメントを取得し、回答を生成します。
-
ウェブ検索エージェント:ウェブ検索用のツールを使うエージェントを作成します。
export SERPAPI_API_KEY=your_keyを設定します。コード:from langchain.agents import AgentType, load_tools, initialize_agent from langchain.llms import OpenAI tools = load_tools(["serpapi"]) agent = initialize_agent(tools, OpenAI(), agent=AgentType.ZERO_SHOT_REACT) response = agent.run("Search for latest AI news")エージェントはウェブを動的に検索し、結果を返します。
グラフの関係性
- 関連するクラスター:aimlops(例:ML 運用向けのツールを共有します)。
- タグによる接続:langchain(自身)、llm(他の LLM ツールへのリンク)、ai-framework(Hugging Face などのフレームワークに接続します)。
- 依存関係:OpenAI または類似の API が必要です。FAISS や Pinecone などのベクトルストアと統合します。