> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-hivemind-launch.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# モデルでアプリケーションのバージョンをトラッキングする

> データとコードを組み合わせた構造化モデルを使って、アプリケーションのバージョンをトラッキングします。

`Model` は、データ (設定、トレーニング済みモデルの重み、その他の情報を含む場合があります) と、そのモデルの動作を定義するコードを組み合わせたものです。コードをこの API に対応するよう構成することで、アプリケーションを構造的にバージョン管理でき、Experiments をより体系的に追跡できます。

<Tabs>
  <Tab title="Python">
    Weave でモデルを作成するには、次のものが必要です。

    * `weave.Model` を継承するクラス
    * すべてのパラメーターに対する型定義
    * `@weave.op()` デコレーターが付いた、型付きの `predict` 関数

    ```python lines theme={null}
    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}
    ```

    モデルは通常どおり次のように呼び出せます。

    ```python lines theme={null}
    import weave
    weave.init('intro-example')

    model = YourModel(attribute1='hello', attribute2=5)
    model.predict('world')
    ```

    これにより、`predict()` を呼び出すたびに、モデルの設定が inputs と outputs とともにトラッキングされます。

    ## モデルの自動バージョン管理

    モデルを定義するパラメーターやコードを変更すると、それらの変更がログされ、バージョンが更新されます。
    これにより、モデルの異なるバージョン間で予測を比較できます。これを使ってプロンプトを改善したり、最新の LLM を試したり、異なる設定での予測を比較したりできます。

    たとえば、ここでは新しいモデルを作成します。

    ```python lines theme={null}
    import weave
    weave.init('intro-example')

    model = YourModel(attribute1='howdy', attribute2=10)
    model.predict('world')
    ```

    これを呼び出すと、UI でこの Model の 2 つのバージョンが表示され、それぞれで異なる呼び出しがトラッキングされていることがわかります。

    ## モデルをサーブする

    モデルをサーブするには、次を呼び出すだけで FastAPI サーバーを簡単に起動できます。

    ```bash theme={null}
    weave serve <your model ref>
    ```

    追加の手順については、[serve](/ja/weave/guides/tools/serve) を参照してください。

    ## 本番呼び出しをトラッキングする

    本番呼び出しを区別するには、UI または API で簡単にフィルターできるよう、予測に追加の属性を付与できます。

    ```python lines theme={null}
    with weave.attributes({'env': 'production'}):
        model.predict('world')
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={null}
    この機能はまだ TypeScript では利用できません。続報をお待ちください
    ```
  </Tab>
</Tabs>
