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

LangChain v1.0 Runtime深度解析:构建可测试、可复用的大模型智能体

本文介绍了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.0

02 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(f"tool 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": "1+2等于多少"}]} ) print(response)

输出如下:

tool call: run 1 + 2 {'messages': [HumanMessage(content='1+2等于多少', additional_kwargs={}, response_metadata={}, id='e4a15205-070e-425b-b9f8-566fb7604589'), AIMessage(content='我来帮你计算 1+2 的结果。', 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}, id='lc_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(content='3', name='add', id='9e8057f8-81c6-442e-a250-28a43636fce0', tool_call_id='call_00_bt4RMGTZPKfhMOddxIYPseHm'), AIMessage(content='1 + 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}, id='lc_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-chat",create_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(流写入器)

    用于工具执行实时输出或进度回写。

在上面示例的基础上,引入Runtime:

from 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(f"tool call: run {a} + {b}, {runtime}") returnf"{a + b}" # Before model hook @before_model deflog_before_model(state: AgentState, runtime: Runtime[Context]) -> dict | None: print(f"Processing 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_schema=Context) # 调用 response = agent.invoke( {"messages": [{"role": "user", "content": "1+2等于多少"}]}, context=Context(user_id="001") ) print(response)

最后调用时传递user_id,则正常输出计算结果;如果没有传递user_id,则最后的消息如下:

AIMessage(content='看起来我无法直接使用计算工具来获取结果。不过根据基本的数学知识,1+2 等于 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、previous

  • ToolRuntime

    包括属性state、context(同Runtime)、config、stream_writer(同Runtime)、tool_call_id、store(同Runtime)

# ToolRuntime借助runtime的实例化 tool_runtime = ToolRuntime( state=state, tool_call_id=call["id"], config=cfg, context=runtime.context, store=runtime.store, stream_writer=runtime.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%免费】🆓**

http://www.cnnetsun.cn/news/167761.html

相关文章:

  • 信息与关系:涌现的三大核心原则
  • c++狼人杀
  • 50天50个小项目 (React19 + Tailwindcss V4) ✨ | DrawingApp(画板组件)
  • 使用自定义注解校验请求参数
  • 敢不敢用一年时间读完这12本书,模型入门必看的12本书!建议收藏!!
  • 对比:Qwen-VL与传统的CNN在图像处理应用
  • 【硬件设计】DC12V输入的防护+滤波设计
  • 快!太快了!一键生成!一键导出!微信自动统计数据报表来了!
  • 智能决策系统日志系统设计:AI架构师的调试与分析技巧
  • 力扣 11.盛最多水的容器 简单的双指针算法 题解
  • 深度学习驱动的论文降重工具有效规避查重风险,智能改写段落
  • 温度传感器PT1000与NTC10K介绍
  • 震惊!这家酶制剂供应商竟让行业炸锅
  • 数学建模与排版无忧?这10个AI论文工具精准解决复现难题
  • AI对打工人的三个影响
  • 小程序/APP接入分账系统:4大核心注意事项,避开合规与技术坑
  • 靠谱的厦门考研公司哪个好
  • 二叉搜索树的最近公共祖先:别再蛮力了,用规则思维找“血缘关系”
  • 推荐6个AI论文网站,提供降重与自然改写功能避免标红
  • 智能学术支持:6个AI论文平台解析,自动润色让内容更专业
  • 从手动测试到自动化测试的转型之路:策略、挑战与未来
  • 大数据工程师必看:批处理性能优化的10个黄金法则
  • 2026年AI全面爆发!AI原生、物理AI、多模态与世界模型的革命性变革
  • 【扣子Coze教程】文案一键仿写+飞书自动发布
  • 提示词工程精华总结:掌握ICIO框架与五大核心要素,AI应用效率翻倍,建议收藏!
  • 还在手动选品?RPA+AI生成希音爆款推荐,效率提升100倍![特殊字符]
  • 8个AI论文工具,自考学生轻松搞定毕业论文!
  • 8个降AI率工具推荐,继续教育学生必备
  • CTFer常见高频工具清单
  • 痞子衡嵌入式:16MB以上NOR Flash地址模式切换会造成软复位后i.MXRT无法正常启动