郑州网站推广¥做下拉去118crwordpress+js插件开发

张小明 2026/1/11 22:40:04
郑州网站推广¥做下拉去118cr,wordpress+js插件开发,做catalog的免费网站,如何在百度上发表文章在人工智能飞速发展的今天#xff0c;单纯的语言模型已经无法满足复杂任务的需求。就像一个聪明的大脑如果没有手脚#xff0c;也难以完成实际工作。LangChain 1.0的智能体#xff08;Agent#xff09;正是为了解决这一问题#xff0c;将语言模型与工具、中间件、记忆等组…在人工智能飞速发展的今天单纯的语言模型已经无法满足复杂任务的需求。就像一个聪明的大脑如果没有手脚也难以完成实际工作。LangChain 1.0的智能体Agent正是为了解决这一问题将语言模型与工具、中间件、记忆等组件深度融合打造出能够自主推理、迭代求解的智能系统。本文将从核心组件、技术架构、实战应用三个维度全面解析LangChain 1.0智能体的技术精髓帮助开发者快速掌握智能体的构建与优化方法。一、智能体的核心架构五大组件协同工作LangChain 1.0智能体的核心优势在于模块化设计通过五大核心组件的灵活组合实现从简单问答到复杂任务处理的全场景覆盖。这五大组件如同智能体的大脑、手脚、语言、扩展能力和记忆系统各司其职又协同工作。一模型智能体的推理大脑模型是智能体的核心推理引擎负责理解用户需求、规划任务流程、选择合适工具。LangChain 1.0支持静态与动态两种模型选择方式满足不同场景的需求。静态模型是最常用的配置方式在创建智能体时一次性指定整个执行过程中保持不变。例如使用阿里云通义千问模型构建的基础配置basic_modelChatOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,modelqwen-plus,api_keyos.getenv(DASHSCOPE_API_KEY),temperature1.0,timeout60,max_tokens1024,max_retries2)这种方式配置简单、性能稳定适合需求明确的场景。动态模型则更具灵活性能够根据运行时的上下文信息动态选择合适的模型。比如根据用户的VIP等级选择基础模型或高级模型实现成本与性能的平衡wrap_model_calldefdynamic_select_model(request:ModelRequest,handle)-ModelResponse:ifrequest.runtime.context[vip]1:print(使用基础模型)modelbasic_modelelse:print(使用高级模型)modeladvance_model request.modelmodelreturnhandle(request)动态模型选择在SaaS服务中尤为实用既能满足普通用户的基础需求又能为付费用户提供更优质的服务。模型的关键调用方法包括invoke同步调用、stream流式输出和batch批量处理。流式输出在用户交互场景中非常重要通过实时返回token能够显著提升用户体验。例如查询天气时流式输出可以逐步展示查询过程和结果让用户感知系统的实时响应。二工具智能体的行动手脚如果说模型是智能体的大脑工具就是它的手脚赋予智能体与外部系统交互的能力。LangChain 1.0的工具系统支持连续调用、并行调用、动态选择等高级功能能够处理复杂的任务流程。创建自定义工具非常简单通过tool装饰器即可快速定义。例如查询天气的工具tool(name_or_callableweather_search,description查询天气)defweather_search(location:str,units:strcelsius,include_forecast:boolFalse):temp22ifunitscelsiuselse72resultf当前{location}天气{temp}摄氏度ifinclude_forecast:result\n未来5天晴returnresult工具的参数验证可以通过Pydantic实现确保输入参数的合法性避免运行时错误。例如为天气查询工具添加参数校验classWeatherInput(BaseModel):location:strField(description城市名称或坐标)units:Literal[celsius,fahrenheit]Field(defaultcelsius,description温度单位)include_forecast:boolField(defaultFalse,description是否包含5天预报)tool(name_or_callableweather_search,description查询天气,args_schemaWeatherInput)defweather_search(location:str,units:strcelsius,include_forecast:boolFalse):# 实现逻辑不变工具还可以通过ToolRuntime访问运行时上下文信息包括状态数据、用户配置、存储信息等。这一特性使得工具能够根据上下文动态调整行为例如在天气查询工具中记录用户的查询历史tool(name_or_callableweather_search,description查询天气)defweather_search(runtime:ToolRuntime,location:str北京,units:strcelsius):# 获取用户IDuser_idruntime.context.user_id# 记录查询日志stream_writerruntime.stream_writer stream_writer(f用户{user_id}查询{location}天气)# 执行查询逻辑temp22ifunitscelsiuselse72returnf当前{location}天气{temp}摄氏度三消息智能体的沟通语言消息是智能体与用户、工具之间沟通的桥梁LangChain 1.0定义了标准化的消息格式支持文本、图像等多模态内容。消息包含角色Role、内容Content和元数据Metadata三个核心属性角色分为系统消息、用户消息、AI消息和工具消息四种类型。系统消息用于配置智能体的行为模式例如定义天气查询助手的系统消息system_messageSystemMessage(content你是一个天气查询助手需要根据用户输入的地点查询天气回答简洁明了)用户消息是用户的查询内容AI消息是智能体的响应工具消息则是工具调用的结果。这四种消息构成了智能体的对话上下文支持复杂的多轮交互。LangChain 1.0还引入了标准内容块Content Blocks特性统一不同模型提供商的内容格式。例如使用DeepSeek模型的深度思考功能会返回包含推理过程和最终结果的结构化内容块responsebasic_model.invoke(深度思考下如何才能实现AIGC)# 输出包含reasoning和text两种类型的内容块这种结构化的消息格式使得智能体能够更好地理解和处理复杂响应提升任务执行的准确性。四中间件智能体的扩展能力中间件是LangChain 1.0最具创新性的特性之一它允许开发者在不修改核心逻辑的情况下对智能体的行为进行扩展和定制。中间件可以看作是智能体的插件系统支持在模型调用前后、工具执行前后插入自定义逻辑。LangChain 1.0提供了丰富的内置中间件覆盖常见的扩展场景HumanInTheLoopMiddleware人机交互中间件在执行敏感工具前需要人工审批。例如在查询用户隐私数据时需要管理员批准agentcreate_agent(modelbase_model,tools[get_weather,get_user_info],middleware[HumanInTheLoopMiddleware(interrupt_on{get_user_info:{allowed_decisions:[approve,edit,reject]},get_weather:False,})],)这种方式在企业级应用中非常重要能够有效防范数据泄露风险。ModelCallLimitMiddleware模型调用限制中间件避免系统异常导致的无限调用。例如限制每个用户最多调用3次模型middleware[ModelCallLimitMiddleware(thread_limit3,run_limit2,exit_behaviorend)]这一中间件能够有效控制API调用成本防止恶意攻击。PIIMiddleware敏感数据检测中间件用于过滤用户输入和工具输出中的敏感信息。例如屏蔽密码、token等敏感数据sensitive_patterns[r[^]*password[^]*\s*:\s*[^]*,r[^]*token[^]*\s*:\s*[^]*]combined_pattern|.join(sensitive_patterns)middleware[PIIMiddleware(pii_typepersonal,strategymask,detectorcombined_pattern,apply_to_inputTrue,apply_to_outputTrue)]LLMToolEmulator工具模拟中间件当工具尚未开发完成或测试成本较高时可以使用LLM模拟工具行为。例如在开发旅行规划智能体时模拟机票查询工具middleware[LLMToolEmulator(modelbase_model,tools[get_plane_ticket,get_hotel_info])]这种方式能够加速开发流程降低测试成本。除了内置中间件LangChain 1.0还支持自定义中间件。开发者可以通过装饰器或子类继承的方式实现个性化的扩展逻辑。例如通过装饰器定义日志记录中间件before_modeldeflog_middleware(state:AgentState,runtime:Runtime)-dict[str,Any]|None:print(f模型调用时间{datetime.now()})print(f当前消息数量{len(state[messages])})returnNone中间件的执行流程遵循特定的顺序before_*钩子按顺序执行after_*钩子反向执行wrap_*钩子嵌套执行。这种设计确保了中间件之间的兼容性支持复杂的扩展场景。五短期记忆智能体的记忆系统短期记忆使智能体能够记住对话过程中的关键信息支持多轮交互和上下文感知。LangChain 1.0通过AgentState对象管理短期记忆包含对话历史、运行时参数等信息。自定义State可以扩展记忆的存储内容例如记录用户的偏好设置classCustomState(AgentState):user_preferences:dict# 存储用户偏好如温度单位、语言等记忆的保存方式分为内存存储InMemorySaver和数据库存储PostgresSaver。内存存储适用于开发测试场景数据库存储则适用于生产环境支持历史记录的持久化和多实例共享。历史消息管理是短期记忆的核心功能LangChain 1.0提供了消息裁剪trim、删除delete和摘要summary三种管理方式。消息裁剪用于控制上下文长度避免超出模型的token限制before_modeldefcustomer_trim_messages(state:AgentState,runtime:Runtime)-dict[str,Any]|None:messagesstate[messages]iflen(messages):returnNone# 保留最新5条消息recent_messagestrim_messages(messages,strategylast,token_counterlen,max_tokens5,)first_msgmessages[0]# 保留系统消息return{messages:[RemoveMessage(idREMOVE_ALL_MESSAGES),first_msg,*recent_messages]}消息摘要则通过SummarizationMiddleware实现当对话历史过长时自动将历史消息汇总为摘要节省上下文空间summary_prompt 您是一位对话摘要助手需要总结人类与助手之间的对话。 按照城市天气格式输出不知道的天气信息不要输出。 middleware[SummarizationMiddleware(modelbase_model,max_tokens_before_summary100,messages_to_keep1,summary_promptsummary_prompt,)]这种方式既保证了上下文的完整性又有效控制了token消耗。二、核心组件的协同工作流程理解了五大核心组件之后我们来看它们如何协同工作完成一个完整的任务。以旅行规划智能体为例其工作流程如下用户发起请求用户输入帮我制定一个去北京的旅行计划系统将其封装为用户消息。模型推理智能体的模型解析用户需求识别出需要查询天气、机票、酒店和景点信息生成工具调用计划。工具选择通过LLMToolSelectorMiddleware筛选出相关工具包括get_weather、get_plane_ticket、get_hotel_info和get_scenic。工具执行智能体依次调用或并行调用所选工具获取北京的天气情况、酒店推荐、景点信息等数据。对于尚未开发完成的机票查询工具通过LLMToolEmulator模拟返回结果。结果处理模型接收工具返回的结构化数据进行整理和自然语言转换。记忆更新将用户请求、工具调用结果、最终响应等信息存入短期记忆支持后续的多轮交互。响应输出通过流式输出将旅行计划逐步返回给用户提升交互体验。在整个流程中中间件发挥着重要的支撑作用HumanInTheLoopMiddleware确保敏感操作需要人工审批PIIMiddleware过滤用户输入中的敏感信息ModelCallLimitMiddleware控制模型调用次数SummarizationMiddleware管理对话历史。三、实战场景构建企业级天气查询智能体为了帮助开发者更好地理解和应用LangChain 1.0的核心组件下面将通过一个企业级天气查询智能体的实战案例展示组件的具体使用方法。一需求分析企业级天气查询智能体需要满足以下需求支持多城市天气查询包括实时天气和5天预报。支持用户偏好设置如温度单位、语言等。支持批量查询多个城市的天气。具备敏感数据过滤功能防止用户输入恶意内容。具备模型调用限制控制API成本。支持对话历史记录和多轮交互。二技术选型模型使用阿里云通义千问qwen-plus作为基础模型高级用户自动切换到qwen-max。工具天气查询工具集成第三方天气API、用户偏好管理工具。中间件PIIMiddleware敏感数据过滤、ModelCallLimitMiddleware调用限制、SummarizationMiddleware历史摘要、HumanInTheLoopMiddleware敏感操作审批。记忆存储生产环境使用PostgresSaver开发环境使用InMemorySaver。三代码实现模型配置# 基础模型配置basic_modelChatOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,modelqwen-plus,api_keyos.getenv(DASHSCOPE_API_KEY),temperature0.3,# 降低随机性保证结果准确性timeout60,max_tokens2048,max_retries3)# 高级模型配置advance_modelChatOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,modelqwen-max,api_keyos.getenv(DASHSCOPE_API_KEY),temperature0.3,timeout60,max_tokens4096,max_retries3)# 动态模型选择中间件wrap_model_calldefdynamic_select_model(request:ModelRequest,handle)-ModelResponse:# 根据用户VIP等级选择模型vip_levelrequest.runtime.context.get(vip_level,1)ifvip_level2:request.modeladvance_modelprint(使用高级模型qwen-max)else:request.modelbasic_modelprint(使用基础模型qwen-plus)returnhandle(request)工具定义# 天气查询工具输入验证classWeatherInput(BaseModel):location:strField(description城市名称多个城市用逗号分隔)units:Literal[celsius,fahrenheit]Field(defaultcelsius,description温度单位)include_forecast:boolField(defaultFalse,description是否包含5天预报)# 天气查询工具tool(name_or_callableweather_search,description查询天气支持多城市批量查询,args_schemaWeatherInput)defweather_search(runtime:ToolRuntime,location:str,units:strcelsius,include_forecast:boolFalse):# 获取用户IDuser_idruntime.context.get(user_id,unknown)# 记录查询日志stream_writerruntime.stream_writer stream_writer(f用户{user_id}正在查询以下城市天气{location})# 分割多个城市cities[city.strip()forcityinlocation.split(,)]results[]forcityincities:# 调用第三方天气API实际项目中替换为真实API调用# 此处使用模拟数据temprandom.randint(15,30)ifunitscelsiuselserandom.randint(59,86)weather晴ifrandom.random()0.3else多云resultf{city}{weather}{temp}°{units[0].upper()}# 如果需要包含预报ifinclude_forecast:forecast未来5天晴、晴、多云、晴、阴resultf\n{forecast}results.append(result)# 写入查询历史到记忆runtime.state[weather_history]runtime.state.get(weather_history,[])citiesreturn\n\n.join(results)# 用户偏好设置工具tool(name_or_callableset_preference,description设置用户偏好如温度单位)defset_preference(runtime:ToolRuntime,units:strcelsius,language:strzh):# 更新用户偏好runtime.state[user_preferences]{units:units,language:language}returnf偏好设置成功温度单位{units}语言{language}中间件配置# 敏感数据检测中间件sensitive_patterns[r[^]*pwd[^]*\s*:\s*[^]*,r[^]*password[^]*\s*:\s*[^]*,r[^]*token[^]*\s*:\s*[^]*,r[^]*apiKey[^]*\s*:\s*[^]*]combined_pattern|.join(sensitive_patterns)pii_middlewarePIIMiddleware(pii_typepersonal,strategymask,detectorcombined_pattern,apply_to_inputTrue,apply_to_outputTrue,apply_to_tool_resultsTrue)# 模型调用限制中间件call_limit_middlewareModelCallLimitMiddleware(thread_limit10,# 每个用户最多10次调用run_limit3,# 每次运行最多3次调用exit_behaviorend)# 对话摘要中间件summary_prompt 您是天气查询对话摘要助手需要总结用户与助手的对话内容。 格式要求 1. 记录用户查询的城市和对应的天气情况 2. 记录用户的偏好设置 3. 语言简洁不超过30字 summary_middlewareSummarizationMiddleware(modelbasic_model,max_tokens_before_summary200,messages_to_keep2,summary_promptsummary_prompt,summary_prefix对话摘要)# 人机交互中间件批量查询需要审批hitl_middlewareHumanInTheLoopMiddleware(interrupt_on{weather_search:lambdaargs:len(args.get(location,).split(,))3,set_preference:False},description_prefix以下操作需要审批请选择 approve/edit/reject)智能体创建与运行# 自定义StateclassWeatherAgentState(AgentState):user_preferences:dictField(default_factorydict)weather_history:listField(default_factorylist)# 数据库存储配置生产环境# db_uri postgresql://postgres:postgreslocalhost:5432/weather_agent?sslmodedisable# checkpointer PostgresSaver.from_conn_string(db_uri)# checkpointer.setup()# 内存存储配置开发环境checkpointerInMemorySaver()# 创建智能体agentcreate_agent(modelbasic_model,tools[weather_search,set_preference],state_schemaWeatherAgentState,middleware[dynamic_select_model,pii_middleware,call_limit_middleware,summary_middleware,hitl_middleware],checkpointercheckpointer,system_prompt你是一个专业的天气查询助手能够查询多个城市的实时天气和5天预报支持用户偏好设置。回答简洁明了使用用户指定的语言和温度单位。)# 运行智能体defrun_agent(user_query:str,user_context:dict):config{configurable:{thread_id:user_context.get(user_id,default)}}resultagent.invoke(input{messages:[{role:user,content:user_query}]},contextuser_context,configconfig)returnresult# 测试智能体if__name____main__:# 普通用户查询user_context{user_id:user_001,vip_level:1}print(普通用户查询)resultrun_agent(查询北京、上海、广州的天气包含5天预报,user_context)formsginresult[messages]:ifmsg.roleassistant:print(msg.content)# VIP用户查询print(\nVIP用户查询)vip_context{user_id:user_002,vip_level:2}resultrun_agent(设置温度单位为fahrenheit然后查询深圳、杭州、成都、重庆的天气,vip_context)formsginresult[messages]:ifmsg.roleassistant:print(msg.content)四功能测试与优化多城市批量查询支持同时查询多个城市的天气超过3个城市时触发人工审批。用户偏好记忆用户设置温度单位后后续查询自动使用该单位。敏感数据过滤如果用户输入包含密码、token等敏感信息会自动屏蔽。模型动态切换VIP用户自动使用高级模型支持更长的上下文和更精准的响应。对话历史管理长时间对话时自动生成摘要节省token消耗。通过这个实战案例我们可以看到LangChain 1.0智能体的强大灵活性和扩展性。开发者可以根据实际需求灵活组合五大核心组件构建出满足不同场景的智能体应用。四、总结与展望LangChain 1.0通过模型、工具、消息、中间件、短期记忆五大核心组件的模块化设计为智能体开发提供了灵活强大的框架。开发者可以像搭积木一样根据实际需求组合不同的组件快速构建出从简单问答到复杂任务处理的智能体应用。中间件作为LangChain 1.0的核心创新极大地扩展了智能体的能力边界支持动态模型选择、敏感数据过滤、人机交互等高级功能。短期记忆系统则使智能体具备了上下文感知能力支持复杂的多轮交互。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

