Installation
npm
npm install @raindrop-ai/azure-openai openai
Quick Start
TypeScript
import { createRaindropAzureOpenAI } from "@raindrop-ai/azure-openai";
import { AzureOpenAI } from "openai";
const raindrop = createRaindropAzureOpenAI({
writeKey: "your-write-key",
userId: "user-123",
});
const client = new AzureOpenAI({
endpoint: "https://your-resource.openai.azure.com",
apiKey: "...",
apiVersion: "2024-10-21",
});
const wrapped = raindrop.wrap(client);
const response = await wrapped.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "What is the capital of France?" }],
});
console.log(response.choices[0].message.content);
await raindrop.shutdown();
What Gets Traced
- Chat completions — input messages (user text only), output text, model, token usage (prompt/completion)
- Finish reason —
azure_openai.finish_reason (stop, length, content_filter, tool_calls)
- Extended tokens —
ai.usage.cached_tokens (prompt cache hits) and ai.usage.thoughts_tokens (reasoning tokens for o1/o3 models)
- Errors — captured with error status, re-thrown to caller
Configuration
TypeScript
const raindrop = createRaindropAzureOpenAI({
writeKey: "your-write-key", // Optional: your Raindrop write key (omit to disable telemetry)
endpoint: "...", // Optional: custom Raindrop API endpoint
userId: "user-123", // Optional: associate events with a user
convoId: "convo-456", // Optional: conversation/thread ID
debug: false, // Optional: enable verbose logging
});
Flushing and Shutdown
await raindrop.flush(); // flush pending data
await raindrop.shutdown(); // flush + release resources
User Identification
raindrop.identify("user-123", { plan: "pro", name: "Alice" });
Tracking Signals
raindrop.trackSignal({
eventId: "evt-abc",
name: "thumbs_up",
signalType: "feedback",
sentiment: "POSITIVE",
comment: "Great response!",
});
Factory Function (Backwards-Compatible)
from raindrop_azure_openai import create_raindrop_azure_openai
raindrop = create_raindrop_azure_openai(api_key="rk_...", user_id="user-123")
# Returns a RaindropAzureOpenAI instance