Models¶
LangGraph 通过 LangChain 库内置支持 LLMs(语言模型)。这使得将各种 LLMs 集成到你的 Agent 和工作流中变得非常容易。
初始化模型¶
使用 init_chat_model
来初始化模型:
import os
from langchain.chat_models import init_chat_model
os.environ["OPENAI_API_KEY"] = "sk-..."
llm = init_chat_model("openai:gpt-4.1")
👉 阅读 OpenAI 集成文档
import os
from langchain.chat_models import init_chat_model
os.environ["ANTHROPIC_API_KEY"] = "sk-..."
llm = init_chat_model("anthropic:claude-3-5-sonnet-latest")
👉 阅读 Anthropic 集成文档
import os
from langchain.chat_models import init_chat_model
os.environ["AZURE_OPENAI_API_KEY"] = "..."
os.environ["AZURE_OPENAI_ENDPOINT"] = "..."
os.environ["OPENAI_API_VERSION"] = "2025-03-01-preview"
llm = init_chat_model(
"azure_openai:gpt-4.1",
azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
)
👉 阅读 Azure 集成文档
import os
from langchain.chat_models import init_chat_model
os.environ["GOOGLE_API_KEY"] = "..."
llm = init_chat_model("google_genai:gemini-2.0-flash")
👉 阅读 Google GenAI 集成文档
from langchain.chat_models import init_chat_model
# Follow the steps here to configure your credentials:
# https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html
llm = init_chat_model(
"anthropic.claude-3-5-sonnet-20240620-v1:0",
model_provider="bedrock_converse",
)
👉 阅读 AWS Bedrock 集成文档
直接实例化模型¶
如果某个模型提供商无法通过 init_chat_model
获取,你可以直接实例化该提供商的模型类。该模型必须实现 BaseChatModel 接口 并支持工具调用:
API Reference: ChatAnthropic
# Anthropic 已通过 `init_chat_model` 支持,
# 但你也可以直接实例化它。
from langchain_anthropic import ChatAnthropic
model = ChatAnthropic(
model="claude-3-7-sonnet-latest",
temperature=0,
max_tokens=2048
)
工具调用支持
如果你正在构建一个需要模型调用外部工具的 Agent 或工作流,请确保底层 语言模型支持 工具调用。兼容模型可在 LangChain 集成目录 中找到。
在 Agent 中使用¶
在使用 create_react_agent
时,你可以通过模型名称字符串指定模型,这是使用 init_chat_model
初始化模型的简写方式。这允许你在无需直接导入或实例化模型的情况下使用它。
from langchain_anthropic import ChatAnthropic
from langgraph.prebuilt import create_react_agent
model = ChatAnthropic(
model="claude-3-7-sonnet-latest",
temperature=0,
max_tokens=2048
)
# 或者
# model = init_chat_model("anthropic:claude-3-7-sonnet-latest")
agent = create_react_agent(
model=model,
# 其他参数
)
高级模型配置¶
禁用流式传输¶
要禁用individual LLM token的流式传输,请在初始化模型时将 disable_streaming
设置为 True
:
有关 disable_streaming
的更多信息,请参阅API 参考。
添加模型回退¶
你可以使用 model.with_fallbacks([...])
添加一个回退到其他模型或不同的 LLM 提供商:
有关模型回退的更多信息,请参阅此指南。
使用内置速率限制器¶
Langchain 包含一个内置的内存速率限制器。此速率限制器是线程安全的,可以在同一进程中的多个线程之间共享。
API Reference: InMemoryRateLimiter | ChatAnthropic
from langchain_core.rate_limiters import InMemoryRateLimiter
from langchain_anthropic import ChatAnthropic
rate_limiter = InMemoryRateLimiter(
requests_per_second=0.1, # <-- 非常慢!我们每 10 秒才能发起一次请求!!
check_every_n_seconds=0.1, # 每 100 毫秒唤醒一次,以检查是否允许发起请求,
max_bucket_size=10, # 控制最大突发大小。
)
model = ChatAnthropic(
model_name="claude-3-opus-20240229",
rate_limiter=rate_limiter
)
有关如何处理速率限制的信息,请参阅 LangChain 文档。
引入您自己的模型¶
如果您的目标 LLM 没有被 LangChain 正式支持,请考虑以下选项:
-
实现自定义 LangChain 聊天模型:创建一个符合LangChain 聊天模型接口的模型。这使得与 LangGraph 的 Agent 和工作流完全兼容,但需要对 LangChain 框架有一定的了解。
-
自定义流式处理的直接调用:通过
StreamWriter
添加自定义流式处理逻辑直接使用您的模型。 有关指导,请参阅自定义流式处理文档。此方法适用于不需要预构建的 Agent 集成的自定义工作流。