腾讯云AI Skills实战:Agent开发与LiteLLM Proxy最佳实践
2026/9/6 13:27:14 网站建设 项目流程

最近团队里好几个项目都堆到了 Agent 开发上,结果越做越发现,大家遇到的问题出奇一致:模型调用散得到处都是、工具函数写了又拆拆了又写、每次换个模型就要改一堆代码、部署上线更是全凭个人信仰。就在这个节骨眼上,我把腾讯云的 AI Skills 整个翻了一遍,又把 LiteLLM Proxy、Agent 编排、状态管理这些实践理了个透,总算是从“能用”走到了“好用”。这篇就把我整套的折腾过程和沉淀下来的 Best Practice 一次性讲清楚,想到哪写到哪,重点是让你拿去就能直接用。

这不是一篇概念科普,而是真正在腾讯云上做 Agent 项目的实操复盘。适合正在做 Agent 开发、想捋清 Skills 怎么写、想知道 Agent 和 Skill 边界在哪、以及被模型切换和工具管理搞得焦头烂额的朋友。我会从设计思路讲到部署上线,再给出一批日常踩坑的排查清单,篇幅不短,但信息密度对得起你的时间。

1. 内容整体设计与思路拆解:为什么 AI Skills 是 Agent 抓手

1.1 Skills 与 Agent 到底什么关系

先说一个很多人没绕明白的问题:Skill 和 Agent 到底什么关系?这俩词现在被用得很滥,厂商各说各话,实际干活的人容易懵。我自己给出的一个比较扎实的划分是:Agent 是“决策和执行的主体”,Skill 是“Agent 可调用的最小能力单元”。

换句话说,Agent 决定“接下来该做什么”,Skill 负责“把某件事真正做成”。没有 Skills 的 Agent 更像一个只会聊天的空壳,没有 Agent 的 Skills 只是一堆散装函数。腾讯云 AI Skills 这套东西,本质上是把“能力”做成了一种标准化的、可以被 Agent 动态发现和调用的服务单元。

我见过不少团队把几十个工具函数直接塞进 system prompt,再靠模型硬猜该调用哪个。这种搞法在你只有三五个函数的时候还能凑合,一旦工具数量超过二十个,模型的调用准确率就会肉眼可见地崩。AI Skills 最直接的价值,就是给这些能力套上了一层结构化的壳,让 Agent 的调度从“靠感觉”变成了“靠协议”。

1.2 为什么选择腾讯云 AI Skills 而不是自建工具层

自建工具层不是不行,我自己早期也写过一套基于 FastAPI 的工具注册中心,后来之所以迁到腾讯云 AI Skills,核心是算了一笔时间账。

自建方案一开始很嗨,什么都能定,但维护成本会逐渐失控。每加一个工具,要写接口、写鉴权、写参数校验、写错误码、写文档,Agent 那边还得同步更新 function calling 的 schema。两个人开发还好,五个人以上的团队,光协调工具协议就能占掉三分之一的需求沟通时间。AI Skills 相当于把“工具定义、参数声明、调用鉴权、版本管理”这些通用问题,一次性通过平台能力解决了,开发者只需要聚焦在“这个 Skill 的业务逻辑是什么”上。

另外一点,腾讯云的 Skills 提供了相对完整的可观测和鉴权链路。Agent 每次调用 Skill 都会有记录,出问题能直接查到是哪一步、哪个参数、哪个模型做的决策。这个对生产环境排障来说不是加分项,是刚需。

2. 环境与资源准备:先把地基打好

2.1 服务器选型与端口规划

在腾讯云上做 Agent 项目,第一步是搞定跑服务的资源。我个人的建议是别一上来就上多节点集群,绝大多数 Agent 项目在原型阶段,一台 4C8G 的轻量应用服务器或者标准型 CVM 就完全够用。真正到了并发量上来之后,再考虑把模型网关和业务服务拆开部署。

端口规划这件事上,很多初学者容易翻车。不要图省事把安全组全部放通,那等于把服务器裸奔在公网上。我的习惯是只放行必需的端口:22 用于 SSH 管理(建议改成非标准端口并开启密钥登录)、80/443 用于 HTTP/HTTPS 访问、以及你业务服务实际监听的端口。腾讯云控制台里的安全组规则,就是干这个的,建议把变更安全组当代码一样重视,每次改动都要知道自己在放行什么。

2.2 域名申请与 HTTPS 配置

