skills的使用

一、何时使用skills

1.在有大量上下文时使用技能,减少系统提示中的标记数量。

2.利用技能将能力整合成更大的行动,提供超越单一工具描述的额外背景。

3.如果代理无法访问文件系统,可以使用工具。

二、使用注意

1.提示词尽可能详细描述何时使用

2.skills定义的功能尽可能明确

三、代码示例

复制代码
from deepagents import create_deep_agent
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import MemorySaver
from deepagents.backends.utils import create_file_data
import os
def llm():
    # 大模型配置不变
    api_key = os.getenv("ali_api_key")
    model = "qwen-plus"
    base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
    llm_model = ChatOpenAI(api_key=api_key, base_url=base_url, model=model)
    return llm_model
llm = llm()
checkpointer = MemorySaver()
# 替换:读取本地的 SKILL.md(而非远程下载)
# 定义本地文件路径
local_skill_path = "./skills/langgraph/SKILL.md"
# 读取文件内容
if os.path.exists(local_skill_path):
    with open(local_skill_path, "r", encoding="utf-8") as f:
        skill_content = f.read()  # 读取本地文件内容
else:
    raise FileNotFoundError(f"未找到本地文件:{local_skill_path}")
# 核心作用
# 虚拟文件系统路径(远程),随便定义,将真实文件内容临时存储到里面,可以实现解耦
# create_file_data格式转换
skills_files = {
    "/skills/langgraph/SKILL.md": create_file_data(skill_content)
}
# 最终是本地+虚拟,但相同的内容,虚拟优先级更高
# 更加高级的封装,甚至封装了langgraph
agent = create_deep_agent(
    model=llm,
    skills=["./skills/"], # 占位
    system_prompt="""
    你是一个严格的智能助手,必须遵守以下规则:
    当用户询问langgraph相关问题时,必须严格按照SKILL.md文档内容进行执行并回答,不要自己添加任何回答内容
    文件中的describe字段描述了该文档可以回答的问题,
    输出的结果应该是整理好的最终答案。
        """,
    checkpointer=checkpointer
)
result = agent.invoke(
    {
        "messages": [ {"role": "user", "content": "langgraph?",}],
        "files": skills_files # 虚拟的
    },config={"configurable": {"thread_id": "12345"}},
)
# 打印智能体的回答
print(result)
print(result["messages"][-1].content)
相关推荐
减瓦几秒前
Jackson 自定义反序列化器的类型不匹配陷阱
java·后端
在学了加油1 分钟前
Inception v1学习笔记
笔记·python·学习
light blue bird3 分钟前
工序路径主子表单工序组装图表组件
前端·数据库·信息可视化·.net·web端·razor page
我叫张小白。4 分钟前
基于Redis与FastAPI的分布式共享会话体系
数据库·redis·分布式·缓存·中间件·fastapi·依赖注入
qq_452396235 分钟前
第九篇:《Dockerfile 指令精讲(二):WORKDIR、ENV、ARG、EXPOSE》
java·开发语言·docker
Cthy_hy6 分钟前
Python算法竞赛:集合去重+字典映射 核心用法一站式整理
数据结构·python·算法
JAVA社区7 分钟前
Java高级全套教程(九)—— SpringCloud超详细实战详解
java·开发语言·后端·spring cloud·面试·职场和发展
java_cj7 分钟前
MySQL 8.0新特性详解:从隐藏索引到窗口函数全面解析
数据库·mysql·架构·开源
数据库安全7 分钟前
业务可用、数据可控:美创“动态脱敏+数据库透明加密“合规方案
数据库
索西引擎8 分钟前
【langchain 1.0】ChromaDB 原生 API 实战:为 LangChain 向量库打造管理工具集
python·ai·langchain