当前位置: 首页 > article >正文

crewAI 可观测性体系:Langfuse/Phoenix 集成与执行链路追踪

crewAI 可观测性体系Langfuse/Phoenix 集成与执行链路追踪本文基于 crewAI v1.11.0介绍如何为多智能体系统建立完整的可观测性基础设施。一、为什么多智能体系统需要可观测性一个 crewAI Crew 在生产环境中运行时你关心哪些问题这次执行花了多少钱LLM API 成本哪个 Agent 最慢哪个 Task 最容易失败某个特定的输出为什么质量低——是 Prompt 问题还是工具问题这个月的成本趋势是上升还是下降这些问题用verboseTrue的控制台日志根本无法回答。你需要的是结构化的、可查询的、可可视化的可观测性系统。crewAI 基于 OpenTelemetry 标准提供了全链路追踪支持可以无缝集成 Langfuse、Phoenix、LangSmith 等主流观测平台。二、OpenTelemetry 埋点crewAI 的追踪基础crewAI 内部已经预置了完整的 OpenTelemetry 埋点涵盖追踪覆盖范围 ├── Crew 级别 │ ├── crew_kickoff开始执行 │ ├── crew_finished执行完成 │ └── crew_error执行失败 │ ├── Agent 级别 │ ├── agent_execution_started │ ├── agent_tool_call工具调用 │ ├── agent_tool_result工具返回 │ └── agent_execution_finished │ ├── Task 级别 │ ├── task_started │ ├── task_completed │ └── task_failed │ └── LLM 调用级别 ├── llm_request请求参数、Prompt ├── llm_response返回内容 └── token_usageToken 消耗统计开发者无需手动添加追踪代码只需配置目标平台即可。三、Langfuse 集成Langfuse 是目前最流行的 LLM 可观测性平台支持开源自托管和云版本。3.1 安装与配置pipinstalllangfuse# .env 或环境变量配置LANGFUSE_SECRET_KEYsk-lf-...LANGFUSE_PUBLIC_KEYpk-lf-...LANGFUSE_HOSThttps://cloud.langfuse.com# 或自托管地址3.2 在 crewAI 中启用 Langfuse方式一自动集成推荐fromlangfuse.decoratorsimportlangfuse_context,observefromcrewaiimportCrew,Agent,Task# crewAI 通过 OpenTelemetry 自动向 Langfuse 上报追踪数据# 只需要确保环境变量配置正确无需任何代码改动crewCrew(agents[researcher,analyst],tasks[task1,task2],verboseTrue)resultcrew.kickoff(inputs{topic:AI趋势})# 执行完成后Langfuse 仪表板中会自动出现本次执行的追踪记录方式二显式 Session 追踪fromlangfuseimportLangfusefromcrewaiimportCrew langfuseLangfuse()defrun_crew_with_tracing(topic:str,user_id:strNone):带完整追踪的 Crew 执行# 创建 Langfuse 会话tracelangfuse.trace(nametech_research_crew,user_iduser_id,input{topic:topic},metadata{crew_version:1.0.0,environment:os.getenv(ENVIRONMENT,production)})try:crewCrew(agents[researcher,analyst],tasks[task1,task2])resultcrew.kickoff(inputs{topic:topic})# 记录成功结果trace.update(output{result:result.raw[:500]},status_messagesuccess)returnresultexceptExceptionase:# 记录失败信息trace.update(status_messageferror:{str(e)})raisefinally:langfuse.flush()# 确保数据上报3.3 Langfuse 仪表板功能配置完成后Langfuse 提供可观测性维度 ├── Traces追踪 │ ├── 完整的执行调用链Agent → Tool → LLM │ ├── 每步的输入/输出 │ └── 时间线瀑布图 │ ├── Metrics指标 │ ├── Token 消耗输入/输出/总计 │ ├── API 成本按模型分类 │ ├── 端到端延迟 │ └── 成功/失败率 │ ├── Scores评分 │ ├── 人工评分1-5星 │ └── LLM-as-Judge 自动评分 │ └── Datasets数据集 ├── 保存高质量/低质量执行样本 └── 用于提示词优化的测试集四、PhoenixArize集成Phoenix 是 Arize AI 开源的 LLM 观测工具特别擅长 RAG 系统的评估和调试pipinstallarize-phoenix openinference-instrumentation-crewaiimportphoenixaspxfromopeninference.instrumentation.crewaiimportCrewAIInstrumentor# 启动本地 Phoenix 服务会在 localhost:6006 开启可视化界面sessionpx.launch_app()# 启用 crewAI 自动追踪CrewAIInstrumentor().instrument()# 正常运行 Crew所有数据自动发送到 PhoenixcrewCrew(agents[researcher],tasks[task])resultcrew.kickoff(inputs{topic:AI})print(f查看追踪数据{session.url})# 输出查看追踪数据http://localhost:6006Phoenix 的特色功能RAG 评估自动评估知识检索的相关性和完整性幻觉检测标记 LLM 输出中可能的幻觉内容对比分析并排比较不同 Prompt 版本的效果五、自定义指标监控除了第三方平台有时候需要将指标接入自有监控系统如 Prometheus Grafanafromprometheus_clientimportCounter,Histogram,Gauge,start_http_serverimporttime# 定义 Prometheus 指标crew_executions_totalCounter(crewai_executions_total,Total number of crew executions,[crew_name,status])crew_execution_durationHistogram(crewai_execution_duration_seconds,Duration of crew execution,[crew_name],buckets[10,30,60,120,300,600])token_usage_totalCounter(crewai_token_usage_total,Total tokens used,[crew_name,model,type]# type: input/output)# 监控装饰器defmonitored_crew(crew_name:str):defdecorator(func):defwrapper(*args,**kwargs):start_timetime.time()try:resultfunc(*args,**kwargs)crew_executions_total.labels(crew_namecrew_name,statussuccess).inc()returnresultexceptExceptionase:crew_executions_total.labels(crew_namecrew_name,statuserror).inc()raisefinally:durationtime.time()-start_time crew_execution_duration.labels(crew_namecrew_name).observe(duration)returnwrapperreturndecorator# 使用监控装饰器monitored_crew(crew_nametech_research)defrun_research_crew(topic:str):crewCrew(agents[researcher],tasks[task])resultcrew.kickoff(inputs{topic:topic})# 记录 Token 使用ifresult.token_usage:token_usage_total.labels(crew_nametech_research,modelgpt-4o,typeinput).inc(result.token_usage.prompt_tokens)token_usage_total.labels(crew_nametech_research,modelgpt-4o,typeoutput).inc(result.token_usage.completion_tokens)returnresult# 启动 Prometheus 指标服务器端口 8000start_http_server(8000)六、成本追踪与预算控制importosfromdatetimeimportdatetime,datefromcollectionsimportdefaultdictclassCostTracker:LLM API 成本追踪器# 价格表$/百万tokensPRICING{gpt-4o:{input:2.5,output:10.0},gpt-4o-mini:{input:0.15,output:0.6},claude-opus-4-6:{input:15.0,output:75.0},claude-sonnet-4-6:{input:3.0,output:15.0},}def__init__(self,daily_budget_usd:float10.0):self.daily_budgetdaily_budget_usd self.daily_costsdefaultdict(float)deftrack(self,model:str,prompt_tokens:int,completion_tokens:int)-float:计算并追踪本次调用成本pricingself.PRICING.get(model,{input:0,output:0})cost(prompt_tokens/1_000_000*pricing[input]completion_tokens/1_000_000*pricing[output])todaydate.today().isoformat()self.daily_costs[today]cost# 预算预警ifself.daily_costs[today]self.daily_budget*0.8:print(f⚠️ 成本预警今日已用 ${self.daily_costs[today]:.3f}f接近预算上限 ${self.daily_budget})returncostdefget_daily_cost(self)-float:returnself.daily_costs.get(date.today().isoformat(),0.0)defreport(self)-str:today_costself.get_daily_cost()returnf今日成本${today_cost:.4f}/ 预算${self.daily_budget:.2f}# 在 Crew 执行后追踪成本cost_trackerCostTracker(daily_budget_usd20.0)resultcrew.kickoff()ifresult.token_usage:costcost_tracker.track(modelgpt-4o,prompt_tokensresult.token_usage.prompt_tokens,completion_tokensresult.token_usage.completion_tokens)print(f本次成本${cost:.4f})print(cost_tracker.report())七、日志结构化生产级日志规范importloggingimportjsonimportsysfromdatetimeimportdatetimeclassJSONFormatter(logging.Formatter):JSON 格式化日志便于 ELK/Datadog 等日志平台解析defformat(self,record):log_entry{timestamp:datetime.utcnow().isoformat()Z,level:record.levelname,logger:record.name,message:record.getMessage(),}ifhasattr(record,crew_name):log_entry[crew_name]record.crew_nameifhasattr(record,agent_role):log_entry[agent_role]record.agent_roleifhasattr(record,task_id):log_entry[task_id]record.task_idifrecord.exc_info:log_entry[exception]self.formatException(record.exc_info)returnjson.dumps(log_entry,ensure_asciiFalse)# 配置结构化日志defsetup_logging(level:strINFO):handlerlogging.StreamHandler(sys.stdout)handler.setFormatter(JSONFormatter())root_loggerlogging.getLogger()root_logger.setLevel(getattr(logging,level))root_logger.addHandler(handler)# crewAI 内部日志logging.getLogger(crewai).setLevel(logging.WARNING)# 生产环境减少噪声setup_logging(os.getenv(LOG_LEVEL,INFO))八、小结可观测性是多智能体系统进入生产环境的入场券。没有可观测性你在生产环境中基本上是盲飞Langfuse最推荐的 LLM 可观测性平台成本追踪 完整追踪链路 评分系统Phoenix特别适合 RAG 系统的评估和调试自定义 Prometheus 指标需要集成自有监控系统时的选择结构化日志生产环境必须方便日志平台检索和告警三个核心监控指标成本每次执行花了多少钱、质量输出是否符合预期、可靠性成功率和错误分布。这三个指标决定了你的 crewAI 系统在生产中是否可持续运行。系列导航上一篇crewAI CLI 与项目结构从原型到生产的工程化规范下一篇crewAI 部署形态本地、Docker、K8s 与 Serverless 化实践基于 crewAI v1.11.0 官方文档撰写于 2026 年 3 月

