
本方案采用典型的“模型服务层 + 编排控制层 + 工具执行层 + 可观测层”四层架构,全部基于腾讯云原生服务构建:
Agent推理任务以CPU密集型为主,辅以少量GPU推理(Embedding计算)。具体配置如下:
节点池 | 实例规格 | 节点数(静态) | HPA触发条件 |
|---|---|---|---|
通用计算池 | S5.4XLARGE32(16核32G) | 3个(预留) | CPU使用率 > 70% 扩容,< 30% 缩容,冷却期3分钟 |
GPU推理池 | GN7.2XLARGE40(A10 GPU) | 2个(弹性) | 任务队列深度 > 20 扩容,< 5 缩容 |
向量检索池 | S5.2XLARGE16(8核16G) | 2个(固定) | 不参与自动伸缩,保证RAG检索稳定性 |
关键配置要点:TKE集群启用抢占式实例用于非生产环境的批处理任务,可降低约35%的计算成本。生产环境Pod需设置requests与limits(CPU请求2000m,限制4000m;内存请求4Gi,限制8Gi),避免资源竞争导致的OOM Kill。
生产环境中Agent执行长时任务(如自动生成行业分析报告)时,一旦Pod重启或工具调用超时,所有中间推理状态丢失。本方案采用腾讯云Redis(内存级Checkpoint) 与COS(文件级归档) 组合实现断点续跑。
使用Redis Hash存储当前活跃会话的工作记忆(Working Memory),Key设计为:agent:session:{session_id}:checkpoint。
# Python伪代码 - 存储Checkpoint
import redis
import json
r = redis.Redis(host='your-redis-instance.tencentcloudcdb.com', port=6379, decode_responses=True)
def save_checkpoint(session_id, state_dict):
# state_dict包含:当前步数、已完成的工具调用结果、待执行队列、当前压缩后的Prompt
key = f"agent:session:{session_id}:checkpoint"
r.hset(key, mapping={
"step": state_dict["step"],
"tool_results": json.dumps(state_dict["tool_results"]), # 序列化存储
"pending_tasks": json.dumps(state_dict["pending_tasks"]),
"compressed_prompt": state_dict["compressed_prompt"]
})
r.expire(key, 1800) # 30分钟TTL自动清理,避免Redis堆积
def resume_checkpoint(session_id):
key = f"agent:session:{session_id}:checkpoint"
data = r.hgetall(key)
if not data:
return None
return {
"step": int(data["step"]),
"tool_results": json.loads(data["tool_results"]),
"pending_tasks": json.loads(data["pending_tasks"]),
"compressed_prompt": data["compressed_prompt"]
}超过30分钟未活动的会话,Checkpoint从Redis转存至COS标准存储,Key为agent-checkpoints/{year}/{month}/{day}/{session_id}.json。恢复时先查Redis,若无则从COS加载并重新写入Redis。
成本对比:Redis存储1万个活跃会话约需2GB内存(成本约200元/月),COS存储历史归档月增约10GB(成本约1.5元/月)。该策略在保证恢复速度(Redis读取 < 1ms)的同时控制了存储成本。
Agent调用的工具大部分封装为腾讯云API网关(API Gateway) 背后的微服务。工具调用的不稳定主要来源于:突发流量打垮后端、超时未返回导致Agent长期等待。
在API网关控制台为每个工具API配置限流策略:
配置项 | 参数值 | 说明 |
|---|---|---|
API网关超时 | 5秒 | 超过即返回504,Agent捕获后降级处理 |
TKE Pod读探针(ReadinessProbe) | 初始延迟20秒,超时5秒,周期10秒 | 确保Pod完全启动后才接收流量 |
TKE Pod存活探针(LivenessProbe) | 超时3秒,周期15秒,失败阈值3 | 连续3次探测失败则重启Pod |
熔断器(Circuit Breaker) | 错误率 > 40% 且 最小请求数 > 15 | 熔断开启,直接返回预设降级回复,30秒后半开尝试恢复 |
实践要点:熔断开启时,Agent的System Prompt中需预埋降级指令——例如提示模型直接回复“当前工具繁忙,请简化您的问题或稍后重试”,而非重复尝试调用失败工具。
Agent的长期记忆依赖腾讯云Elasticsearch Service的向量检索能力。在实测中,未经调优的ES检索召回率(Recall@10)仅为72%,调优后可提升至91%。
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 1,
"refresh_interval": "60s",
"analysis": {
"analyzer": {
"ik_smart_analyzer": {
"type": "custom",
"tokenizer": "ik_smart"
}
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_smart_analyzer",
"fields": {
"keyword": { "type": "keyword", "ignore_above": 256 }
}
},
"content_vector": {
"type": "dense_vector",
"dims": 768, // 使用混元Embedding模型输出维度
"index": true,
"similarity": "cosine"
},
"doc_id": { "type": "keyword" },
"create_time": { "type": "date" }
}
}
}针对Agent问答场景,推荐以下检索参数组合:
参数 | 推荐值 | 说明 |
|---|---|---|
size | 10 | 初筛候选文档数 |
num_candidates | 200 | HNSW算法探测候选节点数,越大召回率越高但延迟增大 |
min_score | 0.65 | 余弦相似度阈值,低于此值直接过滤 |
boost(时间衰减) | {"gauss": {"create_time": {"scale": "7d", "decay": 0.5}}} | 近7天文档获得0.5的额外加权 |
延迟数据:调优前P95检索延迟为320ms,调优后(num_candidates从500降至200)P95延迟降至180ms,Recall@10从72%升至91%。
Agent的System Prompt持续迭代,每次修改都可能影响下游输出质量。本方案采用腾讯云TCR(容器镜像仓库) 存储Prompt模板的版本化镜像。
agent-prompt:v1.2.3-{timestamp}。imagePullPolicy: Always拉取最新镜像,或通过灰度发布策略仅更新部分Pod。在一次Prompt优化案例中,原版本(v1)与优化版本(v2)的对比数据如下:
版本 | 变化内容 | 任务完成率(TCR) | 平均工具调用次数 | 平均输出长度 |
|---|---|---|---|---|
v1(基线) | 通用指令,无Few-shot | 82.3% | 5.2次 | 320 Tokens |
v2(实验) | 增加3个Few-shot示例,明确禁止重复调用 | 89.1% | 3.8次 | 280 Tokens |
v2版本在减少工具调用次数(降低API费用)的同时提升了任务完成率。灰度发布过程:先更新2个Pod至v2,观察4小时(覆盖业务高峰),确认无异常后全量更新。
Agent上线后的隐性成本超支往往是运维盲区。本方案通过腾讯云账单API和CLS日志消费构建自定义成本看板。
单次会话成本 = (混元API输入Token数 × 输入单价 + 输出Token数 × 输出单价)
+ (ES检索次数 × 单次检索预估费用)
+ (工具调用次数 × 单次API网关调用费用)在腾讯云Prometheus中配置以下自定义告警规则:
告警名称 | 表达式 | 告警级别 | 通知渠道 |
|---|---|---|---|
单会话成本超限 | avg(agent_cost_per_session) > 0.15(单位:元) | 严重 | 企业微信+短信 |
日Token消耗突增 | increase(llm_token_total[1h]) > 100000 | 警告 | 企业微信 |
工具调用失败率过高 | tool_failure_rate > 15% | 严重 | 电话+短信 |
实际效果:上线首月,通过成本看板发现某业务线单会话成本高达0.42元(基准0.12元),定位后发现该场景频繁触发长上下文摘要生成,随后为该业务线单独配置了更激进的上下文压缩策略,成本降至0.18元。
在正式上线前,请逐项确认以下配置:
num_candidates参数经压测验证session_id、model_name、token_usage、latency_ms字段)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。