现在做 Agent 服务,HTTPS 基本是硬性要求,尤其是你要把服务暴露给微信小程序、企业微信机器人或者其他第三方平台回调时。腾讯云怎么申请二级域名这件事,流程倒不复杂:先有一个已备案的一级域名,然后在 DNS 解析里加一条 A 记录,把类似 agent-api.yourdomain.com 这样的二级域名指向你的服务器 IP。

申请完成后,建议直接申请一张 SSL 证书,腾讯云有免费的 DV 证书,够用。配置 HTTPS 时我踩过一个坑:证书申请后需要等几分钟签发,签下来之后记得在 Nginx 里同时配置 HTTP 跳转 HTTPS,否则用户或者 Agent 用 http 访问时还是会遇到各种诡异的连接问题。另外,如果服务要被人频繁调用,可以顺手把 OCSP Stapling 打开,能减少 TLS 握手耗时,体感明显。

2.3 LiteLLM Proxy:模型网关的最佳实践

做 Agent 开发不可能只用一家模型。今天觉得 GPT-4o 好,明天想试试 Claude,后头可能还要接国产模型,普通开发者又不可能全部直连,这时候 LiteLLM Proxy 就派上了用场。

LiteLLM Proxy 简单说就是一个统一模型网关,把不同厂商的模型 API 统一成一个 OpenAI 兼容格式的入口。你在 Agent 代码里只需要配一个 base_url,指向 LiteLLM Proxy,就不用关心背后接的是哪家模型。

部署 LiteLLM Proxy 时,我强烈建议你用 Docker 跑,镜像名叫ghcr.io/berriai/litellm:main-stable。配置网关时,把各家模型的 API Key 统一放在环境变量或单独的 yaml 配置里,然后用/model/info接口检查各模型是否可用。一个关键参数是max_retries,默认的重试机制在模型限流时有一定作用,但我实测下来会把它调到 3,配合request_timeout设置为 60 秒,能覆盖大多数异常场景。

另外,一定把 LiteLLM Proxy 的日志开着。它会把每次请求的模型、token 消耗、延迟都记录下来,这些数据在后期做模型选型和成本分析时是宝贵的素材。我托管一个 Agent 项目,一个月后一查日志,发现某条链路 60% 的请求都打在一个较贵的模型上,果断降级换成便宜模型,成本直接砍掉一半。

3. Skills 的编写与核心环节实现

3.1 Skills 的标准结构与核心要素

腾讯云 AI Skills 的编写,核心是掌握一套声明式的规则。一个标准的 Skill,通常由以下几部分构成: Skill 的标识与名称、功能描述、参数定义、执行逻辑、输入输出协议。

功能描述这部分,我建议反向写,先想清楚“Agent 在什么场景下会调用这个 Skill”。比如你做的是一个电商客服 Agent,“查订单物流”这个 Skill 的描述,应该写“当用户询问包裹到哪里了、快递进度、物流轨迹时调用”,而不是干巴巴写“物流查询接口”。这一步非常重要,因为 Agent 就是靠描述来匹配技能的,描述写得抽象,模型匹配精度就会下降。

参数定义也有讲究。不要把所有参数都定义成必填,这会让 Agent 在面对模糊输入时调用失败。靠谱的做法是把必要参数设为必填,可选参数尽量给默认值。比如“查物流”这个 Skill,订单号可能没有,那就允许传手机号或者收货人姓名作为候选识别方式。模型会在上下文充分时自动补齐参数,你的参数设计给模型留的容错空间越大,实际可用性就越高。

3.2 手把手:一个典型 Skill 的创建过程

我先拿一个实际项目里的例子来讲,需求是“查实时天气”。这个 Skill 要给 Agent 用,Agent 根据用户的提问判断是否触发。

第一步,确定 Skill 的输入。用户只说“今天上海热吗”,那模型要能解析出城市是上海,至于要不要具体时间,可以通过默认值处理,默认取当天。

第二步,写功能描述,给 Agent 看的,我写的是:“当用户询问天气、温度、降雨概率、空气质量、是否适宜出行时使用。支持国内主要城市及区县。输入城市名时需尽量补全省市级别地名,避免歧义。”

第三步,接一个免费天气 API,数据源返回 JSON,解析出温度、天气现象、风力这些关键字段。

第四步,定义输出格式,让 Agent 可读。我一般会返回结构化的 JSON,而不是一大段文本。这样好处是,Agent 拿到 JSON 后,可以结合自己的语言组织能力,生成一段自然、贴合的回复。

Skill 创建完成后,在腾讯云控制台或本地调试工具都可以做单测。单测时一定要模拟多种提问方式,而不是只测标准输入。比如“上海冷不冷”“今天出门要带伞吗”“北京空气质量怎么样”,这些变体都能触发天气 Skill 才说明描述写得够稳。

