트레이스에서 사용자 추적
트레이스에서 사용자 추적 (Track Users in Traces)
관측성을 위해 트레이스에 사용자 정보를 추적하는 방법을 다루는 페이지예요. 트레이스에 사용자 ID를 설정하면 LLM 앱과의 사용자 상호작용을 추적할 수 있어요. 각 사용자가 얼마나 많은 토큰 비용을 일으키는지, 누가 앱과 가장 많이 상호작용했는지 등을 알 수 있죠.
출처: 문서
본문
개요 (Overview)
트레이스에 사용자 ID를 설정해서 LLM 앱과의 사용자 상호작용을 추적할 수 있어요. 이를 통해 각 사용자가 얼마나 많은 토큰 비용을 일으키는지, 누가 LLM 앱과 가장 많이 상호작용했는지 등을 추적할 수 있어요.
이 패턴은 자동 계측된 통합에서도 동작해요. 트레이스 컨텍스트는 래퍼 스팬을 만들지 않으면서 통합이 만든 트레이스에 사용자 ID를 추가해요.
런타임에서 사용자 설정 (Set Users at Runtime)
Python
from langchain_openai import ChatOpenAI
from confident_trace import init, trace_context
init()
model = ChatOpenAI(model="gpt-4o")
def llm_app(query: str, user_id: str):
with trace_context(user_id=user_id):
return model.invoke(query)
user_id는 애플리케이션의 안정적인 사용자 또는 계정 멤버 ID가 될 수도 있고, 심지어 이메일 주소일 수도 있어요. 모든 것이 UI에서 보이고 검색 가능해요.
TypeScript
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { init, traceContext } from "confident-trace";
init();
const llmApp = (query: string, userId: string) =>
traceContext({ userId }, () =>
generateText({ model: openai("gpt-4o"), prompt: query }),
);
userId는 애플리케이션의 안정적인 사용자 또는 계정 멤버 ID가 될 수도 있고, 심지어 이메일 주소일 수도 있어요. 모든 것이 UI에서 보이고 검색 가능해요.
Vercel AI SDK 호출이 계측되도록 Node preload로 진입점을 실행하세요.
트레이스 컨텍스트는 그 안에서 시작된 트레이스에 기본값을 공급해요. 트레이스에 이미 사용자 ID가 있다면 기존 값이 이겨요. 전체 동작은 Update Trace Properties에서 볼 수 있어요.
사용자 필드 설정 (Set User Fields)
관측소에서 트레이스를 쉽게 식별하도록 사용자에 표시 이름을 붙일 수 있어요. user 객체를 넘기면 ID와 이름을 함께 설정할 수 있어요:
Python
with trace_context(user={"id": "user-42", "name": "Marta"}):
return model.invoke(query)
TypeScript
return traceContext(
{ user: { id: "user-42", name: "Marta" } },
() => model.invoke(query),
);
사용자를 식별하는 방법은 두 가지 중 하나를 골라 쓰면 돼요:
- ID만 필요할 때는
user_id/userId를 넘겨요. - 표시 이름도 함께 설정하고 싶다면
user객체를 넘겨요. 이 객체는id를 포함하고name도 넣을 수 있어요.
같은 두 옵션은 turn(), 트레이스 컨텍스트, 그리고 트레이스 업데이트 헬퍼에서도 쓸 수 있어요. Python은 span()을 만들 때도 이 값들을 받아들이고, TypeScript의 span() 또는 withSpan() 콜백 안에서는 updateTrace()를 호출하면 돼요.
다음 단계 (Next Steps)
Threads
멀티턴 표시와 평가를 위해 사용자의 트레이스를 대화로 묶어요.
Customers
같은 계정·조직·테넌트에 속한 사용자들을 그룹화해요.
더 알아보기
- Customers — 고객 단위로 활동·품질·비용을 비교해요.
- Thread Traces — 트레이스를 대화로 묶어 멀티턴을 평가해요.