协会网站建设方案苏州建设营销网站

国内口碑好的 90%羊毛10%牦牛绒混纺纱线供应商探秘在纺织行业中,牦牛绒混纺纱线凭借其独特的性能和价值,正逐渐成为市场的新宠。尤其是 90%羊毛 10%牦牛绒的混纺纱线,既融合了羊毛的坚韧与牦牛绒的柔软保暖,又具备良好的性价比&a…

张小明 2026/1/10 18:06:42 网站建设

娄底市城乡建设局网站网站设计流程是什么

ACL 2024 Findings Abstract 检索增强生成(RAG)是一种强大的技术,可将专有和私有数据引入语言模型,其中数据隐私是关键问题。尽管已有大量研究揭示了大语言模型(LLM)的隐私风险,但RAG技术可能重塑LLM生成的固有行为,带来目前尚未充分探索的新隐私问题。本文通过新颖的…

张小明 2026/1/10 18:06:44 网站建设

怎样学习做网站的编程一级a做爰网站免费

本数据集名为aided,版本为v2,于2024年1月3日通过qunshankj平台导出。该数据集包含288张图像,所有图像均已采用特定预处理技术,包括自动调整像素数据方向(并剥离EXIF方向信息)以及将图像拉伸调整为640640像素…

张小明 2026/1/10 18:06:45 网站建设

网站制作换下面友情连接个人公司网站怎么做

中小企业如何借助Dify实现AI能力快速内化? 在今天,几乎每一家中小企业都在思考同一个问题:我们该如何真正用上大模型? 不是停留在“试一下ChatGPT写文案”的层面,而是把AI深度融入业务流程——比如让客服自动解答90%的…

张小明 2026/1/10 18:06:45 网站建设

wordpress插件微信营销云优客seo排名公司

魔兽争霸III终极兼容性修复工具:全面解决现代系统适配问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸III作为经典即时战略游…

张小明 2026/1/10 18:06:47 网站建设

网站在线建设纯文本网站连接

你是否曾经遇到过这样的情况:正在专注工作时,可爱的BongoCat却固执地占据着屏幕空间,让你不得不在"萌宠陪伴"和"工作效率"之间艰难抉择?别担心,BongoCat的智能窗口管理功能就是为解决这一痛点而生…

张小明 2026/1/10 18:06:47 网站建设