2026/2/11 14:25:20
网站建设
项目流程
国外网站配色,县工商局 网站建设,公司网站建设具体实施方案,网站策划与制作答案是#xff1a;完全可以不用 SKILL.md#xff0c;仅靠 LangChain 的 Tool 机制 合理设计#xff0c;就能实现“渐进式调用”#xff08;Progressive Disclosure#xff09;的核心目标——即“只在需要时才暴露详细信息#xff0c;节省上下文#xff08;token#x…答案是完全可以不用SKILL.md仅靠 LangChain 的Tool机制 合理设计就能实现“渐进式调用”Progressive Disclosure的核心目标——即“只在需要时才暴露详细信息节省上下文token”。SKILL.md只是一种组织复杂流程文档的载体而“渐进式披露”的本质是一种策略与是否用 Markdown 文件无关。✅ 核心思想回顾什么是“渐进式披露”第一层轻量Agent 知道“有这个能力”但不知道细节。第二层按需当任务匹配时才加载/生成详细操作指南。这个策略可以用多种方式实现不依赖外部文件。 方法一用 “元工具”Meta-Tool动态返回说明推荐你创建一个特殊的 Tool叫get_tool_instructions它接收工具名返回该工具的详细使用说明。示例python编辑from langchain.tools import tool # 定义详细说明可放在代码中、数据库、配置文件等 TOOL_INSTRUCTIONS { pdf_fill_form: 填充 PDF 表单的完整步骤 1. 先调用 pdf_extract_fields 获取字段名 2. 构造字段字典如 {name: 张三, email: zexample.com} 3. 调用 pdf_fill_form(input, fields_str, output) 注意fields 必须是字符串形式的字典。 , analyze_financial_report: 财报分析流程 - 输入必须是 CSV 或 Excel 路径 - 先用 read_excel 读取 - 再调用 calculate_ratios - 最后用 generate_summary 生成结论 } tool def get_tool_instructions(tool_name: str) - str: 获取指定工具的详细使用说明 return TOOL_INSTRUCTIONS.get(tool_name, 未知工具)Agent 如何使用System Prompt 中只写简短描述text编辑可用工具 - pdf_fill_form: 填充 PDF 表单如需详细步骤请先调用 get_tool_instructions - analyze_financial_report: 分析财报当任务复杂时Agent 会先调用get_tool_instructions(pdf_fill_form)再执行。✅优点所有逻辑在代码中无需文件 I/O易于测试、版本控制、热更新不依赖read_file权限 方法二让 Tool 自身支持“帮助模式”某些 Tool 可以接受特殊参数如helpTrue来返回说明。python编辑tool def pdf_fill_form( input_pdf: str , fields: str , output_pdf: str , help: bool False ) - str: 填充 PDF 表单 if help: return 使用方法 - input_pdf: 源 PDF 路径 - fields: 字符串格式的字段字典 - output_pdf: 输出路径 示例{input_pdf: a.pdf, fields: {name: 李四}, output_pdf: b.pdf} # 正常执行逻辑...⚠️ 缺点污染函数签名且 LLM 可能忘记传helpTrue。 方法三用 Sub-Agent 实现“技能域隔离”为每个复杂技能创建一个专用子 Agent它的 System Prompt 就是“详细说明书”。python编辑# 主 Agent 只知道有个 pdf_agent 能处理 PDF # 当收到 PDF 任务主 Agent 把请求转发给 pdf_agent # pdf_agent 的 prompt 里已经包含了完整流程说明这样详细信息只在子 Agent 的上下文中出现主 Agent 的上下文保持干净。✅ 这是 LangChain Deep Agents / CrewAI 的常用模式。 方法四动态构造 Prompt高级在运行时根据用户输入关键词动态拼接详细说明到 System Prompt。python编辑def build_system_prompt(user_input: str) - str: base 你是一个助手。 if pdf in user_input.lower(): base \n\n【PDF 处理指南】\n1. 先提取字段...\n2. 再填充... elif 财报 in user_input.lower(): base \n\n【财报分析流程】... return base⚠️ 缺点无法利用 Tool Calling 的结构化优势LLM 可能忽略长文本。✅ 总结是否需要SKILL.md表格场景是否需要SKILL.md推荐方案简单工具如天气查询❌ 不需要直接写好description多步复杂流程❌ 不必须用get_tool_instructions工具团队协作 非程序员维护说明✅ 可考虑用SKILL.mdread_file安全受限环境禁用文件读取❌ 不能用用代码内嵌说明或 Sub-Agent追求最大 token 效率✅ 可选动态加载无论来自文件或变量 最佳实践建议优先将“技能说明”作为数据字符串管理在代码或配置中而非外部文件。只有当说明内容频繁变更、由非开发人员维护、或非常庞大时才考虑用SKILL.md。这样你既能享受渐进式披露的好处又保持系统的简洁性、可测试性和部署便利性。如果你希望我可以帮你把前面的SkillRegistry改造成纯内存版无文件依赖。需要吗