gen_ai.agent.name 및 gen_ai.conversation.id와 같은 GenAI semantic-convention 속성이 태그로 지정됩니다.
개별 함수를 Ops로 @weave.op decorator를 사용해 트레이싱하는 경우에는 LLM 애플리케이션 트레이스를 참조하세요.
시작하기 전에
weave 패키지를 설치하고 프로젝트를 초기화하세요. 이 단계에서는 팀과 프로젝트를 Weave에 등록하여 SDK가 UI에서 spans를 올바른 위치로 라우팅하도록 합니다.
- Python
- TypeScript
[YOUR-TEAM]은 W&B 팀 이름으로, [YOUR-PROJECT]는 W&B 프로젝트 이름으로 바꾸세요.start_conversation(), start_turn(), start_llm(), start_tool(), start_subagent()를 호출하기 전에 weave.init()를 먼저 호출하세요. 트레이싱이 비활성화되어 있거나 init 호출이 없으면 모든 에이전트 트레이싱 함수는 조용히 no-op로 동작하므로, 프로덕션 코드에 계측을 그대로 남겨 두고 설정을 통해 제어할 수 있습니다.에이전트 데이터 모델
| 개념 | Weave SDK 클래스 | OTel span 유형 | 설명 | 레퍼런스 페이지 |
|---|---|---|---|---|
| 에이전트 | (클래스 없음) | (span 없음, agent_name 속성으로 그룹화됨) | Agents 탭의 에이전트형 애플리케이션으로, 하나 이상의 대화를 포함합니다 | |
| 대화 | Conversation | (span 없음, 턴은 conversation_id 속성으로 그룹화됨) | 하나 이상의 턴을 포함하는 대화 또는 run입니다. | Python TypeScript |
| 턴 | Turn | invoke_agent | 사용자 메시지 1개와 에이전트의 전체 응답입니다. | Python TypeScript |
| LLM Call | LLM | chat | 언어 모델 API에 대한 단일 LLM Call입니다. | Python TypeScript |
| 도구 Call | Tool | execute_tool | LLM 응답으로 트리거되는 단일 도구 Call입니다. | Python TypeScript |
| 하위 에이전트 Call | SubAgent | invoke_agent | 중첩된 에이전트 호출로, 일반적으로 한 에이전트가 다른 에이전트에 작업을 위임할 때 발생합니다. | Python TypeScript |
conversation_id 속성을 기준으로 턴을 그룹화하므로, 각 턴이 자체 OTel 트레이스를 시작합니다. 이 설계는 분산 트레이싱과 병렬 실행을 지원합니다. 클라이언트는 서버 측 집계 없이 span을 OTel collector로 직접 전송합니다.
에이전트 트레이싱 API
with, TypeScript에서는 try/finally 사용)로 사용할 수 있는 객체이거나, .end()를 호출해 수동으로 종료할 수 있는 객체입니다.
대화 시작
start_conversation() (Python) 또는 startConversation() (TypeScript)은 모든 하위 span에 conversation_id 속성을 추가해 Agents 탭에서 턴이 그룹화되도록 합니다. conversation_id / conversationId를 전달하는 경우, 해당 값은 대화가 유지되는 동안 일관되게 유지되어야 합니다. 기존 대화에 새 턴을 추가하려면 동일한 ID를 재사용하세요. 이를 생략하면 SDK가 UUID를 자동으로 생성합니다.
활성 대화는 컨텍스트(Python의 ContextVar 또는 Node.js의 AsyncLocalStorage)에 저장되므로, 동일한 비동기 컨텍스트에서 실행되는 코드는 대화 객체를 명시적으로 전달하지 않아도 weave.get_current_conversation() / weave.getCurrentConversation()으로 이를 조회할 수 있습니다.
- Python
- TypeScript
턴 시작
start_turn() (Python)과 startTurn() (TypeScript)은 새 OTel 트레이스의 루트가 되는 새로운 invoke_agent span을 생성합니다. Weave는 타임라인 뷰에서 이 span을 사용해 사용자와 에이전트 간의 한 번의 전체 상호작용을 나타냅니다.
다음 두 가지 방법으로 호출할 수 있습니다:
- 최상위 함수로 (
weave.start_turn(...)/weave.startTurn(...)) 호출하는 방법으로, 아래 예시에 나와 있습니다. 컨텍스트에서 활성 대화를 찾아 해당 대화 ID를 상속받습니다. 활성 대화가 없으면 Weave는conversation_id없이 턴을 생성하며 다른 턴과 함께 그룹화하지 않습니다. - 참조를 보유한 대화의 인스턴스 메서드로 (
conversation.start_turn(...)/conversation.startTurn(...)) 호출하는 방법입니다. 컨텍스트 관리자 블록 내부처럼 범위 내에 명시적인 대화 객체가 있을 때 유용합니다. 아래의 “Context manager or try-finally pattern” 예시는 이 형식을 사용합니다. 두 SDK의Conversation,Turn,LLM,Tool,SubAgent레퍼런스 페이지로 직접 연결되는 링크는 위의 데이터 모델 표를 참조하세요.
- Python
- TypeScript
LLM Call 시작
start_llm() / startLLM()은 현재 턴 아래에 중첩되는 chat span을 생성합니다. Weave는 이 span을 사용해 Agents 뷰에서 토큰 사용량, 모델 이름, 입력 및 출력 메시지, 추론을 표시합니다.
- Python
- TypeScript
llm 객체에 할당하세요:
- Python
- TypeScript
provider_name / providerName은 명시적으로 전달하세요. Weave는 모델 문자열에서 이를 추론하지 않습니다.
도구 Call 시작
start_tool() / startTool()은 execute_tool span을 생성합니다. 이 span은 컨텍스트에서 현재 활성화된 OTel span의 하위 span이 됩니다(일반적으로 도구 Call을 생성한 LLM 호출의 chat span).
- Python
- TypeScript
- Python
- TypeScript
에이전트 트레이싱 사용 패턴
Message(Python · TypeScript)는 대화의 단일 항목을 나타냅니다. 예를 들어 사용자 입력, 어시스턴트 응답, system 프롬프트, 또는 도구 결과가 이에 해당합니다. 모델이 무엇을 입력받았는지 기록하려면 메시지 목록을llm.input_messages/llm.inputMessages에 할당하고, 어떤 출력을 생성했는지 기록하려면llm.output_messages/llm.outputMessages에 할당하세요.Usage(Python · TypeScript)는 LLM 응답의 token 수를 캡처하며,llm.usage에 할당됩니다.
컨텍스트 매니저 또는 try-finally 패턴
start_llm() / startLLM() 또는 start_tool() / startTool()을 호출할 수 있습니다. 이 방식은 코드가 동일한 async 컨텍스트에서 실행되는 한 모듈 경계를 넘어도 작동합니다. 호출 스택 어디에서든 현재 활성 객체를 조회하려면 weave.get_current_conversation() / weave.getCurrentConversation(), weave.get_current_turn() / weave.getCurrentTurn(), weave.get_current_llm() / weave.getCurrentLLM()을 사용하세요.
- Python
- TypeScript
수동으로 시작하고 종료하는 패턴
with 블록이나 try/finally를 사용할 수 없을 때는 .end()를 명시적으로 사용하세요. 예를 들어, span을 서로 다른 함수 호출에서 시작하고 종료하는 경우나 코루틴 외부에서 비동기 라이프사이클을 관리하는 경우가 이에 해당합니다. 생성한 모든 객체에 대해 .end()를 호출해 span이 종료되고 collector로 플러시되도록 하는 것은 사용자 책임입니다.
- Python
- TypeScript
시맨틱 규약
Weave UI에서 데이터가 표시되는 방식
https://wandb.ai/[YOUR-TEAM]/[YOUR-PROJECT]/weave/agents에 있는 Agents 탭에 표시됩니다.
- Conversations tab에는 모든 대화가 턴 활동 미니맵과 함께 표시됩니다.
- 대화를 클릭하면 Conversation detail view가 열리며, 모든 턴, 해당 LLM Call, tool execution, token 수, 그리고 첨부된 feedback이 표시됩니다.