3.3 无服务器化部署与低延迟优化

Skill 的部署,我建议优先考虑腾讯云函数(SCF)。相比于一直跑一台常驻服务器,云函数最大的优势是按量计费,Agent 的这个能力没人调用就不花钱,这对个人开发者和中小团队极其友好。

用云函数部署 Skill 时,有一个冷启动的问题需要正视。默认配置下,冷启动时间在几百毫秒到一两秒之间,放在 Agent 链路里体感还是明显的。解决办法是启用云函数的预置并发,把关键 Skill 的并发实例预热住,冷启动时长基本能压到百毫秒内。另外,Skill 内部的 HTTP 调用也要设超时时间,我自己统一设 5 秒,超过就返回降级文案,总不能因为一个天气接口挂了,整个 Agent 卡十几秒没反应。

在这个环节里,另一个容易被忽略但很重要的点是日志。云函数日志要开,每次调用的入参、出参、耗时、报错堆栈全都要能查到。没有日志的 Skill 就像没有仪表盘的飞机,飞起来全靠胆量。

4. Agent 编排与模型链路实践

4.1 让 Agent 会“分工”:Skills 之间的编排逻辑

单个 Skill 解决的是单点能力,而 Agent 的价值在于把多个 Skill 组织起来,完成复杂任务。这就涉及到编排逻辑。

我实践中比较推崇“Agent 作为调度器 + Skill 作为执行器”的模式。Agent 本身不做具体的业务操作,它只负责拆解用户的意图,决定调用哪个 Skill,以及把多个 Skill 的结果组合成最终回答。比如用户问“帮我规划明天去杭州的行程,顺便看看天气”,Agent 会同时调用日程规划 Skill 和天气查询 Skill,再把两者结果合并输出。

有的开发者会纠结:我是把编排逻辑写死在代码里,还是交给模型自动决定?我的建议是:能用代码写死的尽量写死,只有无法预判的开放场景才交给模型决策。写死的编排逻辑确定性强、可测试、不容易出错;模型决策灵活,但不可控,对话链路一长就可能走偏。落到工程上,我会用一个流程状态机来管理多轮任务,而不是把状态都压在对话上下文里。

4.2 状态管理与记忆机制的工程实现

Agent 项目做深了之后,一定会撞上“记忆”这个问题。用户上一轮说了偏好,下一轮 Agent 就忘了,这种体验非常割裂。

我在腾讯云上的做法是引入一个独立的记忆服务,说白了就是给每个用户建一个 KV 存储,需要持久化的关键信息(比如用户的常用城市、出行偏好、历史订单)写进去,Agent 在每轮对话开始时把相关记忆注入到上下文中。

这里要注意,记忆不是越多越好。把几十条历史消息一股脑塞给模型,既烧 token 又干扰判断。我的实践是:短期记忆保留最近 3~5 轮对话,长期记忆只沉淀那些用户明确表达过且具有复用价值的信息。为了让 Agent 知道该记住什么,我会在 Skill 里加一个“记忆提取”的专用函数,在关键节点上由模型判断是否值得写入长期记忆,而不是整段对话无差别存储。

4.3 多轮对话中的防漂移与降级策略

做过实际 Agent 项目的都有体会:对话轮次一多,Agent 就容易飘。明明刚开始聊天气,聊着聊着就跑到完全无关的话题上去了。我在代码里加了“对话护栏”机制,每一轮模型输出后,会先过一遍意图分类器,确认与当前任务仍相关,再继续执行,否则会主动询问用户是否切换了主题。

更关键的是降级策略。任何一个外部 Skill、模型服务都可能随时出问题。当某个 Skill 连续调用失败 2 次时,我会直接熔断,不再重复调用,转而返回一个预设的兜底文案,告诉用户“这个话题我暂时处理不了,可以稍后再试”。千万不要小看这个开关,生产环境里很多 Agent 给人“很傻”的印象,就是因为在出错路径上没有兜底,直接超时或者返回生硬的报错。

5. 常见问题与排查技巧实录

5.1 高频报错排查清单

Agent 在腾讯云上跑起来之后,会遇到各种莫名其妙的问题。我整理了一份高频问题速查表,全部来自真实生产环境:

