Reference · Snippet · typescript

Pass request ID through LLM calls

Last updated

tracingnextjsobservability

export async function POST(req: Request) {
  const requestId = req.headers.get("x-request-id") ?? crypto.randomUUID();
  const span = tracer.startSpan("chat", { attributes: { requestId } });

  try {
    const embedSpan = tracer.startSpan("embed_query", { parent: span });
    const vector = await embed(query, { headers: { "x-request-id": requestId } });
    embedSpan.end();

    const retrieveSpan = tracer.startSpan("retrieve", { parent: span });
    const chunks = await vectorDb.search(vector);
    retrieveSpan.setAttribute("chunk_count", chunks.length);
    retrieveSpan.end();

    // ...
  } finally {
    span.end();
  }
}