05_LLM 工程
01 什么是 Function Calling?⭐⭐⭐
Function Calling 是模型调用外部工具的一种机制,核心是模型全程只负责决策调用那些工具,工具由外部宿主程序负责执行。
首先,开发人员通过 JSON Schema 描述每个工具的名称、功能和参数类型,并将这些工具定义交给模型。模型根据用户的问题判断是否需要调用工具,如果需要,就输出结构化的工具调用 JSON,其中包含工具名称和调用参数。宿主程序接收到这个请求后,解析工具名称和参数,并找到对应的代码函数实际执行,例如调用 API 或查询数据库。工具执行完成后,宿主程序将结果返回给模型,模型再根据工具结果生成最终回答。
02 LLM 是如何学会工具调用的 ⭐⭐
第一阶段是 SFT(有监督微调 -- Supervised Fine-Tuning),解决的是模型"会不会调"的问题。核心思想就是用大量完整的工具调用对话数据做微调,通过这类数据,主要教会模型三件事:理解工具定义(JSON Schema 里的 name、parameters、description)、学会输出正确的工具调用请求对应的 JSON,同时熟悉工具调用的流程。
第二阶段是强化学习或偏好优化,解决的是模型“该不该调、什么时候调、调得对不对”的问题。
通常就是先去训练一个奖励模型,然后再去通过强化学习(PPO、GRPO)来更新模型参数,从而让模型学会:什么时候调用工具,以及如何调用得更好。
SFT 让模型学会“怎么调用工具”,强化学习或偏好优化让模型学会“什么时候调用工具,以及如何调用得更好”。
03 什么是 MCP ?⭐⭐⭐
MCP(Model Context Protocol)是 Anthropic 推出的开源协议,它标准化了 AI 应用如何获取外部服务提供的工具和资源。
核心思想: 以前每个 AI 应用要单独写适配器连接各种数据源,N 个应用 × M 个数据源 = N×M 个适配器。有了 MCP 之后,数据源只要写一个 MCP Server,所有支持 MCP 的应用都能连,变成了 N+M。
04 MCP 组成部分有哪些?
1. MCP Host(宿主应用)
就是想要使用 MCP Server 提供工具和资源的 AI 应用,比如 Claude Desktop、IDE(Cursor、Windsurf),或者自己搭建的智能体。它的职责是启动和管理所有 MCP Client。
2. MCP Client(客户端)
MCP Client 是 Host 内部的一个组件,负责和对应 MCP Server 建立连接、发送请求、接收响应。一个 Host 可以连接多个 MCP Server,通常每个 Client 对应一个 Server。
3. MCP Server(服务端)
MCP Server 是提供能力的一方,暴露三样东西给 Host:
- Tools:可执行的工具,例如查询数据库、调用天气 API
- Resources:可读取的数据,例如文件、文档和数据库记录
- Prompts:可复用的提示词模板
其中,Tools 类似 Function Calling,但 MCP 进一步统一了工具的发现、描述和调用流程。
4. Transport(传输层)
Transport 是 Client 和 Server 之间的通信方式,常见有:
- stdio:适合本地进程通信,由 Host 启动 MCP Server 子进程
- Streamable HTTP:适合远程通信,Client 通过 HTTP 连接独立部署的 Server
05 MCP 和 Function Calling 有什么区别?有没有实际使用过?
MCP 和 Function Calling 不是竞争关系,而是处于不同层次,可以立即为 mcp 是 function calling 的上游!
- Function Calling 是模型调用外部工具的一种机制,解决的是模型如何调用工具以及何时调用工具。
- MCP 解决的则是外部服务,怎么以标准化的方式把自己的 tools,Resources等资源暴露,从而让任何支持 MCP 的 AI 应用都能获取这些资源。
Function Calling 负责“模型怎么调用工具”,MCP 负责 "外部服务提供的工具等资源如何接入ai应用"
06 Skills 是什么?⭐⭐⭐
Agent Skill 是可复用的专业工作流,核心设计思想是渐进式披露——只在需要时才加载完整内容去提供特定领域的工作流和知识,节省 token。
一个 Skill 包含:
my-skill/
├── SKILL.md # 必填:元数据 + 核心指令(YAML frontmatter + Markdown 正文)
├── scripts/ # 可选:可执行脚本(.py, .sh 等)
├── references/ # 可选:参考文档(API 文档、规范、指南)
└── assets/ # 可选:静态资源(模板、图标、字体)
其中 SKILL.md 是唯一必需的文件,分为两部分:
- YAML frontmatter:包含
name和description,启动时加载(约 100 token),用于判断是否需要激活这个 Skill - Markdown 正文:包含具体的工作流程、规则和输出要求,匹配后才会读取
Skill 就是一个需要时才加载的专家工作流,用来让 Agent 更稳定地完成某类任务。
07 MCP 和 Agent Skill 的区别是什么?⭐⭐⭐
- MCP 解决的则是外部服务,怎么以标准化的方式把自己的 tools,resources 等资源暴露,从而让任何支持 MCP 的 AI 应用都能获取这些资源。
- Agent Skill 是可复用的专业工作流,规定完成某类任务时应该做什么、先后顺序是什么、遵循哪些规则以及最终输出什么格式。
MCP 负责 "外部服务提供的工具等资源如何接入ai应用", Skill 让 Agent 更稳定地把事情做好。
08 了解 SSE 和 WebSocket 吗?
SSE
SSE(Server-Sent Events)是一种基于 HTTP 的服务端推送技术。客户端通过 HTTP 发起请求,服务端保持连接,并以流的形式持续向客户端发送文本消息。每条消息通常以 data: 开头,并以\n\n结束。
WebSocket
WebSocket 是一种全双工通信协议。连接建立后,客户端和服务端都可以主动发送消息,支持文本和二进制数据。
09 什么是护栏技术?
护栏技术是位于用户或外部系统与大模型之间的安全控制层,用于检测和限制模型的输入、输出以及工具调用行为。
护栏技术属于模型之外的运行时防护机制。它不同于预训练或微调:模型训练负责提升模型本身的能力和行为倾向,护栏则负责在 llm 实际运行过程中进行额外检查。
10 什么是大模型的结构化输出?如何实现?⭐⭐⭐
结构化输出是指让 llm 按照预先规定的格式返回结果,例如 JSON、XML 或特定字段的对象,而不是生成任意自然语言。这些结构化字段更适合于下游任务。
- 提示词约束:在 Prompt 中要求模型按照指定格式输出,实现简单,但不能保证格式始终正确。
- JSON Mode:要求模型输出合法 JSON,但通常只能保证 JSON 格式正确,不一定完全符合业务字段要求。
- JSON Schema 约束:JSON Schema 不仅约束输出格式,还约束字段的结构和内容,例如字段类型、必填项以及取值范围。
OpenAI 的 Structured Outputs 就属于基于 Schema 的结构化输出能力,开发者提供 JSON Schema,模型生成的结果会尽量严格匹配该 Schema。
11. 什么是大模型网关?
了解过大模型网关框架,例如 LiteLLM、One API 等。大模型网关位于业务应用和各家模型 API 之间,让业务系统用同一种方式调用不同的大模型,并帮我们处理模型切换、失败重试、故障转移、限流和调用统计等。