现象根因排查思路
模型返回 400 错误参数格式不合法或缺少必填参数看 LiteLLM Proxy 日志,确认请求体里的 messages 结构;检查 Skill 参数映射是否遗漏
Skill 调用超时云函数冷启动+外部 API 响应慢启用预置并发;给 Skill 内部请求加超时;第三方 API 不可靠时考虑加缓存
Agent 调用错 Skill功能描述太宽泛,模型无法区分把 Skill 描述改成“触发场景+典型问法”的格式;多个相似 Skill 要在描述里明确边界
上下文丢失没接持久化记忆,只靠对话窗口接入记忆服务;关键信息在 Skill 返回时直接写入长期记忆
内存溢出单次 Skill 返回数据量过大限制 SQL 查询条数;返回字段裁剪;超出阈值时做分页摘要
端口不通安全组或防火墙未放行登录服务器用 netstat 确认监听;再检查安全组入方向是否放行了对应端口

不夸张地说,这份清单解决了我至少一半的日常排障时间。建议大家照着这个思路,把自己项目的报错也沉淀成类似的清单,团队其他人遇到同类问题时就不必从头查一遍了。

5.2 并发与成本控制经验

Agent 服务上线后,并发和成本的平衡是我被问得最多的问题之一。LiteLLM Proxy 自带简单的限流能力,可以通过配置max_parallel_requests控制单模型的最大并发数,防止突发流量打爆模型配额或者烧穿预算。

腾讯云函数部分,建议给每个 Skill 设置独立的并发配额,不要让一个冷门 Skill 占满整体并发额度,从而影响核心链路。

成本控制上最有效的一招,是给不同模型分配不同的任务类型。复杂推理任务用 GPT-4 级别的大模型,简单抽取和分类任务用便宜的小模型。我在 LiteLLM Proxy 里配置了多个模型组,Agent 的调度层会根据任务复杂度的预估自动路由,实测下来整个项目的月度模型成本能省 30%~40%。利润可能看起来不大,但对个人开发者来说,这就是能不能持续跑下去的关键。

5.3 上线前必须检查的几个安全项

Agent 上线前,安全检查我一般按下面这几条走一遍:

首先,API Key 绝对不要硬编码在前端代码里。所有的密钥只放服务端环境变量或云平台的密钥管理服务里,前端只允许通过后端代理转发请求。

其次,Skill 的入参要做校验。模型生成的参数不可信,我在每个 Skill 入口都做了白名单校验和长度限制,防止注入超长字符串或者特殊构造的内容打崩下游服务。

第三,用户相关的数据接口要控制权限边界。A 用户的信息绝对不能因为模型幻觉而暴露给 B 用户的会话。这个在 Skill 设计阶段就要定好:凡是涉及用户数据的调用,必须从会话上下文中拿用户 ID,而不是让模型自由发挥。

最后,限流一定要做。无论你的服务是给小程序用还是给内部工具用,都要有每分钟请求上限。腾讯云的 API 网关支持直接配置限流策略,省得自己在代码里实现。

6. 从个人项目到团队规范的沉淀

写到这儿,相信你已经发现,Agent 开发真正难的不是某个点上的技术,而是把散落的决策、工具、记忆、模型、异常处理这些环节,拼成一个稳定可控的系统。AI Skills 给我最大的启发,就是它把“能力”这件事标准化了。团队里每个人写的 Skill 都有同样的结构、同样的调试流程、同样的部署方式,协作成本直线下降。

我们团队现在已经有了一条不成文的规矩:任何新能力,先进 Skills 体系,再谈接入 Agent。这也让后续的新人 onboarding 轻松很多,新同学只要照着已有 Skill 的模板改,半天就能提一个可用的小能力上库,而不需要先花两周弄懂整套工具链。

如果你正在做自己的 Agent 项目,或者正打算让团队现有的 Agent 变得更好维护,我建议你先找一两个最常用、最独立的能力练手,比如天气查询、文档解析、数据库查询这类,完整走一遍“定义 Skill → 云端部署 → 接入 Agent → 上线排障”的闭环。等你把这条路踩熟了,再逐步拓宽,会比一上来就憋一个大而全的 Agent 稳妥得多。

7. 最后分享一个小经验

最后再说一个我压箱底的小技巧:无论是 LiteLLM Proxy 的日志,还是腾讯云函数的日志,都把结构化格式开启,每条日志打出请求 ID。这样当你遇到一个用户反复反馈“Agent 答得不对”时,你可以拿着这条请求 ID,把整条链路的日志串起来看,从模型输入、Skill 匹配、参数解析到最后生成,到底哪一步发生了偏差,一目了然。

没有可观测性的 Agent 项目,出了问题就是在黑箱里捞针;做好日志和追踪,你已经跑赢了八成同类项目。希望这篇实践复盘,能让你在腾讯云上把 Agent 这条路走得更顺。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询