메인 콘텐츠로 건너뛰기
Ops는 Calls를 생성합니다. Op는 @weave.op으로 데코레이트한 함수 또는 메서드입니다. 기본적으로 Op 이름은 함수 이름이며, 연관된 Calls는 동일한 표시 이름을 가집니다. 특정 Op의 모든 Calls에 대해 표시 이름을 재정의하는 방법은 여러 가지가 있습니다.
  1. Op를 호출할 때 표시 이름을 변경합니다. 다음 예시는 __weave 사전을 사용하여 Call 표시 이름을 설정하며, 이 이름은 Op 표시 이름보다 우선합니다:
result = my_function("World", __weave={"display_name": "My Custom Display Name"})
  1. Call 단위로 표시 이름을 변경합니다. 다음 예시는 Op.call 메서드를 사용해 call 객체를 반환하고, 그런 다음 call.set_display_name를 사용해 표시 이름을 설정합니다:
result, call = my_function.call("World")
call.set_display_name("My Custom Display Name")
  1. 특정 Op의 모든 Calls에 대해 표시 이름을 변경합니다. 다음 예시는 @weave.op 함수 데코레이터 자체에 새 표시 이름을 설정하여 해당 Op의 모든 Calls에 영향을 주는 방법입니다:
@weave.op(call_display_name="My Custom Display Name")
def my_function(name: str):
    return f"Hello, {name}!"
call_display_namecall 객체를 입력으로 받아 문자열을 반환하는 함수가 될 수도 있습니다. 함수가 실행될 때 Weave가 call 객체를 자동으로 전달하므로, 함수 이름, Call 입력값, 필드 등을 기반으로 동적으로 이름을 생성할 수 있습니다.한 가지 일반적인 사용 사례는 함수 이름에 타임스탬프를 덧붙이는 것입니다.
from datetime import datetime

@weave.op(call_display_name=lambda call: f"{call.func_name}__{datetime.now()}")
def func():
    return ...
.attributes를 사용해 커스텀 메타데이터를 로깅할 수도 있습니다.
def custom_attribute_name(call):
    model = call.attributes["model"]
    revision = call.attributes["revision"]
    now = call.attributes["date"]

    return f"{model}__{revision}__{now}"

@weave.op(call_display_name=custom_attribute_name)
def func():
    return ...

with weave.attributes(
    {
        "model": "finetuned-llama-3.1-8b",
        "revision": "v0.1.2",
        "date": "2024-08-01",
    }
):
    func()  # 표시 이름은 "finetuned-llama-3.1-8b__v0.1.2__2024-08-01"이 됩니다.

    with weave.attributes(
        {
            "model": "finetuned-gpt-4o",
            "revision": "v0.1.3",
            "date": "2024-08-02",
        }
    ):
        func()  # 표시 이름은 "finetuned-gpt-4o__v0.1.3__2024-08-02"이 됩니다.
  1. Op 자체의 표시 이름을 변경합니다. 특정 Op와 연관된 Calls는 동일한 표시 이름을 가집니다. Op 자체의 이름을 재정의하면 Call의 표시 이름도 함께 변경됩니다. 이 작업은 두 가지 방법으로 할 수 있습니다:
  • 어떤 Call도 로깅되기 전에 Op의 name 속성을 설정합니다:
my_function.name = "My Custom Op Name"
  • Op 데코레이터에서 name 옵션을 설정합니다:
@weave.op(name="My Custom Op Name")
실행이 완료된 후에도 call의 표시 이름을 업데이트할 수 있습니다.