Skip to main content
Select language: current language is Spanish
Buscar o preguntar a Copilot
Abrir menú

Instrumentación de OpenTelemetry para el SDK de Copilot

Obtenga información sobre cómo agregar el seguimiento de OpenTelemetry a las SDK de Copilot aplicaciones.

¿Quién puede utilizar esta característica?

SDK de GitHub Copilot está disponible con todos los Copilot planes.

Nota:

          SDK de Copilot actualmente está en Versión preliminar técnica. La funcionalidad y la disponibilidad están sujetas a cambios.
          SDK de GitHub Copilot tiene compatibilidad integrada para configurar OpenTelemetry en el proceso de la CLI y propagar contexto de seguimiento de W3C entre el SDK y la CLI.

Para obtener ejemplos en Python, Go y .NET, consulte el github/copilot-sdkrepositorio.

Compatibilidad con telemetría integrada

Para participar en la telemetría, proporcione una TelemetryConfig crear el cliente:

TypeScript
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient({
  telemetry: {
    otlpEndpoint: "http://localhost:4318",
  },
});

Opciones de TelemetryConfig

OpciónNode.js.Descripción
Punto de conexión de OTLPotlpEndpointDirección URL del punto de conexión HTTP de OTLP
Ruta de acceso del archivofilePathRuta de acceso de archivo para salida de seguimiento de líneas JSON
Tipo de exportadorexporterType
          `"otlp-http"` o `"file"` |

| Nombre de origen | sourceName | Nombre del ámbito de instrumentación | | Captura de contenido | captureContent | Si se va a capturar el contenido del mensaje |

Propagación del contexto de rastreo

Nota:

La mayoría de los usuarios no necesitan esto. La TelemetryConfig anterior es lo único que necesita para recopilar seguimientos desde la CLI. La propagación del contexto de seguimiento es una característica avanzada para aplicaciones que crean sus propios intervalos de OpenTelemetry y quieren que aparezcan en el mismo seguimiento distribuido que los intervalos de la CLI.

El SDK puede propagar el contexto de seguimiento de W3C (traceparent/tracestate) en cargas JSON-RPC para que las trazas de la aplicación y las trazas de la CLI estén vinculadas en un seguimiento distribuido. Esto resulta útil cuando, por ejemplo, se desea mostrar la llamada del SDK como elemento secundario del intervalo de control de solicitudes.

Para obtener un diagrama de secuencia detallado del flujo de sesión, consulte el github/copilot-sdkrepositorio.

SDK a CLI (saliente)

Proporcione una devolución de llamada de onGetTraceContext en las opciones del cliente. Solo es necesario si la aplicación ya utiliza @opentelemetry/api y desea vincular los intervalos con los intervalos de la CLI. El SDK llama a esta devolución de llamada antes que a las session.create, session.resume y session.send RPC:

TypeScript
import { CopilotClient } from "@github/copilot-sdk";
import { propagation, context } from "@opentelemetry/api";

const client = new CopilotClient({
  telemetry: { otlpEndpoint: "http://localhost:4318" },
  onGetTraceContext: () => {
    const carrier: Record<string, string> = {};
    propagation.inject(context.active(), carrier);
    return carrier; // { traceparent: "00-...", tracestate: "..." }
  },
});

CLI a SDK (entrante)

Cuando la CLI invoca un controlador de herramientas, el traceparent y tracestate del ámbito de la CLI están disponibles. Dado que el SDK no tiene ninguna dependencia de OpenTelemetry, se pasan como cadenas sin formato en el ToolInvocation objeto . Restaure el contexto manualmente si es necesario:

TypeScript
import { propagation, context, trace } from "@opentelemetry/api";

session.registerTool(myTool, async (args, invocation) => {
  // Restore the CLI's trace context as the active context
  const carrier = {
    traceparent: invocation.traceparent,
    tracestate: invocation.tracestate,
  };
  const parentCtx = propagation.extract(context.active(), carrier);

  // Create a child span under the CLI's span
  const tracer = trace.getTracer("my-app");
  return context.with(parentCtx, () =>
    tracer.startActiveSpan("my-tool", async (span) => {
      try {
        const result = await doWork(args);
        return result;
      } finally {
        span.end();
      }
    })
  );
});

Lectura adicional

  •         [Convenciones semánticas de OpenTelemetry GenAI](https://opentelemetry.io/docs/specs/semconv/gen-ai/) en la documentación de OpenTelemetry
    
  •         [Convenciones semánticas de MCP de OpenTelemetry](https://opentelemetry.io/docs/specs/semconv/gen-ai/mcp/) en la documentación de OpenTelemetry
    
  •         [SDK de Python de OpenTelemetry](https://opentelemetry.io/docs/instrumentation/python/) en la documentación de OpenTelemetry
    
Morty Proxy This is a proxified and sanitized view of the page, visit original site.