{"_id":"@axon-ai/openai-tracer","_rev":"2-c3a951786e7a23189c71ffbbca43a264","name":"@axon-ai/openai-tracer","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.3":{"name":"@axon-ai/openai-tracer","version":"1.0.3","keywords":["openai","function-calling","tracing","agents","ai","monitoring"],"author":{"name":"Axon Team"},"license":"MIT","_id":"@axon-ai/openai-tracer@1.0.3","maintainers":[{"name":"feyikemiagboola","email":"agboolafeyikemi93@gmail.com"},{"name":"ldwerner","email":"lwerner10@gmail.com"},{"name":"jamieraedouglass","email":"Jamieraedouglass@gmail.com"}],"dist":{"shasum":"906ded5f2f97925ed569528f6914867f86c13e4a","tarball":"https://registry.npmjs.org/@axon-ai/openai-tracer/-/openai-tracer-1.0.3.tgz","fileCount":6,"integrity":"sha512-6xQNDeXhB/etzxUcYzU1Vwca+doz2D5ZixDDBCZN93G6K0KDkSajJ7yaaZTJikDibPnmAhhXBZB+3s7vjkI6tg==","signatures":[{"sig":"MEYCIQC4WykumaPfT1bqoWMSN11gB9MsN6fSbh+YoiTC5TfMiQIhALOncYCATBKrZORbUCIWFNQDRaOdUwBmwcBcAhN1qL5Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44378},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"041ff34bcd3d9c95ecb2a0d51d6b4eac6938afb8","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts --clean","type-check":"tsc --noEmit"},"_npmUser":{"name":"ldwerner","email":"lwerner10@gmail.com"},"_npmVersion":"11.6.2","description":"OpenAI Function Calling tracer for Axon","directories":{},"_nodeVersion":"22.20.0","dependencies":{"uuid":"^9.0.1","socket.io-client":"^4.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.3","@types/uuid":"^9.0.7"},"peerDependencies":{"openai":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-tracer_1.0.3_1763660267224_0.8632768398114534","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Deprecated: Axon is now OTLP-native — use OpenLLMetry/OpenInference pointed at http://localhost:4000"}},"time":{"created":"2025-11-20T17:37:47.131Z","modified":"2026-06-20T14:35:16.641Z","1.0.3":"2025-11-20T17:37:47.415Z"},"author":{"name":"Axon Team"},"license":"MIT","keywords":["openai","function-calling","tracing","agents","ai","monitoring"],"description":"OpenAI Function Calling tracer for Axon","maintainers":[{"name":"feyikemiagboola","email":"agboolafeyikemi93@gmail.com"},{"name":"jamieraedouglass","email":"Jamieraedouglass@gmail.com"},{"name":"ldwerner","email":"lwerner10@gmail.com"}],"readme":"# OpenAI Function Calling Tracer\n\nA comprehensive tracing solution for OpenAI Function Calling agents, providing detailed monitoring, cost analysis, and performance insights.\n\n## 🚀 Features\n\n- **Function Call Tracking**: Monitor all function calls with detailed parameters and results\n- **Tool Selection Analysis**: Track which tools are selected and why\n- **Cost Calculation**: Automatic cost calculation based on token usage and model pricing\n- **Performance Metrics**: Latency tracking and performance analysis\n- **Error Monitoring**: Comprehensive error tracking and debugging\n- **Real-time Dashboard**: Live visualization of agent execution\n- **Conversation Flow**: Track multi-turn conversations and context\n\n## 📦 Installation\n\n```bash\nnpm install @axon-ai/openai-tracer openai\n```\n\n## 🎯 Quick Start\n\n### Basic Usage\n\n```javascript\nimport OpenAI from 'openai';\nimport { createOpenAITracer, TracedOpenAI } from '@axon-ai/openai-tracer';\n\n// Initialize OpenAI client\nconst openai = new OpenAI({\n  apiKey: process.env.OPENAI_API_KEY,\n});\n\n// Create tracer\nconst tracer = createOpenAITracer({\n  projectName: 'my-agent',\n  metadata: {\n    version: '1.0.0',\n    environment: 'production',\n  },\n});\n\n// Create traced OpenAI client\nconst tracedOpenAI = new TracedOpenAI(openai, tracer);\n\n// Use the traced client\nconst response = await tracedOpenAI.createChatCompletion({\n  model: 'gpt-4',\n  messages: [\n    { role: 'user', content: 'What\\'s the weather in NYC?' }\n  ],\n  tools: [/* your tools */],\n});\n```\n\n### Advanced Configuration\n\n```javascript\nconst tracer = createOpenAITracer({\n  projectName: 'weather-agent',\n  endpoint: 'http://localhost:3000', // Custom trace server\n  metadata: {\n    agentType: 'weather',\n    version: '2.1.0',\n    environment: 'staging',\n    team: 'ai-platform',\n  },\n  autoConnect: true, // Auto-connect to trace server\n});\n```\n\n## 🔧 API Reference\n\n### OpenAITracer\n\n#### Constructor Options\n\n```typescript\ninterface OpenAITraceConfig {\n  projectName?: string;        // Project identifier\n  endpoint?: string;          // Trace server endpoint\n  metadata?: Record<string, any>; // Custom metadata\n  autoConnect?: boolean;      // Auto-connect to server\n}\n```\n\n#### Methods\n\n##### `traceFunctionCallStart(functionName, arguments, model, messages, tools?)`\nTrack the start of a function call.\n\n##### `traceFunctionCallEnd(eventId, result, cost, latency, tokens?)`\nTrack the completion of a function call.\n\n##### `traceToolSelection(availableTools, selectedTool, reasoning?, confidence?)`\nTrack tool selection decisions.\n\n##### `traceConversationTurn(userMessage, assistantResponse, model, tokens?, cost?)`\nTrack conversation turns.\n\n##### `traceError(error, context, functionName?, arguments?)`\nTrack errors and exceptions.\n\n### TracedOpenAI\n\nA wrapper around the OpenAI client that automatically traces all interactions.\n\n#### Methods\n\n##### `createChatCompletion(params)`\nEnhanced chat completion with automatic tracing.\n\n## 📊 Dashboard Integration\n\nThe tracer automatically sends data to the Agent Trace dashboard for visualization:\n\n- **Function Call Flow**: Visual representation of function calls\n- **Cost Analysis**: Detailed cost breakdown by function and model\n- **Performance Metrics**: Latency and throughput analysis\n- **Tool Usage**: Which tools are used most frequently\n- **Error Tracking**: Error rates and debugging information\n\n## 🎨 Example Agents\n\n### Weather Agent\n\n```javascript\nimport { createOpenAITracer, TracedOpenAI } from '@axon-ai/openai-tracer';\n\nconst tracer = createOpenAITracer({ projectName: 'weather-agent' });\nconst tracedOpenAI = new TracedOpenAI(openai, tracer);\n\nconst tools = [\n  {\n    type: 'function',\n    function: {\n      name: 'getCurrentWeather',\n      description: 'Get current weather',\n      parameters: {\n        type: 'object',\n        properties: {\n          location: { type: 'string' }\n        }\n      }\n    }\n  }\n];\n\nconst response = await tracedOpenAI.createChatCompletion({\n  model: 'gpt-4',\n  messages: [{ role: 'user', content: 'Weather in NYC?' }],\n  tools,\n});\n```\n\n### Stock Analysis Agent\n\n```javascript\nconst tracer = createOpenAITracer({ projectName: 'stock-agent' });\nconst tracedOpenAI = new TracedOpenAI(openai, tracer);\n\nconst tools = [\n  {\n    type: 'function',\n    function: {\n      name: 'getStockPrice',\n      description: 'Get stock price',\n      parameters: {\n        type: 'object',\n        properties: {\n          symbol: { type: 'string' }\n        }\n      }\n    }\n  }\n];\n\nconst response = await tracedOpenAI.createChatCompletion({\n  model: 'gpt-4',\n  messages: [{ role: 'user', content: 'AAPL stock price?' }],\n  tools,\n});\n```\n\n## 🔍 Event Types\n\nThe tracer tracks several types of events:\n\n### Function Call Events\n- `function_call_start`: When a function call begins\n- `function_call_end`: When a function call completes\n\n### Tool Selection Events\n- `tool_selection`: When the model selects a tool\n\n### Conversation Events\n- `conversation_turn`: Each user-assistant interaction\n\n### Error Events\n- `error`: When errors occur during execution\n\n## 💰 Cost Calculation\n\nAutomatic cost calculation based on:\n\n- **Model Pricing**: Current OpenAI pricing for different models\n- **Token Usage**: Prompt and completion tokens\n- **Function Calls**: Additional costs for function calling\n\nSupported models:\n- GPT-4: $0.03/1K prompt, $0.06/1K completion\n- GPT-4 Turbo: $0.01/1K prompt, $0.03/1K completion\n- GPT-3.5 Turbo: $0.001/1K prompt, $0.002/1K completion\n\n## 🚨 Error Handling\n\nThe tracer provides comprehensive error tracking:\n\n```javascript\ntry {\n  const response = await tracedOpenAI.createChatCompletion(params);\n} catch (error) {\n  // Error is automatically traced\n  console.error('API call failed:', error);\n}\n```\n\n## 🔧 Development\n\n### Building\n\n```bash\nnpm run build\n```\n\n### Development Mode\n\n```bash\nnpm run dev\n```\n\n### Testing\n\n```bash\nnpm test\n```\n\n## 📈 Performance\n\nThe tracer is designed for minimal overhead:\n\n- **Async Operations**: Non-blocking event queuing\n- **Batch Processing**: Efficient event batching\n- **Memory Management**: Automatic cleanup of old events\n- **Network Optimization**: Compressed data transmission\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n## 📄 License\n\nMIT License - see LICENSE file for details.\n\n## 🔄 Changelog\n\n### v1.0.0\n- Initial release\n- OpenAI Function Calling support\n- Cost calculation\n- Performance metrics\n- Dashboard integration\n","readmeFilename":"README.md"}