入力、出力、メタデータのトラッキングや、アプリケーション内を流れるデータの把握は、システムのパフォーマンスを理解するうえで不可欠です。時間の経過に伴ってアプリケーションをバージョン管理することも同様に重要です。これにより、コードやパラメーターの変更が出力にどのような影響を与えるかを確認できます。Weave の Model クラスは、こうした変更をトラッキングします。
このチュートリアルは、LLM アプリケーションの異なるバージョン間で結果を比較し、再現したい開発者向けです。最後には、アプリケーションのパラメーターとコードを保持する、バージョン管理された Weave Model を作成できるようになります。また、以前のバージョンを取得して再利用する方法も学べます。
このチュートリアルでは、次の内容を学びます。
- Weave
Model を使用して、アプリケーションとそのパラメーターをトラッキングし、バージョン管理する方法。
- すでにログした Weave
Model をエクスポート、変更、再利用する方法。
weave.Model クラスは Python でのみサポートされています。
Weave モデル を使用すると、モデルベンダー ID、プロンプト、temperature などのパラメーターが、変更時に保存されてバージョン管理されます。
Weave で Model を作成するには、次のものが必要です。
weave.Model を継承するクラス
- すべてのクラスフィールドの型定義
@weave.op() デコレーターが付いた、型付きの invoke 関数
クラスフィールドやモデルを定義するコードを変更すると、それらの変更はログされ、バージョンが更新されます。これにより、アプリの異なるバージョン間で生成結果を比較できます。
以下の例では、モデル名、temperature、system prompt がトラッキングされ、バージョン管理されます。
これで、invoke を使ってモデルをインスタンス化し、呼び出せます。
.invoke() を呼び出した後、Weave のトレースでは、weave.op() でデコレートされたモデル関数のコードとあわせて、モデルパラメーターもトラッキングされます。モデル自体もバージョン管理されており (この場合は v21) 、モデルをクリックすると、そのバージョンを使用した すべての Call を確認できます。
weave.Model の使用に関する注意:
- 必要に応じて、Weave
Model 内の関数名には invoke の代わりに predict を使用できます。
- 他のクラスメソッドを Weave でトラッキングするには、
weave.op() でラップします。
- アンダースコアで始まるパラメーターは Weave によって無視され、ログされません。
ログした weave.Model をエクスポートして再利用する
これで、モデルは Weave でバージョン管理されるため、コード内で再定義しなくても、以前の任意のバージョンを取得して再実行できます。これは、過去の結果を再現したり、特定のモデル バージョンを他のユーザーと共有したりする際に役立ちます。
Weave では、呼び出した Models が保存され、バージョン管理されるため、それらをエクスポートして再利用できます。
Weave UI では、特定のバージョンの モデル ref を取得できます。
モデル object の URI を取得したら、それをエクスポートして再利用できます。なお、エクスポートされたモデルはすでに初期化されており、すぐに使用できます。
ここで、新しい入力で同じモデル バージョン (v21) が使用されていることを確認できます。
これで、アプリケーションの異なるバージョン間で反復、取得、再利用できる、バージョン管理された Weave Model ができました。