圈内做AI计费有个怪圈:给单个智能体开账单非常简单。模型吃了多少词元,用单价去乘,发票就成型了。可一旦把三个智能体塞进同一条流水线,只算总账就变得很粗暴。研究员、分析师、撰稿人轮番调用大模型,每一环消耗的词元差异极大,强行把数字揉在一起,根本看不出是谁在烧钱。
这次我们要搭一套能按角色分别统计词元消耗的计费模块。它跑在CrewAI多智能体应用之上,把每位代理每一次大模型请求的词元用量抓到手里,然后推给Kong Konnect计量计费服务。一次队伍执行结束,发票上会打出三行项目,每个角色一行。整件事最直接的动机来自实践:在作者的调研队伍里,撰稿代理吃进的词元数大约是研究代理的两倍。如果对所有代理按统一词元单价结算,偏向研究型的执行会被多收费,而重撰稿的场景反而占了便宜。按角色分开计费才能把账算清楚。每种代理拥有独立的计量切片和独立的计费规则。
这套逻辑不是只能用在CrewAI上。任何想把多智能体产品推向商业化的团队、任何需要基于用量向AI代理收费的软件服务,都会遇到同类需求。LangChain的代理、AutoGen的队伍,或者任何能在单次调用中暴露词元用量的多智能体框架,都能套用同样的设计。
消息触发链并不复杂。每发一次大模型请求,系统会抛出两个事件,一个记录提示词消耗的词元,另一个记录补全产出消耗的词元。两个事件都带着代理的角色标签。Kong这边的计量模块会按角色把词元用量分组,每条计费特性只从总用量中切走属于某个特定代理的那一部分,再配上制定的单价。文章附录里给出了在Kong计量后台看到的最终效果截图。
整个应用的主体只有两百行左右的Python代码,从头搭完大概需要半小时。我们在第一部分先写Python程序,建一支三人研究队伍,配齐研究员、分析师和撰稿三种角色,各自挂着专属的目标和人物背景。三者按先后次序运转:研究员收集事实,分析师从素材里挑出关键结论,撰稿人把结论改写成单页简报。关键的计费监听器KongBillingListener也是一个轻量级Python类,它会挂载到CrewAI的事件总线上。每当任意代理完成一次大模型调用,CrewAI会发出LLMCallCompletedEvent通知,监听器随即捕获这个通知,读取当次的词元数量和代理角色,然后生成用量事件发往Kong。入口脚本只负责把接口密钥就位、组建队伍、点火运行,最后把结果打印出来。配套的完整参考仓库已经放在github.com/tejakummarikuntla/Billing-CrewAI-with-KongMB,读者可以直接复制下来对照成品代码走读,也可以按步骤自己从零拼装。
热门跟贴