相关文章:

crewAI 可观测性体系:Langfuse/Phoenix 集成与执行链路追踪

crewAI 可观测性体系:Langfuse/Phoenix 集成与执行链路追踪 本文基于 crewAI v1.11.0,介绍如何为多智能体系统建立完整的可观测性基础设施。 一、为什么多智能体系统需要可观测性 一个 crewAI Crew 在生产环境中运行时,你关心哪些问题&#…...

crewAI CLI 与项目结构:从原型到生产的工程化规范

crewAI CLI 与项目结构:从原型到生产的工程化规范 本文基于 crewAI v1.11.0,系统介绍 crewAI 项目的标准工程结构、CLI 工具链和生产环境配置规范。 一、原型与生产的鸿沟 很多 crewAI 项目都死在从原型到生产的过渡阶段。原型阶段的代码通常是这样的&a…...

一、安装Redis(win11环境下)

1.windows安装Redis 1.1下载redis https://github.com/tporadowski/redis/releases 图1-1 网页Redis版本选择 1.2解压redis 图1-2 redis目录下 1.3启动redis 在解压成功后,进入到redis文件下(如上图1-2),右键打开命令窗口&am…...

Comsol声子晶体能带计算,包含六角晶格不同原胞的选取以及简约布里渊区高对称点选择

