langchain-upgrade-migration
LangChain SDKのアップグレードとマイグレーションを計画・実行します。LangChainのバージョンアップグレード、レガシーパターンからの移行、または破壊的変更後の新しいAPIへの更新が必要な場合に使用できます。「upgrade langchain」「langchain migration」「langchain breaking changes」「update langchain version」「langchain 0.3」といったフレーズで実行されます。
description の原文を見る
Plan and execute LangChain SDK upgrades and migrations. Use when upgrading LangChain versions, migrating from legacy patterns, or updating to new APIs after breaking changes. Trigger with phrases like "upgrade langchain", "langchain migration", "langchain breaking changes", "update langchain version", "langchain 0.3".
SKILL.md 本文
LangChain アップグレード マイグレーション
概要
LangChain バージョンを安全にアップグレードし、破壊的変更に対応するマイグレーション戦略のガイドです。
前提条件
- 既存の LangChain アプリケーション
- 現在のコードがコミットされたバージョン管理
- コア機能をカバーするテストスイート
- 検証用のステージング環境
手順
ステップ 1: 現在のバージョンを確認
pip show langchain langchain-core langchain-openai langchain-community
# 現在の要件を出力
pip freeze | grep -i langchain > langchain_current.txt
ステップ 2: 破壊的変更をレビュー
# バージョン別の主な破壊的変更:
# 0.1.x -> 0.2.x (大規模な再構築)
# - langchain-core が独立したパッケージとして抽出
# - インポートが langchain.* から langchain_core.* に変更
# - ChatModels がプロバイダーパッケージに移動
# 0.2.x -> 0.3.x (LCEL 標準化)
# - レガシーチェーンが非推奨
# - AgentExecutor の変更
# - メモリ API の更新
# マイグレーションガイドの確認:
# https://python.langchain.com/docs/versions/migrating_chains/
ステップ 3: インポートパスを更新
# 旧(0.2 以前):
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
# 新(0.3 以降):
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# マイグレーション スクリプト
import re
def migrate_imports(content: str) -> str:
"""旧来のインポートを新しいパターンにマイグレートします。"""
migrations = [
(r"from langchain\.chat_models import ChatOpenAI",
"from langchain_openai import ChatOpenAI"),
(r"from langchain\.llms import OpenAI",
"from langchain_openai import OpenAI"),
(r"from langchain\.prompts import",
"from langchain_core.prompts import"),
(r"from langchain\.schema import",
"from langchain_core.messages import"),
(r"from langchain\.callbacks import",
"from langchain_core.callbacks import"),
]
for old, new in migrations:
content = re.sub(old, new, content)
return content
ステップ 4: レガシーチェーンを LCEL にマイグレート
# 旧: LLMChain(非推奨)
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(input="hello")
# 新: LCEL(LangChain Expression Language)
from langchain_core.output_parsers import StrOutputParser
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"input": "hello"})
ステップ 5: エージェントをマイグレート
# 旧: initialize_agent(非推奨)
from langchain.agents import initialize_agent, AgentType
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)
# 新: create_tool_calling_agent
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
ステップ 6: メモリをマイグレート
# 旧: ConversationBufferMemory
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
chain = LLMChain(llm=llm, prompt=prompt, memory=memory)
# 新: RunnableWithMessageHistory
from langchain_core.chat_history import BaseChatMessageHistory
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_community.chat_message_histories import ChatMessageHistory
store = {}
def get_session_history(session_id: str) -> BaseChatMessageHistory:
if session_id not in store:
store[session_id] = ChatMessageHistory()
return store[session_id]
chain_with_history = RunnableWithMessageHistory(
chain,
get_session_history,
input_messages_key="input",
history_messages_key="history"
)
ステップ 7: パッケージをアップグレード
# 現在の環境をバックアップ
pip freeze > requirements_backup.txt
# 最新の安定版にアップグレード
pip install --upgrade langchain langchain-core langchain-openai langchain-community
# または特定のバージョンを指定
pip install langchain==0.3.0 langchain-core==0.3.0
# バージョンを確認
pip show langchain langchain-core
ステップ 8: テストを実行
# テストスイートを実行
pytest tests/ -v
# 非推奨警告をチェック
pytest tests/ -W error::DeprecationWarning
# 型チェックを実行
mypy src/
マイグレーション チェックリスト
- 現在のバージョンを文書化
- 破壊的変更をレビュー
- インポートを更新
- LLMChain -> LCEL へマイグレート
- エージェント初期化を更新
- メモリパターンを更新
- テストがパスする
- ステージング検証が完了
エラーハンドリング
| エラー | 原因 | 解決方法 |
|---|---|---|
| ImportError | 旧来のインポートパス | 新しいパッケージインポートに更新 |
| AttributeError | 削除されたメソッド | マイグレーションガイドで代替手段を確認 |
| DeprecationWarning | 旧来の API を使用 | 新しいパターンにマイグレート |
| TypeError | 変更されたシグネチャ | 関数の引数を更新 |
リソース
次のステップ
アップグレード後、langchain-common-errors を使用して問題のトラブルシューティングを行います。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Brmbobo
- リポジトリ
- Brmbobo/Web2podcast
- ライセンス
- MIT
- 最終更新
- 2026/1/26
Source: https://github.com/Brmbobo/Web2podcast / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。