LangChain モデル呼び出し -- init_chat_model() 関数

LangChain init_chat_model() は LangChain で最もよく使われる関数の一つで、統一された方法で 20 以上のモデルプロバイダーに接続でき、各プロバイダーのクラス名やパラメータの違いを覚える必要はありません。

構文

init_chat_model() 関数の構文は次のとおりです:

from langchain.chat_models import init_chat_model

# 完整语法
model = init_chat_model(
    model,                    # str | None:模型名称(provider:model 格式)
    *,
    model_provider=None,      # str | None:单独的模型提供商
    configurable_fields=None, # None | "any" | list[str]:可运行时修改的字段
    config_prefix=None,       # str | None:配置键前缀
    **kwargs,                 # 模型特定参数(temperature、max_tokens 等)
)

パラメータの説明:

パラメータ型説明デフォルト値
modelstr または Noneモデル名、provider:model 形式。None を渡すと設定可能モデルの作成に使用できます无
model_providerstr または Noneプロバイダーを個別に指定します。動的に取得する場合や model から推論できない場合に使用しますNone
configurable_fields"any" または list または None実行時に変更可能なフィールドのリスト。None は固定モデルを意味しますNone
config_prefixstr または None複数モデルのシナリオで設定キーのプレフィックスを付け、競合を避けますNone
**kwargsdict基盤となるモデルに渡すパラメータ无

model パラメータの詳細

provider:model 形式(推奨)

形式はプロバイダー:モデル名で、コロンで区切ります:

例

from langchain.chat_models import init_chat_model

# provider:model 形式
model = init_chat_model("deepseek:deepseek-v4-flash")
model = init_chat_model("anthropic:claude-sonnet-4-5-20250929")
model = init_chat_model("deepseek:deepseek-chat")
model = init_chat_model("ollama:llama3.2")
model = init_chat_model("groq:llama-3.3-70b")

モデルプロバイダーの自動推論

プロバイダーのプレフィックスを指定しない場合、LangChain はモデル名から推論を試みます:

例

from langchain.chat_models import init_chat_model

# プロバイダーを自動推論(モデル名のプレフィックスに基づく)
model = init_chat_model("deepseek-v4-flash")       # → openai
model = init_chat_model("claude-sonnet-4-5") # → anthropic
model = init_chat_model("deepseek-chat")     # → deepseek
model = init_chat_model("grok-3")            # → xai
model = init_chat_model("mistral-large")     # → mistralai
モデル名のプレフィックス推論されるプロバイダー
gpt-、o1、o3、chatgpt、text-davinciopenai
claudeanthropic
geminigoogle_vertexai
commandcohere
deepseekdeepseek
mistral、mixtralmistralai
grokxai
sonarperplexity
amazon.、anthropic.、meta.bedrock

自動推論は便利ですが、100% 正しいとは限りません。例えば gemini プレフィックスは google_vertexai または google_genai を指す可能性があり、将来のバージョンでデフォルトの推論結果が変わる可能性があります。本番環境では常に provider:model 形式を使用することをお勧めします。

model_provider パラメータ

model_provider を個別に指定した場合、provider:model 形式と同じ効果になります:

例

# 以下の2つの書き方は完全に同等です
model = init_chat_model("claude-sonnet-4-5", model_provider="anthropic")
model = init_chat_model("anthropic:claude-sonnet-4-5")

model_provider を使用するシナリオ:

  • 設定ファイルからプロバイダー名を動的に読み取る場合
  • プロバイダー名とモデル名を独立して設定する必要がある場合(実行時にそれぞれ切り替える)
  • モデル名が自動推論できず、文字列の連結が不便な場合

固定モデル vs 設定可能モデル

init_chat_model() には2つの使用モードがあります:

パターン 1:固定モデル

具体的な model 文字列を指定すると、すぐに使用できる BaseChatModel インスタンスが返されます:

例

from langchain.chat_models import init_chat_model

# model を指定すると、固定モデルが返される
model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0.7)
response = model.invoke("サンプル を紹介")
print(response.content)

.env が現在のディレクトリにある場合は、以下のコードを使用して現在のパスの設定を読み込みます:

import os

from dotenv import load_dotenv

# 加载当前目录 .env 文件
load_dotenv()
from langchain.chat_models import init_chat_model

# 指定了 model,返回固定模型
model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0.7)
response = model.invoke("介绍サンプル")
print(response.content)

パターン 2:設定可能モデル

model を指定せず(または None に設定)、実行時に動的に切り替えられるモデルを作成します:

例

from langchain.chat_models import init_chat_model

# model を指定しないと、設定可能モデルが返される
# 一部のパラメータ(temperature=0.7 など)は固定でき、残りは実行時に指定する
configurable_model = init_chat_model(temperature=0.7)

# 実行時に config でモデルを指定する
response = configurable_model.invoke(
    "サンプル を紹介",
    config={"configurable": {"model": "deepseek-v4-flash"}}
)
print(response.content)

