この内容は、以下ページをAIで機械翻訳したものです。
LangChain Python v1.0
現在閲覧中は開発中の v1 ドキュメントです。 詳細はこちら。
1.0 アルファリリースは以下のパッケージで利用可能です:
langchainlangchain-corelangchain-anthropiclangchain-openai
アルファ期間中により広範なサポートが展開されます。
新機能
LangChain 1.0 では次の新機能を導入しました:
- メッセージオブジェクトに新しい
.content_blocksプロパティを追加。メッセージ内容を完全に型付けされた形で提供し、プロバイダー間で推論、引用、サーバー側ツール呼び出しなどの最新 LLM 機能を標準化します。新しいメッセージコンテンツに伴う破壊的変更はありません。詳細は メッセージコンテンツ を参照。 -
langchainに新しい事前構築langgraphチェーンとエージェントを追加。langchainパッケージの表面積を縮小し、人気かつ必須の抽象化に集中しました。後方互換性のためにlangchain-legacyパッケージが提供されます。新しい エージェントドキュメント と リリースノート を参照。
破壊的変更
Python 3.9 のサポートを終了
Python 3.9 は 2025年10月に EOL となります。そのため、すべての LangChain パッケージは Python 3.10 以上が必須です。
一部のレガシーコードを langchain-legacy に移行
新しい langchain パッケージは、標準インターフェース(例: init_chat_model、init_embeddings)と langgraph ランタイムに基づく事前構築チェーン・エージェントに焦点を当て、表面積を縮小しました。インデックス API や langchain-community 機能のエクスポートなど、焦点外の機能は langchain-legacy パッケージへ移動しました。以前と同じ動作に戻すには、langchain のインストールを langchain-legacy に変更し、インポート先を置き換えてください。
変更前:
from langchain import ...
変更後:
from langchain_legacy import ...
チャットモデルの戻り値型を更新
チャットモデル呼び出しの戻り値型シグネチャが BaseMessage から AIMessage に修正されました。bind_tools を実装しているカスタムチャットモデルは、型チェックエラーを防ぐために戻り値シグネチャを更新してください。
変更前:
Runnable[LanguageModelInput, BaseMessage]:
変更後:
Runnable[LanguageModelInput, AIMessage]:
OpenAI Responses API のデフォルトメッセージ形式
langchain-openai は Responses API と連携する際、デフォルトでレスポンス項目をメッセージ content に格納します。以前は ChatOpenAI インスタンス化時に output_version="responses/v1" を指定することでオプトインしていました。この変更はマルチターンコンテキストで発生し得る BadRequestError を回避するためです。以前の動作に戻すには、環境変数 LC_OUTPUT_VERSION を v0 に設定するか、ChatOpenAI インスタンス化時に output_version="v0" を指定してください。
import os
os.environ["LC_OUTPUT_VERSION"] = "v0"
# または
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="...", output_version="v0")
langchain-anthropic のデフォルト max_tokens
ChatAnthropic の max_tokens パラメータは、従来のデフォルト 1024 より大きい新しいデフォルト値に変更されます。新しいデフォルトは選択したモデルに応じて変わります。
非推奨オブジェクトの削除
1.0 で削除予定だったメソッド、関数、その他のオブジェクトはすべて削除されました。
非推奨項目
.text() はプロパティへ変更
メッセージオブジェクトの .text() メソッドは、括弧なしのプロパティとして使用してください。
変更前:
text = response.text() # メソッド呼び出し
変更後:
text = response.text # プロパティアクセス
従来の使用パターン(.text())は引き続き動作しますが、警告が出ます。
事前構築エージェント
langchain のリリースは、LangChain の表面積を縮小し、人気かつ必須の抽象化に絞ることに焦点を当てています。
ReAct エージェントの移行
create_react_agent が langgraph.prebuilts から langchain.agents へ移動し、機能が大幅に強化されました:
構造化出力の強化
create_agent は出力を構造化データ型へ強制的に変換する機能が向上しました:
from langchain.agents import create_agent
from langchain_core.messages import HumanMessage
from pydantic import BaseModel
class Weather(BaseModel):
temperature: float
condition: str
def weather_tool(city: str) -> str:
"""都市の天気を取得する。"""
return f"{city} は晴れて気温は70度です"
agent = create_agent(
"openai:gpt-4o-mini",
tools=[weather_tool],
response_format=Weather
)
result = agent.invoke({"messages": [HumanMessage("サンフランシスコの天気は?")]})
print(repr(result["structured_response"]))
#> Weather(temperature=70.0, condition='sunny')
構造的改善
- メインループ統合: 構造化出力は追加の LLM 呼び出しを必要とせず、メインループ内で生成されます。
- ツール/出力選択: モデルはツール呼び出し、構造化出力、またはその両方を選択可能です。
- コスト削減: 余分な LLM 呼び出しによるコストが削減されます。
高度な設定
構造化出力生成には 2 つの戦略があります:
-
人工ツール呼び出し(ほとんどのモデルのデフォルト)
- LangChain がレスポンスフォーマットスキーマに合わせたツールを生成
- モデルがそのツールを呼び出し、LangChain が引数を目的の形式に変換
-
ToolStrategyヒントで設定可能
-
プロバイダー実装
- 利用可能な場合はネイティブの構造化出力サポートを使用
-
ProviderStrategyヒントで設定可能
プロンプトによる出力 は response_format 引数ではサポートされなくなりました。
エラーハンドリング
構造化出力エラー
ToolStrategy の handle_errors 引数でエラー処理を制御できます:
- パースエラー: モデルが期待する構造に合わないデータを生成した場合
- 複数ツール呼び出し: 構造化出力スキーマに対して 2 つ以上のツール呼び出しが生成された場合
ツール呼び出しエラー
ツール失敗時のエラーハンドリングが更新されました:
-
呼び出し失敗: エージェントは人工的な
ToolMessageを返し、モデルに再試行を促します(変更なし) -
実行失敗: デフォルトでエージェントは
ToolExceptionをスローし、無限ループを防止します
ToolNode の handle_tool_errors 引数で動作を設定できます。
破壊的変更
事前バインドされたモデル
構造化出力をより良くサポートするため、create_agent はツールや設定がバインドされた事前モデルをサポートしなくなりました:
# サポートされなくなった例
model_with_tools = ChatOpenAI().bind_tools([some_tool])
agent = create_agent(model_with_tools, tools=[])
# 代わりに
agent = create_agent("openai:gpt-4o-mini", tools=[some_tool])
構造化出力を使用しない場合は、動的モデル関数が事前バインドされたモデルを返すことが可能です。
インポートの変更
# 変更前
from langgraph.prebuilts import create_agent, ToolNode, AgentState
# 変更後
from langchain.agents import create_agent, ToolNode, AgentState
問題の報告
1.0 に関する問題は、GitHub で v1 ラベルを付けて報告してください。