# @arizeai/phoenix-otel 中文文档

规范地址：https://npmcn.com/package/%40arizeai/phoenix-otel/

版本：2\.3\.0
npm 元数据更新时间：2026-10-21T16:11:28.847Z
中文译文更新时间：2026-11-06T19:19:17.612Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40arizeai/phoenix-otel
原文对照：https://npmcn.com/package/%40arizeai/phoenix-otel/?lang=original
项目主页：https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-otel
源码仓库：https://github.com/Arize-ai/phoenix

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：742 kB，69 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：12 个
- 首次发布：2025-10-23T17:39:06.532Z
- 最新版本发布：2026-10-21T16:11:28.427Z
- 近 30 天下载量：294247（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 16 个）

## 中文简介

Phoenix OpenTeleometry tracking SDK for Node.js — 注册追踪,手动跨度帮助器,以及LLM可观察性的背景属性

## 安装

```sh
npm install @arizeai/phoenix-otel
```

也可以使用：`pnpm add @arizeai/phoenix-otel`、`yarn add @arizeai/phoenix-otel`、`bun add @arizeai/phoenix-otel`

## README

# 

[![Arize Phoenix logo](https://raw.githubusercontent.com/Arize-ai/phoenix-assets/refs/heads/main/logos/Phoenix/phoenix.svg)](https://phoenix.arize.com/?utm_medium=github&utm_content=header_img&utm_campaign=phoenix-otel-ts)  
@arizeai/凤凰-otel

 [![NPM Version](https://img.shields.io/npm/v/@arizeai/phoenix-otel)](https://www.npmjs.com/package/@arizeai/phoenix-otel)[![Documentation](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white) ](https://arize.com/docs/phoenix)![](https://static.scarf.sh/a.png?x-pxid=8e8e8b34-7900-43fa-a38f-1f070bd48c64&page=js/packages/phoenix-otel/README.md)

用于节点.js应用的 OpenTeleometry 周围的轻量级包装器,简化了向它发送痕迹 [阿里兹·凤凰](https://github.com/Arize-ai/phoenix)。 。 。 . `@arizeai/phoenix-otel` 处理供应商登记和OTLP出口,然后全部再出口 `@arizeai/openinference-core` 帮助者从同一软件包路径上表面,这样您就可以从一个导入开始注册追踪和作者手册跨度 .

> **说明**: 此软件包正在积极开发中, API可能会有变化 .

## 特征

-   **简单设置** - 有合理默认的一行配置
-   **环境变量** - 从环境变量自动配置
-   **批处理** - 用于生产的内置分批加工
-   **包含的 Open 推论帮助** - 再出口 `withSpan`,横跨型包装(`traceChain`, (中文(简体) ), `traceAgent`, (中文(简体) ), `traceTool`, (中文(简体) ), `traceLLM`, (中文(简体) ), `traceRetriever`, (中文(简体) ), `traceReranker`, (中文(简体) ), `traceEmbedding`, (中文(简体) ), `traceGuardrail`, (中文(简体) ), `traceEvaluator`, (中文(简体) ), `tracePrompt`, (中文(简体) ), `observe`,上下文设置器,属性构建器, `OITracer`和工具助手
-   **安全包装器** - 再导出 OpenInference 的帮助者在被包裹的函数执行时解决默认的跟踪器,因此,模块-扫描包会随着全球提供者的改变而继续
-   **友好本地医生** - 船舶的文献和来源 `node_modules/@arizeai/phoenix-otel/`

## 安装

```bash
npm install @arizeai/phoenix-otel
```

要求节点.js 18或更新. 提供了无害环境管理和共同JS的切入点.

## 快速启动

### 基本用途

最简单的开始方式是使用 `register()` 与内在的追踪帮助者:

```typescript
import { register, traceChain } from "@arizeai/phoenix-otel";

const provider = register({
  projectName: "my-app",
});

const answerQuestion = traceChain(
  async (question: string) => `Handled: ${question}`,
  { name: "answer-question" }
);

await answerQuestion("What is Phoenix?");
await provider.shutdown();
```

`register()` 设立"凤凰"出口商. 追踪帮助者来自 `@arizeai/openinference-core`,通过 `@arizeai/phoenix-otel`。 。 。 .

### 生产设置

用于远程凤凰城生产:

```typescript
import { register } from "@arizeai/phoenix-otel";

register({
  projectName: "my-app",
  url: "https://your-phoenix-instance.com",
  apiKey: process.env.PHOENIX_API_KEY,
});
```

## 配置

### 环境变量

这个 `register` 函数自动从环境变量读取:

```bash
# For local Phoenix server (default)
export PHOENIX_COLLECTOR_ENDPOINT="http://localhost:6006"

# For a remote Phoenix instance
export PHOENIX_COLLECTOR_ENDPOINT="https://your-phoenix-instance.com"
export PHOENIX_API_KEY="your-api-key"
```

如果一个设置不是由参数或环境变量提供的, `register` 也寻找一个 `.env.phoenix` 当前工作目录中的文件——行走 上到文件系统根并停留在第一次对接时——读取 `PHOENIX_`\- 其前置密钥( dotenv格式) 。 环境变量总是 优先于文件; 设置 `PHOENIX_DISCOVER_CONFIG=false` 无法禁用 完全发现.

`PHOENIX_API_KEY` 财务报告和审定财务报表 `PHOENIX_CLIENT_HEADERS` 作为证书解决 组合。 明确 `Authorization` 头被保留了大小写不敏感。 如果一个 明确或进程证书与 `PHOENIX_COLLECTOR_ENDPOINT` 从 文件, 出口商警告一次, 并继续不记录证书 数值.

### 配置选项

这个 `register` 函数接受以下参数:

| 参数 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `projectName` | `string` | `"default"` | 在凤凰城组织痕迹的项目名称 |
| `url` | `string` | `"http://localhost:6006"` | 您的 Phoenix 实例的 URL |
| `apiKey` | `string` | `undefined` | 凤凰城认证的 API 密钥 |
| `headers` | `Record<string, string>` | `{}` | OTLP 请求的自定义信头 |
| `batch` | `boolean` | `true` | 使用分批处理(建议生产) |
| `instrumentations` | `Instrumentation[]` | `undefined` | 要注册的 OpenTelection 仪器阵列 |
| `global` | `boolean` | `true` | 在全球登记追踪提供者 |
| `diagLogLevel` | `DiagLogLevel` | `undefined` | 调试的诊断记录级别 |

### 自定义块处理器

`register()` 还接受 `spanProcessors`,它取代默认凤凰 出口商设置。 对于这些设置, 包根再导出 `OTLPTraceExporter`,而仅限无害环境管理 `@arizeai/phoenix-otel/vercel` 子路径 再出口 `@arizeai/openinference-vercel` (单位:千美元)`OpenInferenceSimpleSpanProcessor`, (中文(简体) ), `OpenInferenceBatchSpanProcessor`, (中文(简体) ), `isOpenInferenceSpan`类型)——不需要 安装基本软件包:

```typescript
import {
  ensureCollectorEndpoint,
  OTLPTraceExporter,
  register,
} from "@arizeai/phoenix-otel";
import {
  isOpenInferenceSpan,
  OpenInferenceSimpleSpanProcessor,
} from "@arizeai/phoenix-otel/vercel";

register({
  projectName: "my-agent",
  spanProcessors: [
    new OpenInferenceSimpleSpanProcessor({
      exporter: new OTLPTraceExporter({
        url: ensureCollectorEndpoint("http://localhost:6006"),
      }),
      // Export only AI spans, re-rooting any left orphaned by the filter
      spanFilter: isOpenInferenceSpan,
      reparentOrphanedSpans: true,
    }),
  ],
});
```

## 用法实例

### 使用Vercel AI SDK(v7+)

AI SDK v7 遥测注册是全过程的,所以应用程序配置 很明显。 安装 `ai` 财务报告和审定财务报表 `@ai-sdk/otel`,然后注册合并 和凤凰城的供应商一起 请求头抓取在下面已禁用 因为信头可以包含授权符和饼干.

```typescript
// instrumentation.ts
import { OpenTelemetry } from "@ai-sdk/otel";
import { registerTelemetry } from "ai";
import { register } from "@arizeai/phoenix-otel";

const provider = register({
  projectName: "my-ai-app",
});

registerTelemetry(
  new OpenTelemetry({
    tracer: provider.getTracer("@arizeai/phoenix-otel/ai-sdk"),
    headers: false,
  })
);
```

```typescript
// main.ts
import "./instrumentation.ts";
import { openai } from "@ai-sdk/openai";
import { generateText } from "ai";

const result = await generateText({
  model: openai("gpt-4o-mini"),
  prompt: "Write a short story about a cat.",
});
```

> **说明**: AI SDK v6 和 older 发出不同的跨度形状,而非 由捆绑的跨度处理器支持。 使用 `@arizeai/phoenix-otel` 1.x 运算 (与 `@arizeai/openinference-vercel` 2.x),用于AI SDK v6.

### 自动设备

自动设备通用库( 与 commonJS 合作最好):

```typescript
import { register } from "@arizeai/phoenix-otel";
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";

register({
  projectName: "my-express-app",
  instrumentations: [new HttpInstrumentation(), new ExpressInstrumentation()],
});
```

> **说明**: 通过 `instrumentations` 参数最好与 CommunityJS 项目相配合. 无害环境管理项目需要人工仪器.

### 带有 OpenAI (ESM) 的

关于无害环境管理项目,手动仪器库:

```typescript
// instrumentation.ts
import { register, registerInstrumentations } from "@arizeai/phoenix-otel";
import OpenAI from "openai";
import { OpenAIInstrumentation } from "@arizeai/openinference-instrumentation-openai";

register({
  projectName: "openai-app",
});

// Manual instrumentation for ESM
const instrumentation = new OpenAIInstrumentation();
instrumentation.manuallyInstrument(OpenAI);

registerInstrumentations({
  instrumentations: [instrumentation],
});
```

```typescript
// main.ts
import "./instrumentation.ts";
import OpenAI from "openai";

const openai = new OpenAI();

const response = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Hello!" }],
});
```

### 追踪帮助者

软件包包括 `withSpan` 加上跨度的简指 `traceChain`, (中文(简体) ), `traceAgent`,以及 `traceTool` 用于以 OpenInference 跨度来包装函数。 每个帮助者会自动记录输入,输出,出错和跨度类型.

```typescript
import {
  register,
  traceAgent,
  traceChain,
  traceTool,
  withSpan,
} from "@arizeai/phoenix-otel";

register({ projectName: "my-app" });

// traceTool — for tool calls and API lookups
const searchDocs = traceTool(
  async (query: string) => {
    const response = await fetch(`/api/search?q=${query}`);
    return response.json();
  },
  { name: "search-docs" }
);

// traceChain — for pipeline steps and orchestration
const summarize = traceChain(
  async (text: string) => `Summary of ${text.length} chars`,
  { name: "summarize" }
);

// traceAgent — for autonomous agent entry points
const supportAgent = traceAgent(
  async (question: string) => {
    const docs = await searchDocs(question);
    return summarize(JSON.stringify(docs));
  },
  { name: "support-agent" }
);

// withSpan — general purpose, specify kind explicitly
const retrieveDocs = withSpan(
  async (query: string) =>
    fetch(`/api/search?q=${query}`).then((r) => r.json()),
  { name: "retrieve-docs", kind: "RETRIEVER" }
);
```

这些帮助者在被包裹的函数运行时解决了默认的追踪器,因此模块范围所定义的追踪函数一直跟踪全球提供者的变化.

#### 额外的 Span-Kind 包装器

全套的 OpenInform 跨度类型由相匹配的包装包覆盖,每个包包都有一个缩写 `withSpan(fn, { ...options, kind })`。他们接受与 `traceChain`编号 :`traceAgent`编号 :`traceTool` (除此之外,其他一切) `kind`,这是预设的). 这些包装是标记的 `@experimental` 内 `@arizeai/openinference-core`。 。 。 .

| 包装 | 宽度 | 用它来 |
| --- | --- | --- |
| `traceLLM` | `LLM` | 语言-模式引用——聊天/文本完成和其他推断电话 |
| `traceRetriever` | `RETRIEVER` | 从知识库、向量存储或搜索索引获取文档(RAG) |
| `traceReranker` | `RERANKER` | 按相关性重新排列或评分候选人文件 |
| `traceEmbedding` | `EMBEDDING` | 将文本或数据转换为向量表示符 |
| `traceGuardrail` | `GUARDRAIL` | 安全、验证或政策检查(修改、PII、合规) |
| `traceEvaluator` | `EVALUATOR` | 计算产出质量——相关性、正确性或作为法官的LLM |
| `tracePrompt` | `PROMPT` | 在模式调用前构造、渲染或诱导提示 |

```typescript
import {
  traceEmbedding,
  traceEvaluator,
  traceGuardrail,
  traceLLM,
  tracePrompt,
  traceReranker,
  traceRetriever,
} from "@arizeai/phoenix-otel";

const retrieveDocuments = traceRetriever(
  async (query: string) => vectorStore.similaritySearch(query, 5),
  { name: "vector-search" }
);

const evaluateAnswer = traceEvaluator(
  async (question: string, answer: string) => judge.score({ question, answer }),
  { name: "answer-evaluation" }
);
```

### 自定义输入和输出处理

使用 `processInput` 财务报告和审定财务报表 `processOutput` 当你想要比默认的 JSON 序列化更丰富的 OpenInference 属性时 `input.value` 财务报告和审定财务报表 `output.value`。 。 。 .

```typescript
import {
  OpenInferenceSpanKind,
  getInputAttributes,
  getRetrieverAttributes,
  withSpan,
} from "@arizeai/phoenix-otel";

const retrieveDocs = withSpan(
  async (query: string) => [`Doc A for ${query}`, `Doc B for ${query}`],
  {
    name: "retrieve-docs",
    kind: OpenInferenceSpanKind.RETRIEVER,
    processInput: (query) => getInputAttributes(query),
    processOutput: (documents) =>
      getRetrieverAttributes({
        documents: documents.map((content, index) => ({
          id: `doc-${index}`,
          content,
        })),
      }),
  }
);
```

### 背景属性

使用上下文设置器将会话ID、用户ID、元数据以及标签传播到所有子进程 :

```typescript
import {
  context,
  register,
  setMetadata,
  setSession,
  setUser,
  traceChain,
} from "@arizeai/phoenix-otel";

register({ projectName: "my-app" });

const handleQuery = traceChain(async (query: string) => `Handled: ${query}`, {
  name: "handle-query",
});

// All spans inside context.with() inherit session, user, and metadata
await context.with(
  setMetadata(
    setUser(setSession(context.active(), { sessionId: "sess-123" }), {
      userId: "user-456",
    }),
    { environment: "production" }
  ),
  () => handleQuery("Hello")
);
```

可用的设置 : `setSession`, (中文(简体) ), `setUser`, (中文(简体) ), `setMetadata`, (中文(简体) ), `setTags`, (中文(简体) ), `setAttributes`, (中文(简体) ), `setPromptTemplate`。 。 。 .

如果您手动创建了带平版 OpenTelemetry 跟踪器的跨度, 请将所传播的上下文属性复制到跨度上 :

```typescript
import {
  context,
  getAttributesFromContext,
  register,
  trace,
} from "@arizeai/phoenix-otel";

register({ projectName: "my-app" });

const tracer = trace.getTracer("manual-tracer");
const span = tracer.startSpan("manual-span");
span.setAttributes(getAttributesFromContext(context.active()));
span.end();
```

### 装饰者

`observe` 在保存方法的同时将分类方法与跟踪相包裹 `this` 上下文。 使用TypeScript 5+标准装饰.

```typescript
import { OpenInferenceSpanKind, observe } from "@arizeai/phoenix-otel";

class ChatService {
  @observe({ kind: OpenInferenceSpanKind.CHAIN })
  async runWorkflow(message: string) {
    return `processed: ${message}`;
  }

  @observe({ name: "llm-call", kind: OpenInferenceSpanKind.LLM })
  async callModel(prompt: string) {
    return `model output for: ${prompt}`;
  }
}
```

### 属性助手 API

直接构建 OpenInference-相容跨度属性时使用属性助手 :

```typescript
import { getLLMAttributes, trace } from "@arizeai/phoenix-otel";

const tracer = trace.getTracer("llm-service");

tracer.startActiveSpan("llm-inference", (span) => {
  span.setAttributes(
    getLLMAttributes({
      provider: "openai",
      modelName: "gpt-4o-mini",
      inputMessages: [{ role: "user", content: "What is Phoenix?" }],
      outputMessages: [{ role: "assistant", content: "Phoenix is..." }],
      tokenCount: { prompt: 12, completion: 44, total: 56 },
      invocationParameters: { temperature: 0.2 },
    })
  );
  span.end();
});
```

可用的帮助包括:

-   `getLLMAttributes`
-   `getEmbeddingAttributes`
-   `getRetrieverAttributes`
-   `getToolAttributes`
-   `getMetadataAttributes`
-   `getInputAttributes` 编号 : `getOutputAttributes`
-   `defaultProcessInput` 编号 : `defaultProcessOutput`

### 跟踪配置和编辑

`OITracer` 覆盖一个 OpenTeleometry 跟踪器, 并可以在写出跨度前编辑或删除敏感的 Open Inference 属性 :

```typescript
import {
  OITracer,
  OpenInferenceSpanKind,
  trace,
  withSpan,
} from "@arizeai/phoenix-otel";

const tracer = new OITracer({
  tracer: trace.getTracer("my-service"),
  traceConfig: {
    hideInputs: true,
    hideOutputText: true,
    hideEmbeddingVectors: true,
    hideLLMTools: true,
    base64ImageMaxLength: 8_000,
  },
});

const safeLLMCall = withSpan(
  async (prompt: string) => `model response for ${prompt}`,
  {
    tracer,
    kind: OpenInferenceSpanKind.LLM,
    name: "safe-llm-call",
  }
);
```

支持的环境变量包括:

-   `OPENINFERENCE_HIDE_INPUTS`
-   `OPENINFERENCE_HIDE_OUTPUTS`
-   `OPENINFERENCE_HIDE_INPUT_MESSAGES`
-   `OPENINFERENCE_HIDE_OUTPUT_MESSAGES`
-   `OPENINFERENCE_HIDE_INPUT_IMAGES`
-   `OPENINFERENCE_HIDE_INPUT_TEXT`
-   `OPENINFERENCE_HIDE_OUTPUT_TEXT`
-   `OPENINFERENCE_HIDE_EMBEDDING_VECTORS`
-   `OPENINFERENCE_BASE64_IMAGE_MAX_LENGTH`
-   `OPENINFERENCE_HIDE_PROMPTS`
-   `OPENINFERENCE_HIDE_LLM_TOOLS`

### (原始内容存档于2013-10-12) (英语). Raw OpenTeleometry Spans

要全面控制属性和时间,请直接使用 OpenTeleometry API :

```typescript
import { register, trace, SpanStatusCode } from "@arizeai/phoenix-otel";

register({ projectName: "my-app" });

const tracer = trace.getTracer("my-service");

async function processOrder(orderId: string) {
  return tracer.startActiveSpan("process-order", async (span) => {
    try {
      span.setAttribute("order.id", orderId);
      const result = await fetchOrderDetails(orderId);
      span.setAttribute("order.status", result.status);
      return result;
    } catch (error) {
      span.recordException(error as Error);
      span.setStatus({ code: SpanStatusCode.ERROR });
      throw error;
    } finally {
      span.end();
    }
  });
}
```

### 辅助工具

该套装还从下列地点再出口小型公用事业: `@arizeai/openinference-core`数字 :

-   `withSafety({ fn, onError? })` 包裹一个函数并返回 `null` 错误
-   `safelyJSONStringify(value)` 财务报告和审定财务报表 `safelyJSONParse(value)` jSON行动

### 开发与生产

**发展** (带有调试记录) :

```typescript
import { DiagLogLevel, register } from "@arizeai/phoenix-otel";

register({
  projectName: "my-app-dev",
  url: "http://localhost:6006",
  batch: false, // Immediate span delivery for faster feedback
  diagLogLevel: DiagLogLevel.DEBUG,
});
```

**生产** (业绩优化):

```typescript
import { register } from "@arizeai/phoenix-otel";

register({
  projectName: "my-app-prod",
  url: "https://your-phoenix-instance.com",
  apiKey: process.env.PHOENIX_API_KEY,
  batch: true, // Batch processing for better performance
});
```

### 自定义信头

在 OTLP 请求中添加自定义信头 :

```typescript
import { register } from "@arizeai/phoenix-otel";

register({
  projectName: "my-app",
  url: "https://your-phoenix-instance.com",
  headers: {
    "X-Custom-Header": "custom-value",
    "X-Environment": process.env.NODE_ENV || "development",
  },
});
```

### 非全球提供者

明确使用供应商而不在全球登记:

```typescript
import { register } from "@arizeai/phoenix-otel";

const provider = register({
  projectName: "my-app",
  global: false,
});

// Use the provider explicitly
const tracer = provider.getTracer("my-tracer");
```

## 文档和源代码 `node_modules`

安装后,一个编码代理可以检查与软件包一起运出的确切版本道克和执行:

```text
node_modules/@arizeai/phoenix-otel/docs/
node_modules/@arizeai/phoenix-otel/src/
```

因为 `@arizeai/phoenix-otel` 再出口 `@arizeai/openinference-core`,依赖文件也是有用的本地参考文献:

```text
node_modules/@arizeai/openinference-core/docs/
node_modules/@arizeai/openinference-core/src/
```

## 编码代理技能

凤凰城的回购包括 [凤凰追踪技能](https://github.com/Arize-ai/phoenix/tree/main/.agents/skills/phoenix-tracing) 用于教学编码代理(Claude Code, Cursor等) 如何用 OpenInference tracking 来规范 LLM 应用程序。 安装于 :

```bash
npx skills add Arize-ai/phoenix --skill phoenix-tracing
```

追踪帮助者 :

```typescript
import {
  observe,
  traceAgent,
  traceChain,
  traceEmbedding,
  traceEvaluator,
  traceGuardrail,
  traceLLM,
  tracePrompt,
  traceReranker,
  traceRetriever,
  traceTool,
  withSpan,
} from "@arizeai/phoenix-otel";
```

上下文属性设置 :

```typescript
import {
  setAttributes,
  setMetadata,
  setPromptTemplate,
  setSession,
  setTags,
  setUser,
} from "@arizeai/phoenix-otel";
```

丰富跨度数据属性构建器 :

```typescript
import {
  defaultProcessInput,
  defaultProcessOutput,
  getEmbeddingAttributes,
  getLLMAttributes,
  getRetrieverAttributes,
  getToolAttributes,
} from "@arizeai/phoenix-otel";
```

编辑和工具助手:

```typescript
import {
  OITracer,
  safelyJSONParse,
  safelyJSONStringify,
  withSafety,
} from "@arizeai/phoenix-otel";
```

追踪帮助包会解决运行时的默认跟踪. 在实验中和在流程寿命期间互换供应商的任何工作流程中,这都保持与当前供应商相接的跨度.

## 文档

-   **[凤凰网文档](https://arize.com/docs/phoenix)** - 完成凤凰城文件
-   **[@ arizeai/ 凤凰邮包](https://arize.com/docs/phoenix/sdk-api-reference/typescript/arizeai-phoenix-otel)** - 这个软件包的破译网站文件
-   **[@ arizeai/ openinference- core 包文件](https://arize.com/docs/phoenix/sdk-api-reference/typescript/arizeai-openinference-core)** - 上游帮助者和属性构建者参考
-   **[OpenTeleometry 联合来文](https://opentelemetry.io/docs/languages/js/)** - JavaScript 的开口遥测
-   **[打开推论](https://github.com/Arize-ai/openinference)** - 开放式语义公约

## 社区

加入我们的社区,与成千上万的人工智能建设者建立联系:

-   加入我们的行列 [黑社会](https://join.slack.com/t/arize-ai/shared_invite/zt-3r07iavnk-ammtATWSlF0pSrd1DsMW7g)
-   \* 提问并提供反馈 _#凤凰支持 #_ 频道
-   留下一颗星星在我们身上 [GitHub 图像](https://github.com/Arize-ai/phoenix)
-   报告错误 [GitHub 问题](https://github.com/Arize-ai/phoenix/issues)
-   X 跟着我们 [页:1](https://twitter.com/ArizePhoenix)
-   跟着我们 [链接](https://www.linkedin.com/showcase/113218220)
-   看看我们 [路线图](https://github.com/orgs/Arize-ai/projects/45)

## 常见问题

### @arizeai/phoenix-otel 是什么？

Phoenix OpenTeleometry tracking SDK for Node\.js — 注册追踪,手动跨度帮助器,以及LLM可观察性的背景属性

### 如何安装 @arizeai/phoenix-otel？

在项目目录运行 npm install @arizeai/phoenix-otel，或使用 pnpm add / yarn add / bun add。

### @arizeai/phoenix-otel 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @arizeai/phoenix-otel 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @arizeai/phoenix-otel 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @arizeai/phoenix-otel 可以商用吗？

@arizeai/phoenix-otel 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @arizeai/phoenix-otel 的下载量有多少？

根据 npm 官方下载统计，@arizeai/phoenix-otel 在 2026/10/07 – 2026/11/05 这 30 天内被下载 294,247 次，日均约 9,808 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @arizeai/phoenix-otel 还在维护吗？

最新版本 2\.3\.0 发布于 2026/10/22（17 天前）；至今共发布 21 个版本，其中过去 12 个月发布了 16 个；首次发布于 2025/10/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

