이 문서는 대화형 노트북입니다. 로컬에서 실행하거나 다음 링크를 사용하세요.
- 단순한 LLM Call과 응답을 모의로 만들어 Weave에 로깅합니다.
- 더 복잡한 LLM Call과 응답을 모의로 만들어 Weave에 로깅합니다.
- 로깅된 트레이스에 샘플 조회 쿼리를 실행합니다.
로깅된 트레이스 보기
이 가이드의 코드를 실행하면서 생성된 모든 Weave 트레이스를 보려면 Weave 프로젝트(team_id\project_id로 지정)의 Traces 탭으로 이동한 다음 트레이스 이름을 선택하세요.
시작하기 전에 사전 요구 사항을 완료하세요.
사전 요구 사항: 변수 및 엔드포인트 설정
트레이스를 로깅하기 전에 Service API 엔드포인트를 설정하고 W&B 자격 증명으로 인증해야 합니다. 다음 코드는 Service API에 액세스할 때 사용하는 URL 엔드포인트를 설정합니다.https://trace.wandb.ai/call/starthttps://trace.wandb.ai/call/endhttps://trace.wandb.ai/calls/stream_query
project_id: 트레이스를 로깅할 Weights & Biases 프로젝트 이름입니다.team_id: CoreWeave Forge 팀 이름입니다.wandb_token: W&B API 키입니다.
단순한 트레이스
다음 섹션에서는 단순한 트레이스를 만드는 방법을 단계별로 설명합니다.단순한 트레이스 시작하기
다음 코드는 샘플 LLM Callpayload_start를 생성하고, url_start 엔드포인트를 사용해 Weave에 로깅합니다. payload_start 객체는 Why is the sky blue?라는 쿼리로 OpenAI의 gpt-4o를 호출하는 상황을 시뮬레이션합니다.
코드가 성공적으로 실행되면 트레이스가 시작되었음을 알리는 메시지가 출력됩니다.
단순한 트레이스 종료하기
다음 코드는 단순한 트레이스를 완료하기 위해 샘플 LLM Callpayload_end를 생성하고, url_end 엔드포인트를 통해 Weave에 로깅합니다. payload_end 객체는 Why is the sky blue?라는 쿼리에 대한 OpenAI gpt-4o의 응답을 모방합니다. 이 객체는 Weave 대시보드의 트레이스 뷰에 가격 요약 정보와 Chat Completion이 표시되도록 형식이 지정되어 있습니다.
코드가 성공적으로 실행되면 트레이스가 완료되었음을 알리는 메시지가 출력됩니다:
복잡한 트레이스
단순한 단일 단계 트레이스를 로깅해 보았으니, 이제 다음 섹션에서는 여러 오퍼레이션으로 구성된 RAG 조회처럼 하위 span이 포함된 더 복잡한 트레이스를 만드는 방법을 살펴봅니다.복잡한 트레이스 시작하기
다음 코드는 여러 span으로 구성된 더 복잡한 트레이스를 만드는 방법을 보여줍니다. RAG(Retrieval-Augmented Generation) 조회에 이어 LLM Call을 수행하는 경우를 예로 들 수 있습니다. 코드의 첫 부분에서는 오퍼레이션을 나타내는 상위 트레이스(payload_parent_start)를 초기화합니다. 여기서 오퍼레이션은 사용자 쿼리 Can you summarize the key points of this document?를 처리합니다.
payload_parent_start 객체는 다단계 워크플로의 첫 단계를 모방하며, url_start 엔드포인트를 통해 Weave에 오퍼레이션을 로깅합니다.
코드가 성공적으로 실행되면 부모 호출이 로깅되었음을 알리는 메시지가 출력됩니다.
RAG 문서 조회용 하위 span 추가
다음 코드는 이전 단계에서 시작한 복합 상위 트레이스에 하위 span을 추가하는 방법을 보여 줍니다. 이 단계에서는 워크플로의 RAG 문서 조회 하위 오퍼레이션을 모델링합니다. 하위 트레이스는payload_child_start 객체로 시작하며, 이 객체에는 다음 항목이 포함됩니다.
trace_id: 이 하위 span을 상위 트레이스에 연결합니다.parent_id: 하위 span을 상위 오퍼레이션에 연결합니다.inputs: 검색 쿼리를 로깅합니다. 예:"This is a search query of the documents I'm looking for."
url_start 엔드포인트를 성공적으로 호출하면 자식 호출이 시작되고 완료되었다는 메시지가 출력됩니다.
LLM 완료 호출에 대한 하위 span 추가
다음 코드는 복잡한 상위 트레이스에 LLM 완료 호출을 나타내는 하위 span을 하나 더 추가하는 방법을 보여줍니다. 이 단계에서는 이전 RAG 오퍼레이션에서 검색한 문서 컨텍스트를 바탕으로 LLM이 응답을 생성하는 과정을 모델링합니다. LLM 완료 트레이스는payload_child_start 객체로 시작하며, 이 객체에는 다음 항목이 포함됩니다.
trace_id: 이 하위 span을 상위 트레이스에 연결합니다.parent_id: 하위 span을 상위 워크플로에 연결합니다.inputs: 사용자 쿼리와 추가된 문서 컨텍스트를 포함해 LLM에 전달되는 입력 메시지를 로깅합니다.model: 오퍼레이션에 사용할 모델(gpt-4o)을 지정합니다.
payload_child_end 객체가 LLM이 생성한 응답을 output 필드에 로깅하고 트레이스를 종료합니다. 또한 사용량 요약 정보도 함께 로깅합니다.
성공하면 LLM 하위 span 트레이스가 시작되고 종료되었음을 알리는 메시지가 출력됩니다.
복잡한 트레이스 종료
다음 코드는 상위 트레이스를 마무리하여 워크플로가 완료되었음을 표시하는 방법을 보여줍니다. 이 단계에서는 모든 하위 span(예: RAG 조회 및 LLM 완료)의 결과를 집계하고 최종 출력과 메타데이터를 로깅합니다. 트레이스는payload_parent_end 객체로 마무리되며, 이 객체에는 다음 항목이 포함됩니다.
id: 처음 상위 트레이스를 시작할 때 받은parent_call_id입니다.output: 워크플로의 최종 출력입니다.summary: 워크플로의 사용량 데이터를 종합합니다.prompt_tokens: 모든 프롬프트에 사용된 총 토큰 수입니다.completion_tokens: 모든 응답에서 생성된 총 토큰 수입니다.total_tokens: 워크플로 전체의 토큰 수 합계입니다.requests: 전송된 총 요청 수입니다(이 예시에서는1).
조회 쿼리 실행하기
Weave에 트레이스를 로깅했다면 Service API를 사용해 프로그래밍 방식으로 트레이스를 쿼리할 수 있습니다. 다음 코드는 이전 예시에서 생성한 트레이스 중inputs.model 필드가 gpt-4o인 트레이스만 필터링해 쿼리하는 방법을 보여줍니다.
query_payload 객체에는 다음 항목이 포함됩니다.
project_id: 쿼리할 팀과 프로젝트를 식별합니다.filter: 쿼리가 트레이스 루트(최상위 트레이스)만 반환하도록 합니다.query:$expr연산자를 사용해 필터 로직을 정의합니다.$getField:inputs.model필드를 가져옵니다.$literal:inputs.model이"gpt-4o"인 트레이스를 찾습니다.
limit: 쿼리 결과를 최대 10,000개로 제한합니다.offset: 첫 번째 결과부터 쿼리를 시작합니다.sort_by:started_at타임스탬프를 기준으로 결과를 내림차순 정렬합니다.include_feedback: 결과에서 피드백 데이터를 제외합니다.