메인 콘텐츠로 건너뛰기
코드에 트레이싱을 추가해 Weave로 LLM 호출을 추적하는 방법을 알아봅니다. 이 퀵스타트에서는 OpenAI 요청을 트레이싱하고 Weave UI에서 결과를 확인하는 과정을 단계별로 안내합니다.

이 가이드에서 배우는 내용:

이 가이드는 다음을 다룹니다:
  • 코드에서 Weave를 import하고 설정하는 방법
  • weave.op 데코레이터를 사용해 코드를 추적하는 방법
  • Weave UI에서 트레이스를 확인하는 방법

사전 준비 사항

  • W&B 계정
  • Python 3.8+ 또는 Node.js 18+
  • 다음 패키지가 설치되어 있어야 합니다:
    • Python: pip install weave openai
    • TypeScript: npm install weave openai
  • 환경 변수로 설정된 OpenAI API 키

새 프로젝트에 트레이스를 로깅하기

코드를 추적하고 트레이스를 Weave에 로깅하려면 다음을 수행하세요:
  1. 코드에 weave 라이브러리를 임포트합니다.
  2. 코드에서 weave.init('your_wb_team/project_name')를 호출하여 추적 정보를 W&B teamproject로 전송합니다. 팀을 설정하지 않으면 트레이스는 기본 팀으로 전송됩니다. 지정한 프로젝트가 해당 팀에 없으면 Weave가 새 프로젝트를 생성합니다.
  3. 추적하려는 특정 함수에 @weave.op() 데코레이터를 추가합니다. Weave는 지원되는 LLM 호출을 자동으로 추적하지만, Weave 데코레이터를 추가하면 특정 함수의 입력, 출력, 코드까지 추적할 수 있습니다. 이 데코레이터는 TypeScript에서 다음과 같은 문법을 사용합니다: weave.op(your_function)
다음 예제 코드는 OpenAI에 요청을 보내며(OpenAI API key 필요), Weave가 해당 요청의 트레이싱 정보를 기록합니다. 이 요청은 OpenAI 모델에게 입력에서 공룡 이름을 추출하고 각 공룡의 식단(초식 또는 육식)을 식별하도록 요청합니다. 다음 예제 코드를 실행하여 Weave로 첫 번째 프로젝트를 추적해 보세요:
# Weave 라이브러리를 임포트합니다
import weave
from openai import OpenAI

client = OpenAI()

# Weave는 이 함수의 입력, 출력, 코드를 자동으로 추적합니다
@weave.op()
def extract_dinos(sentence: str) -> dict:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": """In JSON format extract a list of `dinosaurs`, with their `name`,
their `common_name`, and whether its `diet` is a herbivore or carnivore"""
            },
            {
                "role": "user",
                "content": sentence
            }
            ],
            response_format={ "type": "json_object" }
        )
    return response.choices[0].message.content

# Weave를 초기화하고, 데이터를 로깅할 team과 project를 설정합니다
weave.init('your-team/traces-quickstart')

sentence = """I watched as a Tyrannosaurus rex (T. rex) chased after a Triceratops (Trike), \
both carnivore and herbivore locked in an ancient dance. Meanwhile, a gentle giant \
Brachiosaurus (Brachi) calmly munched on treetops, blissfully unaware of the chaos below."""

result = extract_dinos(sentence)
print(result)
extract_dinos 함수를 호출하면 Weave가 터미널에 트레이스를 확인할 수 있는 링크를 출력합니다. 출력 결과는 다음과 같습니다:
weave:  $ pip install weave --upgrade
weave: Logged in as Weights & Biases user: example-username.
weave: View Weave data at https://wandb.ai/your-team/traces-quickstart/weave
weave: 🍩 https://wandb.ai/your-team/traces-quickstart/r/call/019ae171-7f32-7c96-8b42-931a32f900b7
{
  "dinosaurs": [
    {
      "name": "Tyrannosaurus rex",
      "common_name": "T. rex",
      "diet": "carnivore"
    },
    {
      "name": "Triceratops",
      "common_name": "Trike",
      "diet": "herbivore"
    },
    {
      "name": "Brachiosaurus",
      "common_name": "Brachi",
      "diet": "herbivore"
    }
  ]
}

프로젝트에서 애플리케이션 trace 살펴보기

터미널에 표시된 링크를 클릭하거나 브라우저에 붙여넣어 Weave UI를 엽니다. Weave UI의 Traces 패널에서 trace를 클릭하면 입력, 출력, 지연 시간, 토큰 사용량 등의 데이터를 확인할 수 있습니다. Weave Trace Outputs 1

Traces에 대해 더 알아보기

다음 단계

앱 평가 시작하기를 진행한 다음 RAG 애플리케이션 평가하기를 살펴보세요.