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

LangChain使用deep agent并且加载SKILL

摘要

去年在字节TRAE线下活动的一句提问,让我捕捉到SKILLS这个大模型新范式的苗头——它不是简单的工具调用,而是能让AI实现“按需加载能力”的渐进式革命。从CLAUDE率先提出,到字节TRAE的快速跟进,再到LangChain从“曲线适配”到Deep Agent原生支持,这半年,我完整见证了一个AI技术概念从圈内热议到全面落地的全过程,也读懂了技能模块化背后的行业趋势。

从TRAE线下到LangChain落地,我见证SKILLS从概念到普及的半年

最早接触SKILLS这个概念,是在2025年去字节参加TRAE线下活动的时候。活动现场有观众提问,说CLAUDE新推出的SKILLS机制特别实用,想问字节的TRAE什么时候会跟进这项功能。听到这个问题的瞬间,我心里就有了明确的预感:字节作为AI领域的风向标,大概率会快速布局跟进,而在智能体框架领域深耕的LangChain,必然也不会缺席这场技术浪潮。

今年早些时候,SKILLS在大模型圈彻底火了起来,成为大家热议的核心话题,但LangChain圈子里却依旧相对平静,没有掀起太多波澜。出于好奇,我特意去搜索“LangChain skills”,发现在B站上已经有了相关的教学视频,其核心思路是借助中间件(middleware)的拦截机制,来实现SKILLS的渐进式披露——这种方式更像是一种“曲线适配”,能勉强达成效果,却能明显感觉到,当时LangChain还未实现对SKILLS的原生完美支持。即便去LangChain官方网站搜索相关话题,得到的指引也依然是将SKILL拆分为Agent Tools来调用,与CLAUDE原生SKILLS的模块化、可复用特性相去甚远。

这种“慢半拍”的状态并没有持续太久,大概在今年春节前后,我身边突然涌现出大量跟进SKILLS的产品落地案例,其中就包括字节的TRAE,还有各种主打智能体功能的“龙虾”类产品,肉眼可见地感受到这项技术正在加速渗透。而就在我以为LangChain还会再酝酿一段时间时,惊喜地发现,LangChain Deep Agent已经悄悄上线了SKILLS原生支持功能,至此,从概念提出到主流平台全面落地,SKILLS终于完成了它的阶段性普及。

直接上代码

可以看到在早先create agent的基础之上,可以指定skills的目录了:

import os
from dotenv import load_dotenv
from deepagents import create_deep_agent
from deepagents.backends import LocalShellBackend
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import InMemorySaverload_dotenv()model = ChatOpenAI(api_key=os.getenv("OPENAI_API_KEY"),model_name="Doubao-Seed-2.0-pro",  base_url="https://ark.cn-beijing.volces.com/api/coding/v3",temperature=0
)agent = create_deep_agent(model=model,backend=LocalShellBackend(root_dir=".",virtual_mode=True),skills=["./skills"],checkpointer=InMemorySaver(),system_prompt="你是一个智能助手,如果查询的结果是ID,那么就根据ID查询对应的名称。"
)while True:input_text=input("User message: ")if input_text.lower() in ("exit"):breakresults=agent.invoke({"messages":[{"role": "user", "content": input_text}]},config={"configurable": {"thread_id": "1"}})for message in results["messages"]:print(message.pretty_print())

细节和心得

在实际实操过程中,我也积累了一些细节心得,在这里和大家分享一下。

LLM层我选用的是豆包大模型,得益于它兼容OpenAI协议的特性,我直接采用了ChatOpenAI的调用方法,省去了额外适配的麻烦。
不过这里有个小坑需要提醒大家:如果在TRAE或者豆包平台内直接生成代码,系统大概率会提示导入豆包专属库,但后续让TRAE自主运行时,常会出现库找不到的问题。有意思的是,TRAE会自动检索豆包的官方文档,自行调整代码,最终切换到ChatOpenAI的调用方式,算是一个比较智能的适配小细节。
另外需要特别留意,由于我使用的是火山引擎的Coding Plan(火山引擎作为字节跳动旗下的云和AI服务平台,能提供稳定的大模型服务支持),因此调用时的base_url和默认配置会有所不同,具体可参考火山引擎的官方配置指引。
再说说Deep Agent的实操细节,它的写法和之前Create Agent的方式大同小异,上手难度不高,最实用的一点是,创建Deep Agent时可以直接指定SKILLS所在的目录。按照Deep Agents的设计逻辑,SKILL本质上就是包含SKILL.md文件的文件夹及相关脚本,只要将各类SKILL(包括从OpenClaw获取的SKILL)放入指定目录,就能被系统自动识别。但有一个关键细节需要重点注意:SKILL的文件夹名称必须是小写,目前Deep Agent暂不支持大写命名,否则会无法识别,这也是我实操中踩过的一个小坑。

