Table of contents
模型
-
静态模型
静态模型在创建智能体时配置一次,并在整个执行过程中保持不变。这是最常见且直接的方法。
from langchain.agents import create_agent agent = create_agent( "openai:gpt-5", tools=tools )提示
模型标识符字符串支持自动推断(例如"gpt-5"将被推断为"openai:gpt-5")为了对模型配置进行更多控制,可以直接使用提供商包初始化模型实例。
from langchain.agents import create_agent from langchain_openai import ChatOpenAI model = ChatOpenAI( model="gpt-5", temperature=0.1, max_tokens=1000, timeout=30 # ...(其他参数) ) agent = create_agent(model, tools=tools) -
动态模型
动态模型在 运行时 根据当前 状态 和上下文进行选择。这支持复杂的路由逻辑和成本优化。
要使用动态模型,请使用
@wrap_model_call装饰器创建中间件,以修改请求中的模型:from langchain_openai import ChatOpenAI from langchain.agents import create_agent from langchain.agents.middleware import wrap_model_call, ModelRequest, ModelResponse basic_model = ChatOpenAI(model="gpt-4o-mini") advanced_model = ChatOpenAI(model="gpt-4o") @wrap_model_call def dynamic_model_selection(request: ModelRequest, handler) -> ModelResponse: """根据对话复杂性选择模型。""" message_count = len(request.state["messages"]) if message_count > 10: # 对较长的对话使用高级模型 model = advanced_model else: model = basic_model request.model = model return handler(request) agent = create_agent( model=basic_model, # 默认模型 tools=tools, middleware=[dynamic_model_selection] )警告
在使用结构化输出时,不支持预绑定模型(已调用bind_tools的模型)。如果您需要使用结构化输出的动态模型选择,请确保传递给中间件的模型未预绑定。
工具
工具赋予智能体执行行动的能力。智能体超越了简单的仅模型工具绑定,实现了:
- 序列中的多个工具调用(由单个提示触发)
- 适当的并行工具调用
- 基于先前结果的动态工具选择
- 工具重试逻辑和错误处理
- 工具调用之间的状态持久化