@arizeai/openinference-instrumentation-bedrock-agent-runtime
v1.1.14
Published
OpenInference instrumentation for AWS Bedrock Agent Runtime
Downloads
5,318
Readme
OpenInference Instrumentation for AWS Bedrock Agent Runtime
This module provides automatic instrumentation for the AWS Bedrock Agent Runtime Client which may be used in conjunction with @opentelemetry/sdk-trace-node.
Installation
npm install --save @arizeai/openinference-instrumentation-bedrock-agent-runtimeUsage
To load the Bedrock Agent Runtime instrumentation, specify it in the registerInstrumentations call along with any additional instrumentation you wish to enable.
import { NodeTracerProvider } = from "@opentelemetry/sdk-trace-node";
import {
BedrockAgentInstrumentation,
} = from "@arizeai/openinference-instrumentation-bedrock-agent-runtime";
import { registerInstrumentations } = "@opentelemetry/instrumentation";
const provider = new NodeTracerProvider();
provider.register();
registerInstrumentations({
instrumentations: [new BedrockAgentInstrumentation()],
});Manual Instrumentation
For cases where import order is difficult to control, you can manually instrument the Bedrock Agent Runtime client:
import { BedrockAgentInstrumentation } from "@arizeai/openinference-instrumentation-bedrock-agent-runtime";
import * as bedrockAgentRuntime from "@aws-sdk/client-bedrock-agent-runtime";
const instrumentation = new BedrockAgentInstrumentation();
instrumentation.manuallyInstrument(bedrockAgentRuntime);
// Now use the Bedrock Agent Runtime client as normal
const client = new bedrockAgentRuntime.BedrockAgentRuntimeClient({
region: "us-east-1",
});Examples
To run an example, run the following commands:
cd js/packages/openinference-instrumentation-bedrock-agent-runtime
pnpm install
pnpm -r build
npx -y tsx examples/run-invoke-agent.tsFor more information on OpenTelemetry Node.js SDK, see the OpenTelemetry Node.js SDK documentation.
Using a Custom Tracer Provider
You can specify a custom tracer provider when creating the Bedrock Agent Runtime instrumentation. This is useful when you want to use a non-global tracer provider or have more control over the tracing configuration.
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { Resource } from "@opentelemetry/resources";
import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
import { BedrockAgentInstrumentation } from "@arizeai/openinference-instrumentation-bedrock-agent-runtime";
import { registerInstrumentations } from "@opentelemetry/instrumentation";
// Create a custom tracer provider
const customTracerProvider = new NodeTracerProvider({
resource: new Resource({
[SEMRESATTRS_PROJECT_NAME]: "my-bedrock-agent-project",
}),
});
// Pass the custom tracer provider to the instrumentation
const bedrockAgentInstrumentation = new BedrockAgentInstrumentation({
tracerProvider: customTracerProvider,
});
// Register the instrumentation with the custom tracer provider
registerInstrumentations({
instrumentations: [bedrockAgentInstrumentation],
tracerProvider: customTracerProvider,
});Alternatively, you can set the tracer provider after creating the instrumentation:
const bedrockAgentInstrumentation = new BedrockAgentInstrumentation();
bedrockAgentInstrumentation.setTracerProvider(customTracerProvider);Compatibility
@arizeai/openinference-instrumentation-bedrock-agent-runtime is compatible with the following versions of the @aws-sdk/client-bedrock-agent-runtime package:
| AWS SDK Version | OpenInference Instrumentation Version | | --------------- | ------------------------------------- | | ^3.0.0 | ^0.2.0 |