还有一个必看要点:Deep Agent中的LocalShellBackend是加载本地SKILL的核心,没有它就无法正常调用本地的各类技能,这和Deep Agents依赖后端实现本地文件访问、技能加载的底层逻辑密切相关。另外,我通过checkpointer为智能体添加了记忆功能,Deep Agents本身封装了多种记忆保存方式,这次为了演示便捷,我选用了最基础的内存记忆。在智能体invoke调用时,需要指定config参数来标识不同的会话,我这里为了简化演示,直接设置为“1”,实际应用中可根据会话需求灵活调整。

环境配置方面也有一些差异需要注意:我使用的是MacOS系统,因此没有在Agent中额外指定Python环境变量;但如果是Windows系统,就必须手动配置,否则会影响技能的正常运行。关于Windows系统的具体配置方法,大家可以参考B站上的相关教学视频:【19-能执行 python 代码的技能-哔哩哔哩】https://b23.tv/aDDuAz7,这个视频属于“强哥学编程”的Deep Agents零基础教程合集,内容细致,小白也能轻松看懂。

跟其它智能体的对比

很多朋友可能会好奇,Deep Agent和OpenClaw这类“龙虾”产品到底有什么区别?结合我的实操体验,我用一个形象的比喻和大家说明:它们本质上都是Agent智能体,但OpenClaw就像一只成熟的龙虾,而Deep Agent则更像是一个虾卵——前者是开箱即用的成品,后者则需要我们自己打磨、配置,才能发挥出相应的功能,这也契合了Deep Agents作为“智能体脚手架”、需要开发者自行配置优化的定位。

我用QClaw(一款“龙虾”类产品)做了个直观测试:将本地系统接入QClaw后,我询问它“今天我系统里都有哪些课程”,QClaw会自动调用已配置的SKILL,通过接口获取学生ID和教练ID,之后还会自动关联人员表,将ID转换成对应的人名,整个过程无需手动干预。但同样的SKILL放到Deep Agent中,它只会直接返回原始的学生ID和教练ID,不会进行后续的转换操作。后来我在创建Deep Agent时添加了专属系统提示词,才实现了和QClaw类似的效果。这也恰恰体现了OpenClaw、Claude这类产品的优势——它们在基础Agent框架之上,额外做了大量的优化和封装工作,让用户无需关注底层细节,就能实现更便捷的操作,这也是它们能被更多小白用户接受的核心原因。

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

相关文章:

  • 完整迁移指南:SillyTavern高效升级与数据安全保护
  • 避开这些坑!实测腾讯混元3D(Hunyuan3D-1)在Windows本地部署的5个常见问题与解决
  • ROFL-Player终极解析:英雄联盟回放文件专业分析工具完全指南
  • 2026年geo优化推荐企业哪个口碑好,热门品牌大揭秘 - myqiye
  • 我的模型在测试集上翻车了?可能是数据增强的‘幻觉’在捣鬼(避坑指南)
  • 抖音无水印下载终极指南:douyin-downloader免费批量下载工具深度解析
  • 黄仁勋可能开始焦虑了
  • 智契通项目开发周记(第二周):数据库建模与代码生成器集成
  • OpenClaw 安全机制全景解析
  • YOLOv5特征融合实战:用PANet搞定多尺度目标检测(以无人机图像为例)
  • 别再乱用正态分布初始化了!PyTorch中nn.init.trunc_normal_()的保姆级教程与实战避坑
  • 探讨2026年AI搜索优化公司怎么收费,了解费用选高性价比企业 - 工业设备
  • golang如何编写DNS查询工具_golang DNS查询工具编写大全
  • 支持小程序+H5的CRM源码来了!帮企CRM基于ThinkPHP+Uniapp,开源无加密,适合二次开发
  • 净菜配送选择指南,讲讲哪家公司更值得选? - mypinpai
  • 从理论到调参:深入理解Toad中决策树与卡方分箱的差异与选择
  • 告别“马赛克”分割:用DeepLab-v3+和Xception架构搞定Cityscapes街景语义分割(附PyTorch代码)
  • D2DX终极指南:5步让暗黑破坏神2在现代电脑上焕然一新的完整教程
  • 别再只用BERT了!用sentence-transformers库的SBERT,5分钟搞定文本相似度匹配
  • ROFL-Player终极指南:免费英雄联盟回放分析工具完整教程
  • 英雄联盟智能助手:从繁琐操作到流畅体验的自动化革命
  • 如何选择适合自己的跨境独立站平台、2026七大主流选择推荐 - 速递信息
  • RexUniNLU零样本NLP系统参数详解:temperature/top_k对输出影响分析
  • Python测试框架如何处理重载_在pytest中使用mocker控制调用
  • CardEditor:桌游设计师的批处理卡牌生成神器,让创意批量落地
  • 5分钟彻底解放你的音乐库:Unlock Music终极解密指南
  • 如何快速搭建智能QQ机器人:Go-CQHTTP新手入门完全指南
  • AirPodsDesktop终极指南:如何在Windows上完整体验苹果耳机的原生功能
  • AirPodsDesktop技术评测:填补Windows蓝牙音频生态空白的技术实现方案
  • 性价比高的砌筑砂浆厂怎么选,盘点附近厂家直销与隔音砂浆厂排名 - 工业品网