Comsol声子晶体能带计算,包含六角晶格不同原胞的选取以及简约布里渊区高对称点选择。 核心在于区分三角晶格和六角晶格区别最近在研究Comsol声子晶体的能带计算,发现六角晶格的原胞选取和简约布里渊区高对称点的选择真是个大坑。尤其是三角晶格和六角晶格…...

从Tacotron到智能语音:端到端语音合成的原理、应用与未来

从Tacotron到智能语音:端到端语音合成的原理、应用与未来 引言 你是否曾好奇智能音箱里流畅自然的语音是如何“凭空”产生的?这背后,端到端语音合成技术正扮演着核心角色。本文将深入解析这一领域的里程碑式模型——Tacotron。我们将从其颠覆…...

保姆级教程:手把手复现攻防世界shrine靶场(Flask+Jinja2 SSTI)

从零构建Flask SSTI靶场:绕过黑名单获取FLAG的实战指南 第一次接触CTF中的SSTI漏洞时,我完全被那些奇怪的{{}}符号和魔术方法搞晕了。直到亲手搭建环境复现漏洞,才真正理解模板注入的精妙之处。本文将带你从零开始,完整复现攻防世…...

Arduino Uno引脚全解析:从电源管理到PWM调光,新手必看的实战指南

Arduino Uno引脚深度实战:从电源配置到智能控制的全能指南 当你第一次拿起Arduino Uno开发板时,那些密密麻麻的金属引脚可能会让你感到困惑。这块小小的蓝色板子如何通过这些引脚与外部世界对话?本文将带你超越简单的引脚定义,深入…...

