Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 1品質スコア 58/100

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

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: Brmbobo · Brmbobo/Web2podcast · ライセンス: MIT