メインコンテンツへスキップ
Op は Call を生成します。Op は @weave.op でデコレートした関数またはメソッドです。デフォルトでは、Op の名前は関数名になり、関連する Call も同じ表示名を持ちます。 特定の Op のすべての Call の表示名は、いくつかの方法で上書きできます。
  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 に対するすべての Call の表示名を変更します。 次の例では、@weave.op 関数デコレータ自体に新しい表示名を設定し、その Op に対するすべての Call に反映させています。
@weave.op(call_display_name="My Custom Display Name")
def my_function(name: str):
    return f"Hello, {name}!"
call_display_name は、call オブジェクトを受け取り文字列を返す関数にすることもできます。関数が実行されるときに Weave が自動的に call オブジェクトを渡すため、関数名や Call の入力、フィールドなどに基づいて動的に名前を生成できます。一般的なユースケースの 1 つは、関数名にタイムスタンプを付加することです。
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()  # the display name will be "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()  # the display name will be "finetuned-gpt-4o__v0.1.3__2024-08-02"
  1. Op 自体の表示名を変更します。 Op に関連付けられた Call は同じ表示名を持ちます。Op 自体の名前を上書きすると、Call の表示名も変更されます。これは次の 2 通りの方法で行えます。
  • どの Call もログに記録される前に、Op の name プロパティを設定する:
my_function.name = "My Custom Op Name"
  • Op デコレータの name オプションを設定する:
@weave.op(name="My Custom Op Name")
実行後に call の表示名を更新 することもできます。