Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.keywordsai.co/llms.txt

Use this file to discover all available pages before exploring further.

Overview

getCurrentSpanId() returns the span ID of the currently active span. Useful for detailed logging, debugging, and correlating specific operations.

Signature

getCurrentSpanId(): string | undefined

Basic Usage

import { KeywordsAITelemetry } from '@keywordsai/tracing';

const keywordsAi = new KeywordsAITelemetry({
    apiKey: process.env.KEYWORDSAI_API_KEY,
    appName: 'my-app'
});

await keywordsAi.initialize();

await keywordsAi.withTask(
    { name: 'data_processing' },
    async () => {
        const client = keywordsAi.getClient();
        const spanId = client.getCurrentSpanId();
        
        console.log(`Processing in span: ${spanId}`);
        
        return 'done';
    }
);

Trace and Span IDs Together

await keywordsAi.withWorkflow(
    { name: 'complex_workflow' },
    async () => {
        const client = keywordsAi.getClient();
        const traceId = client.getCurrentTraceId();
        const spanId = client.getCurrentSpanId();
        
        console.log(`Trace: ${traceId}, Span: ${spanId}`);
        
        await keywordsAi.withTask(
            { name: 'subtask' },
            async () => {
                const subSpanId = client.getCurrentSpanId();
                console.log(`Subtask Span: ${subSpanId}`);
                
                return 'done';
            }
        );
        
        return 'workflow_complete';
    }
);

Detailed Logging

await keywordsAi.withAgent(
    { name: 'research_agent' },
    async () => {
        const client = keywordsAi.getClient();
        
        await keywordsAi.withTool(
            { name: 'web_search' },
            async () => {
                const spanId = client.getCurrentSpanId();
                console.log(`[Span:${spanId}] Executing web search`);
                
                const results = await searchWeb('AI trends');
                
                console.log(`[Span:${spanId}] Found ${results.length} results`);
                
                return results;
            }
        );
        
        return 'agent_complete';
    }
);

Error Context

await keywordsAi.withTask(
    { name: 'database_query' },
    async () => {
        const client = keywordsAi.getClient();
        const spanId = client.getCurrentSpanId();
        
        try {
            return await db.query('SELECT * FROM users');
        } catch (error) {
            console.error(`[Span:${spanId}] Database query failed:`, error);
            client.recordSpanException(error);
            throw error;
        }
    }
);

Return Value

Returns the current span ID as a string, or undefined if no span is active.

Best Practices

  • Use span IDs for granular operation tracking
  • Include span IDs in detailed logs for precise debugging
  • Combine with trace IDs for complete context
  • Only call within an active span (workflow, task, agent, or tool)
  • Different spans have different IDs, even within the same trace