배울 내용
weave.init()를 사용해 에이전트 트레이싱용 Weave를 초기화합니다.start_conversation/startConversation및start_turn/startTurn으로 대화와 턴을 시작합니다.start_llm/startLLM으로 LLM Call을 래핑하고 사용량을 기록합니다.start_tool/startTool로 도구 실행을 래핑하고 결과를 기록합니다.- 토큰 수와 비용이 표시되도록 전체 토큰 사용량과 과금 가능한 모델을 기록합니다.
- 결과로 생성된 대화, 턴, 도구 Call을 Agents 뷰에서 확인합니다.
Weave SDK가 에이전트와 작동하는 방식
Python에서는 네 함수 모두 컨텍스트 관리자(
with weave.start_*(...) as obj:)로 작동합니다. 종료 시에는 예외가 발생한 경우를 포함해 span을 종료하고 속성을 플러시합니다. TypeScript에서는 반환된 각 객체에 대해 .end()를 호출하세요. 예외가 발생하더라도 정리가 보장되도록 try { ... } finally { obj.end(); }를 사용하세요.
gen_ai.usage.* 및 gen_ai.agent.name과 같은 다른 GenAI semantic-convention attributes도 추가 정보 표시를 가능하게 하지만, 선택 사항입니다.
사전 요구 사항
- W&B 계정 및 API 키.
- OpenAI API 키.
- Python 3.10+ (Python 예시용).
- Node.js 18+ (TypeScript 예시에는 내장
fetch가 필요합니다).
패키지 설치
Weave 초기화
weave.init()는 W&B 인증을 수행하고 에이전트 span을 Agents 뷰로 전송하는 OTel 익스포터를 설정합니다. 팀에 해당 프로젝트가 없으면 Weave가 처음 데이터를 기록할 때 자동으로 생성합니다.
도구 정의하기
트레이스된 멀티턴 에이전트 실행
chatspan을 열고 LLM이 도구를 Call할지 선택하게 합니다.- LLM이 도구를 요청하면 해당 Call을
execute_toolspan으로 감싸고, 그 결과를 다시 LLM에 전달합니다. - 두 번째
chatspan을 열어 최종 답변을 생성합니다.
토큰 사용량 및 비용 기록
chat span에는 토큰 사용량과 모델 ID가 포함됩니다. Weave는 사용량을 바탕으로 토큰 수를 표시하고, 사용량과 모델 ID를 바탕으로 비용을 계산합니다. 따라서 값이 불완전하거나 가격을 계산할 수 없으면 나머지 트레이스가 올바르게 보여도 0 in / 0 out 토큰 또는 Cost -로 표시됩니다. record(...)를 사용하면 이러한 필드(output_messages, response_id, reasoning 등 포함)를 한 번에 설정할 수 있습니다. 전달한 필드만 적용됩니다.
비용이 표시되려면 다음 두 가지가 모두 정확해야 합니다.
- 완전한 사용량.
input_tokens는 캐시된 토큰을 포함한 전체 입력입니다. Weave는 캐시 읽기와 캐시 쓰기에 각각 별도의 요율을 적용하고 이를 입력 총계에서 차감하므로,cache_read_input_tokens와cache_creation_input_tokens는 이를 포함한 전체input_tokens와 함께 보고해야 합니다. 프롬프트 캐싱을 지원하는 공급자(예: Anthropic)의 경우 캐시된 토큰이 입력의 대부분을 차지하는 일이 흔하므로, 이를 누락하면 사용량과 비용이 거의 0으로 표시됩니다. - 가격 계산이 가능한 모델 ID. 비용은 모델을 조회해 계산됩니다. Weave는
response_model(공급자가 실제로 서빙한 정확한 모델)을 우선 사용하고, 없으면start_llm에 전달한model을 사용합니다.opus나sonnet같은 별칭은 가격 계산이 불가능하므로Cost -로 표시됩니다. 따라서 응답이 반환한 구체적인 ID(resp.model)를response_model로 전달하세요.
prompt_tokens에 포함해 계산하므로 위 예시는 그대로 매핑됩니다. Anthropic은 캐시된 토큰을 input_tokens와 별도로 보고하므로, Weave가 가격을 계산하는 총계에 다시 더해야 합니다.
Agents 뷰에서 에이전트 트레이스 확인하기
weave.init()가 실행되면 다음을 확인할 수 있는 프로젝트 링크가 출력됩니다.
- Agents 탭에
research-bot에 대한 행 하나 - 세 개의 턴이 포함된 대화 하나
- 각 턴(
invoke_agent) 안에 중첩된chatspan 두 개와execute_toolspan 하나 - 각
chat의 토큰 수, 지연 시간, 모델, 그리고 전체 메시지 교환 내용
앱에서 대화로 연결하기
weave.init()는 entity와 project를 포함하는 클라이언트를 반환하고, start_conversation은 conversation_id를 제공합니다.
다음 단계
- Weave로 에이전트 트레이싱하는 방법과 Weave SDK에서 사용할 수 있는 특성 및 옵션을 알아보세요.
- 에이전트에 Weave를 통합하는 추가 옵션은 에이전트 인테그레이션 선택을 참조하세요.