郑州网站建设项目,阿里巴巴国际贸易网站,软件开发的周期分几个阶段,舆情分析是个什么行业本文介绍了LangChain v1.0引入的Runtime核心概念#xff0c;解决了传统Tool调用面临的工程化难题。Runtime作为Agent调用的运行时上下文环境#xff0c;统一托管Context、Store和Stream Writer#xff0c;通过依赖注入机制使工具可访问运行时信息。ToolRuntime成为工具内部访…本文介绍了LangChain v1.0引入的Runtime核心概念解决了传统Tool调用面临的工程化难题。Runtime作为Agent调用的运行时上下文环境统一托管Context、Store和Stream Writer通过依赖注入机制使工具可访问运行时信息。ToolRuntime成为工具内部访问Runtime的标准方式使工具从独立函数转变为带运行时能力的执行单元极大增强了工程化能力和可测试性。01 前言在 LangChain v1.0 之前构建智能体主要是关注下面两个关键词Prompt Tool。定义几个工具函数交给 Agent 去选择和调用看起来就已经完成了一个“能干活的智能体”。但是真正使用时会发现 Tool 并不是一个纯粹的函数调用它依赖用户身份、会话状态、外部连接、日志与追踪甚至还要处理并发、重试和流式输出。这些“运行时信息”往往通过全局变量或层层参数传递的方式混杂在代码中Tool 也逐渐变得难以测试、难以复用。因此LangChain v1.0 引入了 Runtime 这一核心概念。将一次 Agent 执行视为一个完整的运行时上下文、存储、流式输出都被统一托管在 Runtime 中。Tool 只是其中被调度的一部分。V1.0.0版本清单https://github.com/langchain-ai/langchain/releases/tag/langchain%3D%3D1.0.002 Tool调用在上一篇关于LangChainV1.0概览中提到[LangChain系列从V1.0启航构建智能体]关于创建Agent的函数create_agent定义了智能体借助模型调用工具的流程如下所示下面从一个简单示例入手# pip install -U langchain_core langgraph # pip install -U langchain-deepseek # 工具调用 from langchain.agents import create_agent from langchain.tools import tool import os tool defadd(a: int, b: int) - str: add two num Args: a: one num b: another one num print(ftool call: run {a} {b}) returnf{a b} # 定义agent os.environ[DEEPSEEK_API_KEY] sk-... agent create_agent(deepseek-chat, system_prompt你是一个智能助手你的名字是DS, tools[add]) # 调用 response agent.invoke( {messages: [{role: user, content: 12等于多少}]} ) print(response)输出如下tool call: run 1 2 {messages: [HumanMessage(content12等于多少, additional_kwargs{}, response_metadata{}, ide4a15205-070e-425b-b9f8-566fb7604589), AIMessage(content我来帮你计算 12 的结果。, additional_kwargs{refusal: None}, response_metadata{token_usage: {completion_tokens: 67, prompt_tokens: 335, total_tokens: 402, completion_tokens_details: None, prompt_tokens_details: {audio_tokens: None, cached_tokens: 256}, prompt_cache_hit_tokens: 256, prompt_cache_miss_tokens: 79}, model_provider: deepseek, model_name: deepseek-chat, system_fingerprint: fp_eaab8d114b_prod0820_fp8_kvcache, id: fb1ba6b8-2aa8-40a6-9e04-1200b2bf64b9, finish_reason: tool_calls, logprobs: None}, idlc_run--019b3722-9d2a-7da0-95a7-132527b4a373-0, tool_calls[{name: add, args: {a: 1, b: 2}, id: call_00_bt4RMGTZPKfhMOddxIYPseHm, type: tool_call}], usage_metadata{input_tokens: 335, output_tokens: 67, total_tokens: 402, input_token_details: {cache_read: 256}, output_token_details: {}}), ToolMessage(content3, nameadd, id9e8057f8-81c6-442e-a250-28a43636fce0, tool_call_idcall_00_bt4RMGTZPKfhMOddxIYPseHm), AIMessage(content1 2 3, additional_kwargs{refusal: None}, response_metadata{token_usage: {completion_tokens: 7, prompt_tokens: 420, total_tokens: 427, completion_tokens_details: None, prompt_tokens_details: {audio_tokens: None, cached_tokens: 384}, prompt_cache_hit_tokens: 384, prompt_cache_miss_tokens: 36}, model_provider: deepseek, model_name: deepseek-chat, system_fingerprint: fp_eaab8d114b_prod0820_fp8_kvcache, id: 343db95a-b2db-4f21-87d6-afab650b7de3, finish_reason: stop, logprobs: None}, idlc_run--019b3722-ac19-7323-ac93-0df73e0224fc-0, usage_metadata{input_tokens: 420, output_tokens: 7, total_tokens: 427, input_token_details: {cache_read: 384}, output_token_details: {}})]}示例定义了一个简单的add函数使用**tool修饰然后通过create_agent**创建Agent实例指定模型deepseek-chatcreate_agent会通过模型名找到模型服务商指定工具为add。最后调用invoke传入用户角色类型的消息并获得结果。现在假设一个场景在Tool调用时需要获取用户id做业务处理。可以考虑使用全局变量可这种方式并不利于Tool的维护和测试。LangChain使用Runtime处理这种场景就像在Web系统中的Request一样在一次 Agent 调用中Runtime贯穿和管理所有运行状态/依赖/环境信息。03 Runtime运行时LangChain Runtime可以用于Tool和Middleware通过Agent进行自动注入。Runtime包括三部分功能和内容Context上下文静态依赖与标签信息例如 user_id、数据库连接、配置等。Store存储用于存储长期记忆。Stream Writer流写入器用于工具执行实时输出或进度回写。在上面示例的基础上引入Runtimefrom langchain.agents import create_agent, AgentState from langchain.tools import tool, ToolRuntime from dataclasses import dataclass import os from langchain.agents.middleware import before_model from langgraph.runtime import Runtime dataclass classContext: user_id: str tool defadd(a: int, b: int, runtime: ToolRuntime[Context]) - str: add two num Args: runtime a: one num b: another one num user_id runtime.context.user_id ifnot user_id: return无权查询 print(ftool call: run {a} {b}, {runtime}) returnf{a b} # Before model hook before_model deflog_before_model(state: AgentState, runtime: Runtime[Context]) - dict | None: print(fProcessing request for user: {runtime.context.user_id}) returnNone # 定义agent os.environ[DEEPSEEK_API_KEY] sk-... agent create_agent(deepseek-chat, tools[add], middleware[log_before_model], context_schemaContext) # 调用 response agent.invoke( {messages: [{role: user, content: 12等于多少}]}, contextContext(user_id001) ) print(response)最后调用时传递user_id,则正常输出计算结果如果没有传递user_id则最后的消息如下AIMessage(content看起来我无法直接使用计算工具来获取结果。不过根据基本的数学知识12 等于 3。, ...)示例定义一个上下文类Context和用户id属性在工具add中声明ToolRuntime参数在工具内部通过其获取Context的用户id如果用户id不存在则无权继续后续的逻辑。另外使用**before_model**定义了中间件表示模型调用前回调执行该中间件函数并注入Runtime。最后在触发agent执行时通过context传入用户id。这里只演示了Runtime部分使用方式。关于Tool注入的ToolRuntime与Middleware注入的Runtime的区别Runtime 并不是一个“统一暴露的上下文对象”而是根据执行单元的不同被拆分成不同的运行时视角它们并无继承关系Runtime关注的是整体流程Middleware 看到的是“流程Runtime”。ToolRuntime关注的是当前次的Tool调用Tool 看到的是“调用Runtime”。Runtime包括属性context、store、stream_writer、previousToolRuntime包括属性state、context同Runtime、config、stream_writer同Runtime、tool_call_id、store同Runtime# ToolRuntime借助runtime的实例化 tool_runtime ToolRuntime( statestate, tool_call_idcall[id], configcfg, contextruntime.context, storeruntime.store, stream_writerruntime.stream_writer, )04 总结Runtime是Agent调用的运行时上下文环境它把 Context/Store/Stream 全部托管起来。• 通过依赖注入机制工具与中间件可以访问运行时信息而不污染模型输入。• ToolRuntime是在工具内部访问“Runtime”的标准方式。Runtime机制使得工具不再只是“独立函数”而是带运行时能力的执行单元极大增强了工程化能力和可测试性。最后我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念通过动态追踪大模型开发、数据标注伦理等前沿技术趋势构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能 突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**