:Function Call 和 Skills,到底差在哪?

发布时间:2026/7/7 2:40:38
:Function Call 和 Skills,到底差在哪? unction call 的本质是让模型以工程化的方式调用某个具体工具或函数以前模型想调用外部能力通常只能口头表达——比如它输出一句“请帮我查询北京天气”。对机器来说器不知道这是普通文本还是一个真正的调用指令而 function call 出现之后事情就不一样了。开发者会提前告诉模型这里有一个函数叫get_weather它需要参数比如city参数类型是什么返回结果可能是什么结构于是模型在需要时就不再输出一大段自然语言而是输出一份结构化调用意图比如{ name: get_weather, arguments: { city: Beijing } }这时候模型就知道不是聊天是要真调用工具了function call 解决什么问题它主要解决的是1模型如何准确发起一次工具调用明确告诉系统调用哪个函数、传哪些参数2模型输出如何变成机器可执行的动作自然语言适合人看不适合程序稳定处理结构化调用才方便程序使用3减少非结构化输出带来的歧义参数格式统一了系统更容易校验、重试、记录日志function call 的典型特征1粒度小通常代表一个具体动作比如搜网页、读文件、查天气、写数据库2接口清晰强调参数 schema、字段类型、必填项、返回值结构3偏执行层关注的是怎么把这个动作调用出来说白了function call 更像是给模型装上一个标准化插口。模型通过这个插口去调用外部世界的具体能力skills我们之前讨论过skills如果说 function call 解决的是怎么调用一个工具那 skills 则是解决问题的方法、标准做法、固定流程和能力包它本质上是在告诉模型什么时候该接这个活接到这个活之后先干什么先查哪些资料哪些步骤不能省哪些坑不要踩最终产出应该长什么样skills 解决什么问题它主要解决的是1面对复杂任务时模型怎么少走弯路不是让模型临场 freestyle而是给它一套更稳的执行章法2一个任务做多了总会形成套路。skills 的意义就是把这些套路变成可复用的说明书3让结果更稳定同样一个任务有经验的人做出来通常更靠谱。skills 就是在给模型补这个经验层Skills 的典型特征1粒度更大它通常对应一类任务而不是单个动作2包含方法论它不只调用什么工具还会遵循步骤先后顺序是什么、质量标准是什么核心区别粒度不同function call 往往对应一次具体能力调用比如read_filesearch_webwrite_docsend_messagefunction call 是原子动作skills对应一类任务的完整做法比如检查线上事故总结 URL诊断 node 配对失败skills 是复合能力关注点不同function call调哪个函数、传什么参数、参数是否合法、返回值怎么接它更像接口设计问题skills任务开始需要干什么、哪些信息必须先拿到、中间怎么组织步骤、最终结果怎样它更像经验与流程设计问题表达形式不同function callfunction call 通常表现为一份结构化接口定义。比如{ name: web_search, description: Search the web using DuckDuckGo, parameters: { type: object, properties: { query: {type: string}, count: {type: integer} }, required: [query, count] } }做技术的看到这个应该是非常亲切的一看就懂就是告诉模型怎么按格式调用skills现在常见的形式为使用markdown格式通常包含自然语言、结构化接口、执行层部分自然语言层通常用于与llm交流结构化接口通常用来 获取固定格式的数据执行层通常用来决定该skill是用来干嘛的my-skill/ ├── skill.md # 描述 参数定义 ├── handler.py # 执行逻辑 └── requirements.txt # 依赖可选实际场景在排查线上故障这件事里function call 可以提供很多底层能力比如读应用日志、网关日志、容器日志、服务配置文件查 CPU、内存、RT、QPS、错误率、线程数等监控数据查历史故障记录、排障文档、变更说明、已知问题列表调用诊断接口、查看发布记录、触发一次有限范围的健康检查而 skills 在这个场景里负责的就不是看哪份日志了而是先确认故障范围到底是单机异常、单服务异常还是整条链路出了问题