OpenInform 人类仪器
JavaScript 自动仪器库 安东尼 SDK 软件
本套件针对以下 Anthropic SDK 方法执行 OpenInform track:
messages.create(包括流出)beta.messages.create(包括服务器侧回落和流出)messages.countTokens财务报告和审定财务报表beta.messages.countTokensbeta.messages.toolRunner(一个CHAIN涵盖每个请求的LLM间隔和每个工具运行的TOOL间隔)
messages.stream() 财务报告和审定财务报表 beta.messages.stream() 追踪到 create客户 @anthropic-ai/bedrock-sdk, (中文(简体) ), @anthropic-ai/vertex-sdk 财务报告和审定财务报表 @anthropic-ai/foundry-sdk 也追踪,与 llm.provider 设置为 aws, (中文(简体) ), google 财务报告和审定财务报表 azure。 。 。 .
这些痕迹是完全相容的 OpenTeleometry 并可以发送到 OpenTeleometry 收藏器取景,例如 阿里兹·凤凰 或者说 调整 AX。 。 。 .
人类SDK的西班牙人
@anthropic-ai/sdk 0.134.0,并随后为每次API呼叫创建自己的OpenTeleometry跨度(anthropic.messages.create 除非它被关闭 openTelemetry: false 或者说 ANTHROPIC_OPEN_TELEMETRY=false。对于这种仪器跟踪的调用,SDK的跨度被 OpenInference LLM 跨度所取代:SDK 记录没有跨度,其请求带有LLM 跨度的微量上下文,而HTTP 跨度是LLM 跨度的儿童. 要求这种仪器不能追踪,例如: models.list()保持SDK的长度 A 类 beta.messages.toolRunner() 运行还保持了SDK的工具跑道和工具跨度,这些不是模型调用.
安装
npm install @arizeai/openinference-instrumentation-anthropic
快速启动
安装所需的软件包 :
npm install @arizeai/openinference-instrumentation-anthropic @arizeai/openinference-semantic-conventions @anthropic-ai/sdk @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-proto @opentelemetry/sdk-trace-node @opentelemetry/semantic-conventions
在应用程序中设置仪器 :
import { NodeSDK, resources } from "@opentelemetry/sdk-node";
import { AnthropicInstrumentation } from "@arizeai/openinference-instrumentation-anthropic";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node";
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
import Anthropic from "@anthropic-ai/sdk";
// Configure the SDK with Anthropic instrumentation
const instrumentation = new AnthropicInstrumentation({
// Optional: configure trace settings
traceConfig: {
// hideInputs: true,
// hideOutputs: true,
},
});
// necessary when instrumenting in an ESM environment
instrumentation.manuallyInstrument(Anthropic);
const sdk = new NodeSDK({
spanProcessors: [
new SimpleSpanProcessor(
new OTLPTraceExporter({
url: "http://localhost:6006/v1/traces",
}),
),
],
resource: resources.resourceFromAttributes({
[ATTR_SERVICE_NAME]: "anthropic-service",
[SEMRESATTRS_PROJECT_NAME]: "anthropic-service",
}),
instrumentations: [instrumentation],
});
// Initialize the SDK
sdk.start();
// Now use Anthropic as normal
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const message = await anthropic.messages.create({
model: "claude-3-5-haiku-latest",
max_tokens: 1000,
messages: [{ role: "user", content: "Hello, Claude!" }],
});
console.log(message.content);
sdk.shutdown();
配置
这个 AnthropicInstrumentation 构造器接受以下选项:
instrumentationConfig: 标准开远仪表配置traceConfig: 遮盖/编辑敏感信息的 OpenInform 特定微量配置tracerProvider: 可选的自定义跟踪提供者
支持的特性
- 消息 API: 全力支持
anthropic.messages.create() - Beta 信件 API: 全力支持
anthropic.beta.messages.create() - 服务器后退: 请求的捕获和服务模型跨越后退边界,记录
fallback作为信件内容的交割(降级模式和拒绝类别),并接受服务于答复的尝试的象征性计数 - 拒绝: 记录
llm.finish_reason,因此分类器下降(stop_reason: "refusal")在跨度上可见 - 流线: 自动处理流式响应
- 工具的使用: 获取工具/函数调用信息
- 调用: 可用时记录输入/输出符号计数
- 处理错误: 正确错误记录和跨度状态管理
语义公约
该仪器遵循 开源语义公约 用于LLM可观察性,捕获:
- 模型名称和提供者信息
- 输入/输出信息和内容
- Token 使用统计
- 调用细节的工具
- 使用参数
实例
要运行示例, 请运行以下命令:
cd js/packages/openinference-instrumentation-anthropic
pnpm install
pnpm -r build
pnpx tsx examples/basic-usage.ts # or streaming.ts, tool-use.ts, etc
见 实例 更详细的使用示例目录.
要练习服务器侧倒置 :
export ANTHROPIC_API_KEY=your-api-key
# Real Anthropic beta request that triggers a reasoning-extraction fallback
pnpm exec tsx examples/server-side-fallback.ts
# Deterministic SSE fixture that guarantees a mid-stream fallback boundary
pnpm exec tsx examples/server-side-fallback-streaming.ts
许可证
阿帕奇 - 2.0