Turn, LLM, Tool, SubAgent)에 맞춤형 메타데이터를 속성으로 추가할 수 있습니다. 속성은 span에 연결된 키-값 형식의 정보입니다. 속성을 사용하여 사용자 ID, 테넌트, 실험 이름, 환경 레이블 등의 컨텍스트 정보를 에이전트 span에 기록하면, CoreWeave Agent Lens UI에서 이 메타데이터를 기준으로 에이전트 활동을 필터링하고 그룹화할 수 있습니다.
set_attributes()(Python) 또는 setAttributes()(TypeScript)를 사용하여 개별 span에 속성을 설정하거나, 대화에서 생성되는 모든 span에 적용되는 대화 수준 속성을 설정할 수 있습니다. set_attributes는 OpenTelemetry(OTel) span API의 Span.set_attributes 메서드와 동일한 방식으로 동작합니다. Agent Lens SDK는 OTel span을 생성하고 모든 속성을 저장하므로, 이 속성은 Agent Lens에서 언제든 쿼리할 수 있습니다.
이 페이지의 예시는 에이전트 트레이스하기의 설명에 따라 SDK를 설치하고 초기화했다고 가정합니다.
span에 속성 설정하기
set_attributes()(Python) 또는 setAttributes()(TypeScript)를 사용하여 단일 span에 임의의 속성을 지정하세요. 키가 하나든 여러 개든 딕셔너리 또는 객체로 전달하세요. 이 메서드는 span을 반환하므로 호출을 체이닝할 수 있습니다.
- Python
- TypeScript
- Python
- TypeScript
weave.* 키는 Agent Lens 기본 제공 필드에 매핑되고, gen_ai.* 키는 OpenTelemetry GenAI 시맨틱 규칙 필드에 매핑됩니다. 앞의 예시에서 weave.display_name은 Agent Lens UI에 표시되는 span의 표시 이름을 설정하는 예약 키입니다. 필터링하거나 그룹화할 임의의 메타데이터에는 user_id나 tenant처럼 직접 정의한 키를 사용하세요. Agent Lens는 이러한 키를 필터링 가능한 맞춤형 속성으로 저장합니다.
span 실행 중 발생한 일 기록하기
속성을 사용하면 권한 프롬프트나 그 결과처럼 span이 실행되는 동안 발생한 일도 기록할 수 있습니다. 해당 일이 발생한 시점, 즉 span이 아직 기록 중일 때 속성을 설정하세요.- Python
- TypeScript
permission.granted_at처럼 시각을 별도의 속성으로 기록하세요.
OpenTelemetry가 Span Event API를 사용 중단함에 따라 SDK의
add_event()(Python) 및 addEvent()(TypeScript) 메서드도 사용 중단되었습니다. 이 데이터는 속성으로 기록하세요.대화의 모든 span에 속성 설정하기
span마다 속성을 하나씩 지정하는 방식은 span별 메타데이터에 적합하지만, 대화 전체에 적용되는 메타데이터도 있습니다. 대화에서 생성되는 모든 span에 동일한 속성을 적용하려면 대화를 시작할 때attributes를 전달하세요. 배포 이름이나 환경처럼 대화 전체에 해당하는 메타데이터를 전파할 때 유용합니다.
- Python
- TypeScript
span별 속성과 마찬가지로 대화 속성에도 직접 정의한 맞춤형 키를 사용하세요. 에이전트 이름, 대화 이름, 모델 등 시맨틱 규칙 필드는
attributes가 아니라 유형이 지정된 전용 매개변수(agent_name, conversation_name, model)로 설정하세요. 예약된 gen_ai.* 및 weave.* 접두사로 시작하는 키는 사용하지 마세요. Agent Lens는 수집 과정에서 이러한 키를 유형 지정 필드로 추출하므로, 예약된 키에 맞춤형 값을 지정하는 것은 지원되지 않습니다.속성을 설정할 수 있는 시점
속성은 span이 기록 중일 때, 즉 span이 시작된 후 종료되기 전에 설정하세요. Python에서는with 블록 내부가, TypeScript에서는 start*() 호출 이후부터 end() 호출 이전까지가 이에 해당합니다.
아직 시작되지 않았거나 이미 종료된 span에서 set_attributes() 또는 이에 대응하는 TypeScript 메서드를 호출하면 아무 작업도 수행되지 않으며, 해결 방법을 알려 주는 경고가 로깅됩니다.
경고 없이 호출이 무시되는 경우는 트레이싱이 초기화되지 않았을 때뿐입니다.