首页/新闻资讯/正文详情

Phoenix 中的 OpenInference Span 属性规范:必选与强烈推荐属性完整指南

发布时间:2026/9/23 19:53:46 来源:云帆数科 栏目:资讯中心
Phoenix 中的 OpenInference Span 属性规范:必选与强烈推荐属性完整指南
Phoenix 中的 OpenInference Span 属性规范必选与强烈推荐属性完整指南【免费下载链接】phoenixAI Observability Evaluation项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenixOpenInference 是一套基于 OpenTelemetry 的 AI/LLM 应用语义约定Phoenix 用它来采集、存储与分析 AI 应用的链路Trace数据。本指南以 Phoenix 仓库中的语义约定参考文档为主线系统讲解所有 OpenInference Span 都必须携带的唯一必选属性openinference.span.kind、九种合法 Span Kind 的含义与适用场景以及强烈推荐在所有 Span 上记录的input.value/output.value输入输出属性及其在评估、调试与分析中的价值。读完后你将能够为手写或自动插桩的 Span 正确地附加语义属性使数据可直接用于 Phoenix 的评估器、链路过滤与微调数据集导出。必选属性每个 Span 都必须有且仅有一个openinference.span.kindOpenInference 规范要求每一个 Span 都必须携带且仅携带一个必选属性openinference.span.kind用于标明该 Span 封装的工作类型。最小合法示例{ openinference.span.kind: LLM }这一要求同样体现在 Phoenix 的源码实现中。在 Span 数据模型 里SpanKind是一个独立的枚举类型Phoenix 在解码 OTLP Span 时正是通过该属性来还原 Span 类型在 OTLP 解码入口 中decode_otlp_span调用get_attribute_value(attributes, OPENINFERENCE_SPAN_KIND)从展平后的属性中读取该值并转换为SpanKind枚举在 OTLP 编码出口 中encode_span_to_otlp会在属性缺失时自动补写openinference.span.kind span.span_kind.value确保导出的数据始终满足每 Span 必有一个 kind的不变量。因此无论是通过自动插桩、手动插桩还是直接构造 Spanopeninference.span.kind都是数据进入 Phoenix 后被正确分类、建树与聚合的前提。九种合法的 Span Kind 及其适用场景OpenInference 共定义了9 种合法valid的 Span Kind覆盖了 LLM 应用中的典型操作单元Span Kind用途常见使用场景LLM语言模型推理OpenAI、Anthropic、本地模型调用EMBEDDING向量生成文本转向量CHAIN应用流程编排LangChain 链、自定义工作流RETRIEVER文档/上下文检索向量数据库查询、语义搜索RERANKER结果重排序对检索结果重新排序TOOL外部工具调用API 调用、函数执行AGENT自主推理ReAct 智能体、规划循环GUARDRAIL安全/策略检查内容审核、PII 检测EVALUATOR质量评估答案相关性、忠实度评分Phoenix 源码中的SpanKind枚举在此基础上还包含了PROMPT与UNKNOWN两个额外取值见 schemas.py其中UNKNOWN用于兜底_missing_方法在遇到无法识别的字符串时返回UNKNOWN而非抛错从而保证异常或不完整的数据不会导致链路解析中断。也就是说写入手工 Span 时应优先使用上述 9 种规范取值遇到非规范值时会以UNKNOWN兼容处理。不同 Span Kind 还对应各自的专属属性集例如LLMSpan 需要llm.model_name、llm.token_count.prompt/completion/total、llm.input_messages.{i}.*等详见 LLM Span 属性参考。这些 kind 专属属性与通用属性配合共同构成一个可查询、可评估的完整 Span。强烈推荐属性input.value与output.value除必选属性外OpenInference 还定义了**强烈推荐highly recommended**在所有 Span 上记录的输入输出属性属性类型描述input.valueString操作的输入提示词、查询、文档output.valueString操作的输出响应、结果、答案示例{ openinference.span.kind: LLM, input.value: What is the capital of France?, output.value: The capital of France is Paris. }在 Phoenix 的 OTLP 解码流程 中还有一个值得注意的细节如果input.value不是字符串类型例如传入的是结构化对象Phoenix 会自动将其json.dumps序列化并同步把input.mime_type置为application/json。这保证了输入输出值无论原始形态如何都能以稳定可解析的形式存入链路数据。为什么要记录输入输出评估Evaluationsfaithfulness忠实度、relevance相关性、hallucination detection幻觉检测等大量评估器必须同时拿到输入与输出才能评判质量。没有input.value/output.value的 Span 无法参与这类评估。信息流理解Information flow看到每一步的输入输出就能直观追踪数据在应用中的变换路径例如用户问题 → 检索结果 → 模型回答。调试Debugging出问题时真实的输入输出能大幅缩短根因定位时间避免靠猜测复现问题。分析Analytics支持对相似输入或输出进行模式分析例如聚合同类用户问题、统计同类错误回答。Phoenix 对输入输出的行为输入/输出会在 Span 详情中显著展示方便人工查看评估器可以自动访问这些值无需额外传参支持按输入或输出内容搜索、过滤链路可将输入输出导出用于构建微调fine-tuning数据集。补充推荐让 Span 更具上下文在记录input.value/output.value的同时建议搭配input.mime_type/output.mime_type标注数据类型如text/plain、application/json并可叠加session.id、user.id做会话与用户维度的归因以及metadataJSON 序列化字符串携带环境、模型版本等自定义信息。这些通用属性适用于任意 Span Kind具体字段与示例见 通用属性参考。完整示例{ openinference.span.kind: CHAIN, input.value: What is the weather?, input.mime_type: text/plain, output.value: I dont have access to weather data., output.mime_type: text/plain, session.id: session_abc123, user.id: user_xyz789, metadata: {\environment\: \production\, \model_version\: \v2.1\} }属性如何存储点号展平约定OpenInference 将嵌套数据结构展平为点号dot-notation属性键这与 OpenTelemetry 的键值模型兼容也便于在 Phoenix 的spans.attributesJSONB 列中直接查询。展平规则为对象 → 点号路径{llm: {model_name: gpt-4}}展平为{llm.model_name: gpt-4}数组 → 从 0 开始的索引{llm: {input_messages: [{role: user, content: Hi}]}}展平为{llm.input_messages.0.message.role: user, llm.input_messages.0.message.content: Hi}消息约定消息类属性必须保留.message.段如llm.input_messages.{index}.message.{field}。上述展平/反展平逻辑在 Phoenix 的 属性处理模块 中实现flatten()将嵌套字典递归拍平为(key, value)键值对流unflatten()则反向还原为嵌套结构。其中还有一个重要的仅结构数组参与索引规则——只有后跟映射字典的数字键才会被解释为数组下标如documents.0.content而tags.0这类标量结尾的数字键会保留为字典字符串键以确保语义正确的往返转换见 attributes.py。一个完整的实战示例将上述约定组合起来一个典型的 LLM 调用 Span 展平后如下存储于 Phoenix 的spans.attributesJSONB{ openinference.span.kind: LLM, llm.model_name: claude-3-5-sonnet-20241022, llm.invocation_parameters: {\temperature\: 0.7, \max_tokens\: 1024}, input.value: What is the capital of France?, output.value: The capital of France is Paris., llm.input_messages.0.message.role: system, llm.input_messages.0.message.content: You are a helpful assistant., llm.input_messages.1.message.role: user, llm.input_messages.1.message.content: What is the capital of France?, llm.output_messages.0.message.role: assistant, llm.output_messages.0.message.content: The capital of France is Paris., llm.token_count.prompt: 25, llm.token_count.completion: 8, llm.token_count.total: 33 }更多展平前后的对照示例可参考 展平约定文档Trace 与 Span 的层级、父子关系与生命周期概念见 Overview 文档。最佳实践清单每个 Span 必填openinference.span.kind取值限定为 9 种规范值之一优先记录input.value与output.value这是评估器可用性的硬前提也是调试与分析的基础善用mime_type标注输入输出类型非字符串输入由 Phoenix 自动 JSON 序列化按需叠加通用属性session.id、user.id、metadata提供会话、用户与业务上下文遵循展平约定手写属性时直接使用点号路径数组从 0 开始编号消息属性保留.message.段kind 专属属性按类型补齐例如 LLM Span 补llm.model_name与 token 计数让链路数据的分析价值最大化。【免费下载链接】phoenixAI Observability Evaluation项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