基于Docker和Orthanc构建高效医学影像存储系统的实践指南

1. 为什么选择DockerOrthanc搭建医学影像系统 在医院信息化建设中,医学影像存储一直是个让人头疼的问题。传统的PACS系统往往价格昂贵、部署复杂,而且扩展性差。我去年帮一家社区医院做系统升级时,他们原有的影像系统已经用了8年,…...

NXP i.MX8M Plus Cortex-M7多核通信与实时控制开发实战

1. 认识i.MX8M Plus的异构多核架构 第一次拿到NXP i.MX8M Plus开发板时,最让我惊讶的是它独特的"大小核"设计。这颗芯片内部其实藏着两个完全不同的世界:一边是四核Cortex-A53组成的"大脑",主频高达1.6GHz,能…...

计算机毕设 java基于微信小程序点餐系统的设计与实现 微信小程序智能点餐平台开发 基于 SpringBoot 的餐饮在线点餐系统设计

计算机毕设 java基于微信小程序点餐系统的设计与实现pmz399(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享随着移动互联网的普及和微信小程序的广泛应用,“互联网 餐饮” 成为行业…...

LeetCode 48 1886.矩阵旋转与判断

LeetCode 48 & 1886.矩阵旋转与判断 题目概览 [LeetCode 48] 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度,必须原地旋转。 [LeetCode 1886] 判断矩阵经轮转后是否一致 给定两个 n n 的矩阵 mat 和 target&a…...

Comsol纳米摩擦发电机仿真计算模型探索

Comsol纳米摩擦发电机仿真计算模型,采用静电场对相反电极材料感应的表面电荷进行计算,可以得到不同电极距离下计算模型的电势、电场分布最近在研究Comsol纳米摩擦发电机仿真计算模型,感觉还挺有意思的,来和大家分享一下&#x1f6…...

计算机毕设 java 燐燐开花二手交易系统 Java 二手商品在线交易与管理平台开发 基于 SpringBoot 的二手交易商城系统实现

计算机毕设 java 燐燐开花二手交易系统 7rvj49(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享在互联网与共享经济的双重推动下,二手商品交易需求日益旺盛,但传统二手交…...

CAD二次开发实战:5分钟搞定TXT坐标转DWG图纸(C#代码详解)

CAD二次开发实战:5分钟实现TXT坐标转DWG图纸(C#代码精解) 在工程设计领域,数据格式转换是高频需求。许多传统测绘设备输出的坐标数据仍以TXT文本形式保存,而设计人员需要将这些数据可视化到DWG图纸中。手动输入不仅效率…...

vue+python人工智能AI问答时代个人计算机的安全防护科普系统

目录技术栈选择系统架构设计核心功能实现数据安全策略部署与测试用户教育内容持续维护计划项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选择 前端采用Vue 3框架,结合Element UI或Ant Design Vue组件库实现…...

腾讯云GPU实例上,用Isaac Sim 5.0和Isaac Lab搭建GR00T仿真环境,保姆级避坑指南

腾讯云GPU实例部署Isaac Sim 5.0全流程:从零搭建到稳定运行的深度实践 当我在腾讯云上第一次尝试部署Isaac Sim 5.0时,本以为按照官方文档就能轻松搞定,结果却遭遇了VNC黑屏、快捷键失效、密码重置卡住等一系列问题。这篇文章将分享我在腾讯云…...

保姆级教程:从下载到配置,手把手搞定CANoe车载测试环境(附CAN盒选购指南)

从零搭建CANoe车载测试环境:避坑指南与实战配置 第一次打开CANoe软件时,那个复杂的界面和密密麻麻的选项让我完全不知所措。作为汽车电子领域最主流的测试工具,CANoe的强大功能背后是陡峭的学习曲线。本文将分享我三年来从零开始搭建测试环境…...

vue+python产品售后服务跟踪系统的设计与实现6ffp13w7

目录系统架构设计功能模块划分技术实现细节数据库设计开发计划部署方案项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离架构,前端使用Vue.js框架构建用户界面,后端使用Pytho…...

华为无线网络部署实战:基于RADIUS认证的企业级WLAN配置指南

1. 企业级WLAN部署的核心挑战 在中大型企业无线网络部署中,最头疼的问题莫过于如何平衡安全性和用户体验。我见过太多企业为了图省事直接使用预共享密钥(PSK)认证,结果要么因为密码泄露导致网络被蹭,要么每次有员工离职…...

Python实战:用中智集解决模糊决策问题(附完整代码)

Python实战:用中智集解决模糊决策问题(附完整代码) 在数据科学和机器学习领域,决策问题往往伴随着不确定性。传统的模糊集理论已经无法完全满足复杂场景下的需求,这时中智集(Neutrosophic Set)作…...

银监会G01报表填报避坑指南:最新251版与231版差异全解析

G01报表251版与231版差异解析:银行填报人员必知的12个关键点 每当季度报表报送季来临,银行填报人员总会面临版本更新带来的困扰。G01《资产负债项目统计表》作为银监会1104报表体系中最核心的报表之一,其251版与231版之间的差异直接影响着数据…...

实验室旧服务器(Ubuntu 18)无网环境,如何用Ollama+DeepSeek R1搭建本地AI助手(附Open WebUI白屏解决方案)

在Ubuntu 18无网环境中部署Ollama与DeepSeek R1的完整指南 老旧服务器往往面临系统版本过时、网络隔离等现实约束,但这并不妨碍我们挖掘其剩余价值。本文将手把手带您完成Ubuntu 18系统下的离线AI助手部署,重点解决无网环境带来的特殊挑战。 1. 环境准备…...

永磁同步电机PMSM参数辨识与SVPWM矢量控制仿真探索

永磁同步电机PMSM参数辨识svpwm矢量控制 初试速度恒定 Matlab/simulink仿真(2018a及以上版本),最近在搞永磁同步电机(PMSM)相关的研究,涉及到参数辨识以及SVPWM矢量控制,并且初试速度恒定,用的是Matlab/Sim…...

双向Buck-Boost变换器:电压外环与电流内环控制的平均电流管理技术,实现模式切换无过压过...

双向buck-boost变换器, 采用电压外环, 电流内环控制, 平均电流控制。 在buck模式与boost模式之前切换时,不会发生过压与过流。 该拓补可以用于储能中。双向buck-boost变换器最近在储能领域火得不行,这玩意儿既能当充电…...

从CMT2300A实战出发:Sub1G射频匹配电路设计要点与315MHz应用详解

1. CMT2300A芯片与Sub1G射频基础认知 第一次拿到CMT2300A这颗国产Sub1G射频芯片时,最吸引我的是它127MHz到1020MHz的超宽工作频段。这意味着一颗芯片就能覆盖智能家居、工业遥控等场景常用的315MHz/433MHz/868MHz等多个频点。不过实际调试中发现,射频匹配…...

Comsol 中光子晶体仿真:拓扑荷、偏振态及相关特性探索

comsol光子晶体仿真,拓扑荷,偏振态。 三维能带,三维Q,Q因子计算。 远场偏振计算。在光子晶体领域的研究中,Comsol 是一款极为强大的工具,它能帮助我们深入探究各种复杂的光学现象,今天咱们就聊聊…...

半波整流电路DIY实战:从零搭建一个简易电源(附波形实测对比)

半波整流电路DIY实战:从零搭建一个简易电源(附波形实测对比) 在电子制作的世界里,电源电路就像人体的心脏,为各种电子设备提供稳定的能量。而半波整流电路,则是电源设计中最基础也最经典的入门项目。不同于…...

Comsol 下复合绝缘子的仿真探索

Comsol 复合绝缘子仿真,包括污秽种类、污秽附着面积等对绝缘子电场分布、绝缘子污闪电压的影响。 绝缘子电-热-流耦合分析,电势分布线图。在电力系统领域,复合绝缘子的性能研究至关重要。今天咱们就来聊聊利用 Comsol 软件对复合绝缘子进行的…...

Comsol中光子晶体光纤相关特性计算漫谈

comsol光子晶体光纤有效折射率,模式色散,有效模式面积计算,在光子学领域,光子晶体光纤以其独特的光学特性备受关注。今天咱就唠唠在Comsol里计算光子晶体光纤的有效折射率、模式色散以及有效模式面积这几个关键参数。 有效折射率计…...

霍尔木兹海峡:帝国黄昏的祭坛?

【桥水基金创始人瑞达利欧3月16日发布一则可怕的警告:美国、以色列和伊朗之间的冲突将围绕霍尔木兹海峡展开决定性对抗,受其结果影响的将远不止石油价格。它将决定美国领导的全球秩序能否存续。】当达利欧将霍尔木兹海峡的波涛与1956年苏伊士运河的硝烟重…...