# 同じモデルインスタンスでも、異なるモデルで実行できる
response = configurable_model.invoke(
    "サンプル を紹介",
    config={"configurable": {"model": "claude-sonnet-4-5"}}
)
print(response.content)

設定可能モデルは A/B テストやコスト最適化に非常に役立ちます。サービスを再起動することなく、設定を変更するだけでモデルを切り替えたりパラメータを調整したりできます。


サポートされているすべてのモデルプロバイダー

以下は init_chat_model() が内蔵サポートするプロバイダーとそのインストールパッケージです:

provider 名インストールパッケージ代表的なモデル
openailangchain-deepseekgpt-4o、gpt-4o-mini
anthropiclangchain-anthropicclaude-sonnet-4-5、claude-opus-4-7
google_genailangchain-google-genaigemini-2.5-flash、gemini-2.5-pro
google_vertexailangchain-google-vertexaigemini-2.5-flash、gemini-2.5-pro
deepseeklangchain-deepseekdeepseek-chat、deepseek-reasoner
mistralailangchain-mistralaimistral-large、mistral-small
groqlangchain-groqllama-3.3-70b、mixtral-8x7b
ollamalangchain-ollamallama3.2、qwen2.5
fireworkslangchain-fireworksaccounts/fireworks/models/llama-v3p1-70b
togetherlangchain-togethermeta-llama/Llama-3.3-70B
xailangchain-xaigrok-3
openrouterlangchain-openrouteropenai/gpt-4o、anthropic/claude-sonnet
perplexitylangchain-perplexitysonar、sonar-pro
huggingfacelangchain-huggingface各種 HuggingFace モデル
coherelangchain-coherecommand-r-plus

一般的な kwargs パラメータ

kwargs パラメータは基盤となるモデルクラスに直接渡されます。一般的なものは次のとおりです:

例

from langchain.chat_models import init_chat_model

model = init_chat_model(
    "deepseek:deepseek-v4-flash",

    # 出力のランダム性を制御(0〜2)、値が小さいほど出力が安定する
    temperature=0.3,

    # 出力の最大トークン数を制限(コストを制御)
    max_tokens=200,

    # リクエストのタイムアウト時間(秒)
    timeout=30,

    # 失敗時の再試行回数
    max_retries=2,

    # カスタム API アドレス(プロキシ/中継シナリオ)
    # base_url="https://your-proxy.com/v1",

    # レートリミッター(リクエスト頻度を制御)
    # rate_limiter=MyRateLimiter(requests_per_second=5),
)

response = model.invoke("Python とは?")
print(response.content)
パラメータ型説明対応プロバイダー
temperaturefloatランダム性を制御、0〜2、デフォルト値はモデルによって異なる大部分
max_tokensint出力の最大トークン数を制限すべて
timeoutint または floatリクエストのタイムアウト秒数すべて
max_retriesintリクエスト失敗後の再試行回数大部分
base_urlstrカスタム API エンドポイント大部分
rate_limiterBaseRateLimiterレートリミッターのインスタンス大部分
top_pfloat核サンプリングパラメータ、0〜1大部分
stoplist[str]停止シーケンス。モデルはこれらの語に遭遇すると生成を停止します大部分

temperature と top_p は通常同時に設定しません。temperature は「分布の形状」を制御し、top_p は「候補範囲」を制御します。ほとんどのシナリオでは、temperature だけを調整すれば十分です。


ConfigurableModel——実行時のモデル切り替え

ConfigurableModel は init_chat_model() の高度な使い方で、実行時にモデルとパラメータを動的に指定できます:

例

from langchain.chat_models import init_chat_model

# 設定可能モデルを作成し、デフォルト値を設定
model = init_chat_model(
    "deepseek:deepseek-v4-flash",       # デフォルトモデル
    configurable_fields="any",  # すべてのパラメータは実行時に変更可能
    config_prefix="my",         # 設定キーのプレフィックス
    temperature=0.3,            # デフォルトの温度
)

# デフォルト設定で実行
response = model.invoke("サンプル を紹介")
print(f"デフォルト設定: {response.content[:50]}...")

# 実行時にモデルとパラメータを上書き(my_ プレフィックスに注意)
response = model.invoke(
    "サンプル を紹介",
    config={
        "configurable": {
            "my_model": "deepseek:deepseek-v4-pro",       # モデルの切り替え
            "my_temperature": 0.9,             # 温度の調整
        }
    }
)
print(f"上書き設定: {response.content[:50]}...")

configurable_fields の値:

值意味
None設定不可。通常の BaseChatModel を返します(固定モデルモード)
"any"すべてのパラメータが設定可能(セキュリティに注意:api_key なども変更可能)
["model", "temperature"]リストで指定されたフィールドのみ設定可能

configurable_fields="any" を使用する際はセキュリティに注意してください:安全でない設定ソースを信頼すると、api_key や base_url などの機密フィールドが改ざんされる可能性があります。本番環境では設定可能なフィールドを明示的に列挙することをお勧めします。

その他の拡張