5分钟搞定uu改肤底层逻辑的速查手册
5分钟搞定uu改肤底层逻辑的速查手册

5分钟搞定uu改肤底层逻辑的速查手册 复制来的代码跑不通,报错信息满屏飞,你是改配置还是查日志?这种抓瞎的状态,90%的开发者都经历过。与其在CSDN或StackOverflow上盲目搜索,不如直接看透底层逻辑。今天这份关于 uu改肤… · 2026/9/23 19:53:40

三角形四心怎么记?一张图分清内心外心重心垂心
三角形四心怎么记?一张图分清内心外心重心垂心

1. 这四个“心”到底难在哪——先搭建一个能用的框架如果你带过初中几何,或者家里有正在学三角形的孩子,大概率听过这样的抱怨:“内心、外心、重心、垂心,名字都差不多,记了又忘,考场上碰到还是分不清。” … · 2026/9/23 19:53:40

西贴网实战:搞定高频面试题,项目不再从零开始
西贴网实战:搞定高频面试题,项目不再从零开始

西贴网实战:搞定高频面试题,项目不再从零开始 你是不是也这样?书上的语法背得滚瓜烂熟,LeetCode 题也刷了几百道,可一让搭个真实项目,脑子就一片空白?更扎心的是,去面试时遇到那些 高频面试题 ,明明觉得会,但一结合业务场景就卡壳。… · 2026/9/23 19:53:21

