你是否也曾困惑:为什么精心设计的 Prompt 仍让 Agent “纸上谈兵”?为何封装了强大 Skills 的系统却“有劲使不出”?答案藏在智能体的“思维”与“行动”之间。


凌晨三点,你第 7 次调试 Agent:
用户问“帮我订明天上海到北京最早航班”,Agent 却回复“根据我的知识库,航班信息需查询…"——它明明“知道”要查航班,却无法行动。
问题出在哪?不是 Prompt 不够长,也不是 Skills 没写好,而是你混淆了智能体的“大脑”与“手脚”

今天,我们拨开迷雾,用工程师的视角,彻底厘清 Agent 架构中两个常被混用的核心概念:Prompt 与 Skills


一、重新定义:它们究竟是什么?

🔍 Prompt:Agent 的“认知框架”

Prompt 不是简单的用户输入,而是引导大语言模型(LLM)进行推理、规划与表达的指令体系。它定义了 Agent 的角色、约束、思维链路与输出风格。

  • 典型组成
    • 系统 Prompt(System Prompt):设定身份与规则(如“你是一名严谨的财务助手”)
    • 任务 Prompt:描述当前目标与步骤
    • 上下文 Prompt:注入对话历史、环境状态
    • Few-shot 示例:提供输入-输出范例引导模型
  • 关键特性:纯文本、动态可调、依赖 LLM 理解力
  • 工程师视角:Prompt 是“软件需求文档”,告诉 LLM “要做什么”和“怎么做”,但不涉及“如何执行”。

🌰 示例:客服 Agent 的系统 Prompt 片段
“你负责解答用户关于订单的问题。若用户询问物流状态,请调用‘查询物流’技能,并将返回的 JSON 数据转化为口语化回复。禁止编造运单号。”

🛠️ Skills:Agent 的“行动肢体”

Skills(在 LangChain、Semantic Kernel 等框架中常称 Tools)是可被 Agent 调用的、具备具体功能的代码模块。它们让 Agent 突破 LLM 的文本生成边界,与真实世界交互。

  • 典型类型
    • 信息类:网络搜索、数据库查询、API 调用(天气、航班)
    • 操作类:文件读写、代码执行、邮件发送
    • 逻辑类:计算器、日期解析、格式转换
  • 关键特性:代码实现、原子化、需明确输入/输出契约
  • 工程师视角:Skills 是“微服务”,专注解决单一问题,且必须提供清晰的功能描述供 LLM 理解。

🌰 示例:search_web Skill 的伪代码描述

def search_web(query: str) -> str:
    """通过搜索引擎获取实时信息。输入:用户查询关键词;输出:摘要文本"""
    # 调用 SerpAPI,解析结果,返回前3条摘要

二、核心对比:思维与行动的鸿沟

维度 Prompt Skills
本质 文本指令(认知层) 可执行代码(行动层)
作用 引导 LLM “思考”与“决策” 执行 LLM “决定”的具体动作
依赖 LLM 的理解与推理能力 外部服务、函数库、错误处理机制
修改成本 低(调整文本即可迭代) 高(需开发、测试、部署)
失效表现 逻辑混乱、答非所问 调用失败、参数错误、超时
设计哲学 “告诉模型如何思考” “赋予模型做事的能力”

💡 一句话点睛
Prompt 决定 Agent 能不能想明白,Skills 决定 Agent 能不能做出来


三、协同实战:一次天气查询的完整旅程

用户输入:“周末带孩子去公园,需要查周六北京天气”

  1. Prompt 引导决策
    系统 Prompt 告诉 LLM:“若涉及天气查询,调用 get_weather Skill,参数需包含城市与日期”。LLM 识别意图,生成工具调用指令:{"tool": "get_weather", "params": {"city": "北京", "date": "周六"}}

  2. Skills 执行动作
    Agent 调用 get_weather Skill(内部封装和风天气 API),返回结构化数据:{"temp": "22℃", "condition": "晴", "uv": "中等"}

  3. Prompt 整合表达
    LLM 基于 Prompt 中的“回复风格要求”,将数据转化为自然语言:
    “周六北京晴,22℃,紫外线中等。适合带孩子户外活动,建议戴遮阳帽哦~"

闭环完成:Prompt 负责“理解-规划-表达”,Skills 负责“获取真实数据”。二者缺一,Agent 即失效。


四、避坑指南:开发者高频误区

误区 后果 优化建议
把复杂计算塞进 Prompt LLM 算错、幻觉频发 封装 calculator Skill,让代码做计算
Skills 描述模糊(如“处理数据”) LLM 误调用或参数错误 明确命名+参数示例:"csv_to_json(file_path: str)"
Prompt 未约束 Skill 调用逻辑 重复调用、逻辑死循环 在 Prompt 中写明:“仅当用户明确要求时调用支付 Skill”
忽略 Skills 的错误反馈 Agent 卡死或静默失败 Skill 返回标准化错误码,Prompt 引导 LLM 生成友好提示

五、进阶思考:不止于区分

理解区别只是起点。真正的工程艺术在于协同设计

  • Prompt 为 Skills 服务:在 Prompt 中清晰列出可用 Skills 及调用范式,降低 LLM 决策熵。
  • Skills 为 Prompt 减负:将易错逻辑(如日期解析、单位换算)封装为 Skill,让 Prompt 专注高层规划。
  • 动态演进:尝试“Prompt 自优化”(根据 Skill 执行结果反馈调整后续 Prompt);探索 Skill 编排引擎(如将“搜索→总结→绘图”串联为工作流)。

未来已来:AutoGen 的群聊 Agent、Microsoft AutoGen Studio 的可视化 Skill 编排,正将 Prompt 与 Skills 的协作推向新高度。真正的智能体,既要有清晰的“思维蓝图”,也要有可靠的“行动肌肉”


结语

Prompt 与 Skills,如同船长与水手:
船长(Prompt)制定航线、解读风向;水手(Skills)升帆摇橹、应对风浪。
没有船长,船会迷失;没有水手,船寸步难行。

下次当你调试 Agent 时,不妨自问:
❓ 是“思维”出了问题(Prompt 设计不足)?
❓ 还是“行动”受阻(Skills 缺失或描述不清)?

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