Agents 在LangChain 中怎么用

Agents 的概念:
Agents 是将大模型+你项目中的工具结合起来,做某一个任务的一个应用。
输入:任务 大模型解析任务,然后调用工具得到结果

因此模型 是重点:

该模型是你代理人的推理引擎。它可以以多种方式进行指定,支持静态和动态模型选择。

LangChain 创建代理的时候,支持动态加载模型和静态加载两种模式。

from langchain.agents import create_agent

agent = create_agent("openai:gpt-5", tools=tools)

如果使用董涛价值模型,可以使用中间件@wrap_model_call例如:

定义两个模型

basic_model = ChatOpenAI(model="gpt-4.1-mini") # 基础版(便宜、快)

advanced_model = ChatOpenAI(model="gpt-4.1") # 高级版(强、贵)

动态模型选择器(核心!)

@wrap_model_call # 这是 LangChain 提供的模型装饰器

def dynamic_model_selection(request: ModelRequest, handler) -> ModelResponse:

"""根据对话复杂度自动选模型"""

复制代码
# 看看现在对话有多少条消息
message_count = len(request.state["messages"])

# 如果消息超过10条 → 对话变复杂了
if message_count > 10:
    model = advanced_model  # 用高级模型
else:
    model = basic_model    # 否则用基础模型

# 把选中的新模型塞进去
return handler(request.override(model=model))
#创建智能体
gent = create_agent(
model=basic_model,    # 默认先用基础模型
tools=tools,
middleware=[dynamic_model_selection]  # 把动态切换功能加进去!

)

二:工具:因为工具的存在,才使得智能体能将大模型的结果落地

工具赋予代理采取行动的能力。代理不仅仅限模型工具绑定,还促进了:

多个工具调用依次触发(由一个提示触发)

适当时并行工具调用

基于以往结果的动态工具选择

工具重试逻辑与错误处理

工具调用间的状态持久性

同样的工具也分为静态工具和动态工具
静态工具

静态工具在创建代理时定义,执行过程中保持不变。这是最常见且最直接的方法。

要定义带有静态工具的代理,将工具列表传递给代理。

from langchain.tools import tool

from langchain.agents import create_agent

@tool

def search(query: str) -> str:

"""Search for information."""

return f"Results for: {query}"

@tool

def get_weather(location: str) -> str:

"""Get weather information for a location."""

return f"Weather in {location}: Sunny, 72°F"

agent = create_agent(model, tools=[search, get_weather])

动态工具

而动态工具则是在运行时修改代理可用的工具集,而不是事先定义。并非所有工具都适合所有情况。过多工具可能会使模型不堪重负(上下文过载),并增加错误;限制能力太少。动态工具选择允许根据认证状态、用户权限、功能标志或对话阶段调整可用工具集。

根据工具是否事先已知,有两种方法:
过滤预注册工具

当所有可能的工具在代理创建时都已知,你可以预先注册它们,并根据状态、权限或上下文动态过滤哪些工具暴露在模型中。

运行时注册工具:

当工具在运行时被发现或创建(例如从MCP服务器加载、基于用户数据生成,或从远程注册表获取),你需要既注册工具,还需要动态处理其执行。

这需要两个中间件钩子:

wrap_model_call- 将动态工具添加到请求中

wrap_tool_call- 处理动态添加工具的执行

相关推荐
AI机器学习算法1 小时前
深度学习模型演进:6个里程碑式CNN架构
人工智能·深度学习·cnn·大模型·ai学习路线
Ztopcloud极拓云视角2 小时前
从 OpenRouter 数据看中美 AI 调用量反转:统计口径、模型路由与多云应对方案
人工智能·阿里云·大模型·token·中美ai
AI医影跨模态组学2 小时前
如何将深度学习MTSR与膀胱癌ITGB8/TGF-β/WNT机制建立关联,并进一步解释其与患者预后及肿瘤侵袭、免疫抑制的生物学联系
人工智能·深度学习·论文·医学影像
空中海2 小时前
第七章:vue工程化与构建工具
前端·javascript·vue.js
搬砖的前端2 小时前
AI编辑器开源主模型搭配本地模型辅助对标GPT5.2/GPT5.4/Claude4.6(前端开发专属)
人工智能·开源·claude·mcp·trae·qwen3.6·ops4.6
zhensherlock2 小时前
Protocol Launcher 系列:Trello 看板管理的协议自动化
前端·javascript·typescript·node.js·自动化·github·js
zhuà!2 小时前
element的el-form提交校验没反应问题
前端·elementui
Python私教2 小时前
Hermes Agent 安全加固与生态扩展:2026-04-23 更新解析
人工智能
饼干哥哥3 小时前
Kimi K2.6 干成了Claude Design国产版,一句话生成电影级的动态品牌网站
人工智能
龙猫里的小梅啊3 小时前
CSS(一)CSS基础语法与样式引入
前端·css