用MATLAB跑通RatSLAM:神经形态SLAM的配置、调参与避坑指南
用MATLAB跑通RatSLAM:神经形态SLAM的配置、调参与避坑指南

简介:ratslam_matlab-master.zip 是一份基于 MATLAB 的 RatSLAM 视觉同步定位与建图算法实现包,适合机器人视觉导航领域的学生、研究人员以及需要搭建轻量级仿真实验环境的开发者使用。该实现以生物启发式导航模型为基础,集中演示了从图像输入… · 2026/9/23 20:25:15

计算机入门硬核指南:硬件组成、操作系统与故障排查全解析
计算机入门硬核指南:硬件组成、操作系统与故障排查全解析

很多人觉得“初识计算机”就是从开机、打字、装软件开始,但真正要把计算机吃透,你会发现它远不止这些。这些年我经手过不少电脑,也带过很多从零起步的初学者,越发觉得“初识”这两个字其实分量很重——它既是你和这台机器建立信任… · 2026/9/23 20:25:15

随机森林分类器原理与sklearn实践:从决策树到集成学习
随机森林分类器原理与sklearn实践:从决策树到集成学习

简介:一个面向Python机器学习初学者的随机森林二分类示例,基于sklearn的RandomForestClassifier实现,可直接解决“如何用随机森林对结构化数据进行分类预测”的常见困惑。配套的csv数据中包含四个特征和一列二分类结果,代码完整覆… · 2026/9/23 20:25:15

AD图层和快捷键
AD图层和快捷键

📁 Layers (图层) ├── 📂 All Layers (所有图层) ├── 📂 Signal And Plane Layers (5) (信号和平面层) │ ├── 🟥 [1] Top Layer (T) ([1] 顶层) │ └── 🟦 [2] Bottom Layer (B) ([2] 底层) ├── &… · 2026/9/23 20:25:08

基于BERT的图书多分类课设源码:自带数据集与模型,跑通训练预测全流程
基于BERT的图书多分类课设源码:自带数据集与模型,跑通训练预测全流程

简介:这是一份面向高校学生与NLP入门者的课程设计级项目源码,围绕基于BERT的Python图书多分类任务展开,适合作为期末大作业、课设提交或文本分类实战练手,无需从零搭建即可直接运行。压缩包共15个文件,以9个py脚本为核… · 2026/9/23 20:25:08

3个坑搞定ala氨基酸,新手避坑指南
3个坑搞定ala氨基酸,新手避坑指南

3个坑搞定ala氨基酸,新手避坑指南 学会语法却不知怎么搭项目,这是很多刚接触后端开发的兄弟的通病。你背了三天API,写了几个Hello… · 2026/9/23 20:25:08

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码