Appearance
Agent 上线后,两个问题会立刻找上门:老板问「这东西一个月烧多少钱」,用户问「怎么这么慢、这答案哪来的」。你要是答不上来、也调不动,就很被动。这一篇讲两件事——怎么把 Agent 内部看清楚(可观测),以及怎么把钱和时间省下来(成本与延迟)。
为什么"看不见"是最大的坑
单个大模型调用还好,但一个 Agent 内部可能是这样的:改写查询 → 检索 → 重排 → 调工具 A → 再调工具 B → 生成回答。中间七八步,任何一步都可能出岔子。如果你只能看到最终那句回答,就等于蒙着眼睛开车——它答错了你不知道错在哪一步,它变慢了你不知道卡在哪,它烧钱你不知道钱花在哪。
可观测(Observability)要解决的,就是把这条"黑箱链路"照亮:每一步输入什么、输出什么、花了多少 token、耗时多久,都清清楚楚。
用 LangSmith 一键追踪
LangChain 官方的 LangSmith 是最省事的方案。它的神奇之处在于:你几乎不用改代码,只要设几个环境变量,之后每一次运行都会被自动、完整地记录下来,在网页上能看到整条链路的"火焰图"——每一步、每个工具调用、token 消耗、耗时,一览无余。
bash
# 设好这几个环境变量,追踪就自动开启了(去 LangSmith 官网注册拿 key)
export LANGSMITH_TRACING="true"
export LANGSMITH_API_KEY="你的_langsmith_key"
export LANGSMITH_PROJECT="my-agent" # 给项目起个名,方便归类设好之后,你原来的代码一行都不用改,正常跑就行。打开 LangSmith 网页,就能看到刚才那次运行:主管派给了哪个专员、检索回了哪几条、哪一步花了 2 秒、这次总共烧了多少 token。排查"为什么答错""为什么慢"时,这就是你的 X 光机。
自己动手:中间件是天然的埋点位
不想依赖外部平台、只想记点关键日志?回想第十篇讲的中间件——它天生就是绝佳的埋点位置。在 before_model 里记录每次模型调用、在 wrap_tool_call 里记录每个工具的入参和耗时,你就有了一份自己的运行日志。可观测不一定非得上平台,先把关键节点记下来,也能解决大问题。
省钱省时间的五个实招
大模型调用是按 token 收费、按等待耗时的。下面几招从"最容易见效"到"需要点权衡"排列:
① 缓存重复问题。 很多用户问的其实是同一批问题("营业时间""怎么退货")。把问过的问题和答案缓存起来,再遇到相同的直接返回,又快又免费。LangChain 一行开启:
python
from langchain_core.globals import set_llm_cache
from langchain_core.caches import InMemoryCache
# 开启内存缓存:相同的输入,第二次直接命中缓存,不再调用模型
set_llm_cache(InMemoryCache())
# 想重启后仍然有效,就用落盘的 SQLite 缓存:
# from langchain_community.cache import SQLiteCache
# set_llm_cache(SQLiteCache(database_path=".langchain_cache.db"))② 简单任务用小模型。 不是所有活都需要最强最贵的模型。像"判断用户意图""给文本分类"这种简单任务,用更小更便宜的模型(如 qwen-turbo)又快又省;把贵模型留给真正需要深度推理的环节。这叫"模型分级"。
③ 控制上下文长度。 token 花在两头:输入和输出。检索别一次塞十几条(3~5 条通常够),对话历史别无限增长(用第五篇讲的摘要中间件压缩)。喂给模型的东西越精简,越省钱也越不容易跑偏。
④ 能流式就流式。 流式输出不省钱,但省"体感时间"——答案一个字一个字往外蹦,用户第一时间就看到反馈,不用干等整段生成完。感知上的"快",体验价值很高。
⑤ 减少不必要的步骤。 多智能体、多次检索、重排序都好,但每一步都是成本。用第七篇的评测集量化一下:某个环节加上去,到底让准确率提升了多少?如果提升甚微,砍掉它就是省钱。别为了"看起来高级"而堆步骤。
一个务实的顺序
上线初期,建议这么做:先把 LangSmith 追踪打开(看得见才谈得上优化)→ 打开 缓存(最容易见效的省钱手段)→ 再用评测集衡量每个环节值不值,逐步做模型分级和步骤精简。先看清、再动刀,别一上来就凭感觉做"优化"。
Node 侧:LangSmith 追踪对 Node 应用同样支持(设相同的环境变量即可);LLM 缓存在 LangChain.js 里也有对应实现。省钱的五个思路和语言无关,全都通用。
小结
可观测让你看清 Agent 每一步在干嘛(首选 LangSmith 环境变量一键开启,或用中间件自己埋点);成本与延迟靠五招——缓存、模型分级、控上下文、流式、砍冗余步骤。顺序是:先看清,再省钱,用数据决定砍哪一刀。
看得清、省得下之后,只差最后一步——把安全、部署、监控都补齐,真正送它上线。下一篇:《上生产的最后一公里》。