メインコンテンツへスキップ
Model は、(設定、学習済みモデルの重み、その他の情報を含みうる)データと、そのモデルがどのように動作するかを定義するコードの組み合わせです。コードをこの API と互換性のあるように構造化することで、アプリケーションのバージョン管理を体系立てて行えるようになり、Experiments をより系統的に追跡しやすくなります。
Weave でモデルを作成するには、次のものが必要です:
  • weave.Model を継承するクラス
  • すべてのパラメータに対する型定義
  • @weave.op() デコレータを付けた型付きの predict 関数
from weave import Model
import weave

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

    @weave.op()
    def predict(self, input_data: str) -> dict:
        # モデルのロジックをここに記述します
        prediction = self.attribute1 + ' ' + input_data
        return {'pred': prediction}
モデルは通常どおり、次のように呼び出せます:
import weave
weave.init('intro-example')

model = YourModel(attribute1='hello', attribute2=5)
model.predict('world')
これにより、predict を呼び出すたびに、モデルの設定に加えて入力と出力が追跡されます。

モデルの自動バージョニング

モデルを定義するパラメータやコードを変更すると、これらの変更が記録され、バージョンが更新されます。 これにより、異なるバージョンのモデル間で予測結果を比較できます。これを利用してプロンプトを繰り返し改善したり、最新の LLM を試しながら、さまざまな設定で予測結果を比較できます。たとえば、次のように新しいモデルを作成します:
import weave
weave.init('intro-example')

model = YourModel(attribute1='howdy', attribute2=10)
model.predict('world')
このコードを実行した後、UI 上ではこの Model のバージョンが 2 つになり、それぞれで追跡されている呼び出しが異なることが確認できます。

モデルの提供

モデルを提供するには、次のコマンドを実行するだけで簡単に FastAPI サーバーを立ち上げられます:
weave serve <your model ref>
追加の手順については、serve を参照してください。

本番環境での呼び出しの追跡

本番環境での呼び出しを区別するには、UI や API で簡単にフィルタリングできるよう、予測結果に追加の属性を付与できます。
with weave.attributes({'env': 'production'}):
    model.predict('world')