메인 콘텐츠로 건너뛰기
이 문서는 대화형 노트북입니다. 로컬에서 실행하거나 아래 링크를 사용하세요:

사용자 정의 비용 모델 설정

이 가이드에서는 자체 토큰 사용량을 보고하는 맞춤형 모델을 Weave에서 정의하고, 해당 모델에 대한 사용자 정의 토큰당 비용을 등록한 다음, 비용 정보가 연결된 call을 가져오는 방법을 설명합니다. Weave의 기본 제공 비용 데이터에 포함되지 않은 모델로 작업하면서 트레이스와 함께 지출을 추적하려는 경우 이 가이드를 사용하세요. Weave는 사용된 토큰 수와 모델을 기준으로 비용을 계산합니다. Weave는 출력에서 이 사용량과 모델 정보를 가져와 call에 연결합니다. 토큰 사용량을 자체적으로 계산하고 이를 Weave에 저장하는 간단한 맞춤형 모델을 설정하세요.

환경 설정

필요한 모든 패키지를 설치하고 임포트하세요. wandb.login()으로 쉽게 로그인할 수 있도록 환경 변수에 WANDB_API_KEY를 설정하세요(이는 Colab에 Secret으로 제공해야 합니다). 로그를 기록할 W&B 프로젝트를 name_of_wandb_project에 설정하세요.
name_of_wandb_project는 트레이스를 기록할 팀을 지정하기 위해 {team_name}/{project_name} 형식일 수도 있습니다.
그런 다음 weave.init()를 호출해 Weave 클라이언트를 가져오세요.
%pip install wandb weave datetime --quiet
python
import os

import wandb
from google.colab import userdata

import weave

os.environ["WANDB_API_KEY"] = userdata.get("WANDB_API_KEY")
name_of_wandb_project = "custom-cost-model"

wandb.login()
python
weave_client = weave.init(name_of_wandb_project)

Weave로 모델 설정

다음으로, 자체적으로 토큰 사용량을 계산하는 Weave Model 하위 클래스를 정의하세요. 출력 딕셔너리에서 사용량 집계와 모델 이름을 반환해야, Weave가 나중에 해당 Call을 다음 섹션에서 정의한 사용자 정의 비용과 연결할 수 있습니다.
from weave import Model

class YourModel(Model):
    attribute1: str
    attribute2: int

    def simple_token_count(self, text: str) -> int:
        return len(text) // 3

    # 이것은 우리가 정의하는 맞춤형 op입니다
    # string을 입력받아 사용 횟수, 모델 이름, 출력이 포함된 dict를 반환합니다
    @weave.op()
    def custom_model_generate(self, input_data: str) -> dict:
        # 모델 로직이 여기에 들어갑니다
        # 맞춤형 생성 함수를 여기에 작성하세요
        prediction = self.attribute1 + " " + input_data

        # 사용 횟수
        prompt_tokens = self.simple_token_count(input_data)
        completion_tokens = self.simple_token_count(prediction)

        # 사용 횟수, 모델 이름, 출력이 포함된 딕셔너리를 반환합니다
        # Weave가 자동으로 이를 트레이스와 연결합니다
        # 이 객체 {usage, model, output}는 OpenAI Call의 출력과 일치합니다
        return {
            "usage": {
                "input_tokens": prompt_tokens,
                "output_tokens": completion_tokens,
                "total_tokens": prompt_tokens + completion_tokens,
            },
            "model": "your_model_name",
            "output": prediction,
        }

    # predict 함수에서 맞춤형 생성 함수를 호출하고 출력을 반환합니다.
    @weave.op()
    def predict(self, input_data: str) -> dict:
        # 데이터 후처리 작업을 여기에서 수행하세요
        outputs = self.custom_model_generate(input_data)
        return outputs["output"]

사용자 정의 비용 추가

사용자 정의 비용을 추가하세요. 사용자 정의 비용을 추가한 후 Call에 사용량이 있으면 include_cost를 사용해 Call을 가져오고 summary.weave.costs에서 비용을 검토할 수 있습니다.
model = YourModel(attribute1="Hello", attribute2=1)
model.predict("world")

# 그런 다음 프로젝트에 사용자 정의 비용을 추가합니다
weave_client.add_cost(
    llm_id="your_model_name", prompt_token_cost=0.1, completion_token_cost=0.2
)

# 그런 다음 Call을 쿼리할 수 있으며, include_costs=True를 사용하면
# 비용이 Call에 포함되어 반환됩니다
calls = weave_client.get_calls(filter={"trace_roots_only": True}, include_costs=True)

list(calls)
이제 자체 토큰 사용량을 기록하는 맞춤형 모델, 해당 모델의 llm_id에 등록된 사용자 정의 비용, 그리고 summary.weave.costs에 Call별 비용 데이터가 포함된 Call을 조회하는 방법까지 갖추었습니다.