当前位置: 首页 > news >正文

langchain核心组件1-智能体

这里写目录标题

  • 简介
    • 基础使用
      • 静态模型使用
    • 动态模型

简介

langchain版本 v1.x
在此版本中,langchain可以创建一个智能体

基础使用

我日常使用因为是直接对话,所以基本上只需要以下几个组件

  • model: 定义智能体大脑,是大语言模型地址,可以云也可以本地
  • tools:智能体可以使用的工具集合,在使用中可以通过工具来实现用户需要
  • middleware:中间件,类似于spring中的aop,可以在中间拦截做对应业务处理,例如权限,prompt改写,敏感词删选,敏感数据清空等。
  • system_prompt:系统提示词,类似于告诉llm,它的角色是什么,基本上同模型,提示词越好,agent效果越好
  • checkpointer:模型短期记忆,模型因此可以实现短期记忆,放内存还是放库里,自行决定
  • state_schema: 状态记录数属性,里面可以放置一些需要的变量值,打断点可以发现在runtime.state中
chat_model=ChatTongyi(model="qwen3-max")# 这里是各个langchain工具tools=[None]middlewares=[None]system_prompt="你是一个智能助手,要帮助用户解决问题"response_format="返回数据以json格式"memory=InMemorySaver()# 使用示例if__name__=="__main__":agent=create_agent(model=chat_model,tools=tools,system_prompt=system_prompt,middleware=middlewares,state_schema=AgentState,checkpointer=memory)

静态模型使用

defstatic_model_agent():''' 静态模型使用 :return: '''agent=create_agent(model=chat_model)config:RunnableConfig={"configurable":{"thread_id":"1"}}response=agent.invoke({"messages":"你好,我是张鹏"},config)formessageinresponse["messages"]:print(message.pretty_print())


这是最简单的用法,直接调用llm,使用基础对话功能。

动态模型

defdynamic_model_agent():''' 静态模型使用 :return: '''advanced_model=ChatTongyi(model="qwen3-max")basic_model=ChatTongyi(model="qwen3-max")@wrap_model_calldefdynamic_model_selection(request:ModelRequest,handler)->ModelResponse:"""根据对话复杂性选择模型。"""message_count=len(request.state["messages"])ifmessage_count>10:# 对较长的对话使用高级模型new_request=request.override(model=advanced_model)else:new_request=request.override(model=basic_model)# 使用新请求调用处理器returnhandler(new_request)agent=create_agent(model=basic_model,# 默认模型middleware=[dynamic_model_selection])response=agent.invoke({"messages":"你好,我是张鹏"})formsginresponse["messages"]:print(msg.pretty_print())

这里要使用动态模型就要使用@wrap_model_call注解,标识在request中修改替换model。
这里尤其注意的是:官方文档代码会执行报错

ifmessage_count>10:# 对较长的对话使用高级模型model=advanced_modelelse:model=basic_model request.model=modelreturnhandler(request)

这里会报错DeprecationWarning: Direct attribute assignment to ModelRequest.model is deprecated. Use request.override(model=…) instead to create a new request with the modified attribute.
request.model = model
原因:ModelRequest 对象是不可变的(immutable),我们可以直接new一个新的赋值然后返回。

http://www.jsqmd.com/news/536932/

相关文章:

  • 不中断就能保证原子性?大错特错!
  • GTE-large多任务NLP效果惊艳展示:事件抽取与问答系统真实输出集
  • Windows系统OpenClaw完整安装部署保姆级教程(官方推荐+3种安装方式+全流程避坑指南)
  • Phi-4-Reasoning-Vision企业应用:与RAG系统集成实现文档图像知识增强推理
  • OpenClaw隐私保护方案:nanobot镜像本地化部署的3大优势
  • 漫画脸描述生成实战案例:为独立游戏开发团队生成10个NPC角色设定
  • OpenClaw插件开发入门:为Qwen3-32B镜像编写天气查询技能
  • Pixel Dream Workshop 自动化测试集成:为UI界面生成海量测试用例配图
  • PYTHON_DAY07_容器入门和字符串详解
  • ANIMATEDIFF PRO环境配置:Flask后端+HTML5前端本地调试全流程
  • PP-DocLayoutV3高算力适配:FP16推理开启后显存降低30%,精度损失<0.5%
  • 【2026 最新】Java JDK 17 安装配置详细全攻略 带图展示
  • 基于遗传算法的LQR控制器优化设计sumlink仿真模型探索
  • Keycloak 完全使用指南:从零开始理解与应用
  • STM32模拟UART实现技术详解
  • Windows系统OpenClaw安装全流程配置详解(从初始化到进阶优化,新手零踩坑)
  • 电路设计中的常用速算
  • 5、线性代数之特征值、矩阵相似(知识总结)
  • 仅剩72小时!主流边缘芯片厂商即将停更Python模型导入工具链——现在必须掌握的3种离线转换保底方案
  • TCP三次握手与四次挥手详解含图解
  • 百川2-13B-4bits模型压缩对比:OpenClaw任务场景下的显存与速度权衡
  • linux基础学习三
  • YOLO X Layout实战:从扫描PDF中自动提取标题与表格的Python实现
  • Hunyuan-MT-7B低资源语言支持展示:东南亚小语种(老挝、缅甸、高棉)实测
  • Qwen3.5开源模型实测
  • 智能客服原型:OpenClaw接入Qwen3.5-9B处理电商常见问答
  • 从零开始:DeepWiki-Open 开源AI维基生成器完全部署指南
  • Anomalib使用
  • 阿里蚂蚁Kimi连夜换引擎!混合注意力炸场,456B模型200万token秒吞,API直接打2折
  • ESLint代码规范(一)