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

# 使用例

> 実践的なコード例を通して、Serverless Inference の使い方を学びます


これらの例では、トレース、評価、比較のために、Weave で Serverless Inference を使用する方法を紹介します。各例を順に試すことで、モデルの Call を計装してその動作を観察し、データセットに対するパフォーマンスを測定し、複数のモデルを並べて比較する方法を学べます。

以下のセクションでは、基本的なトレースの例と、より高度な評価ワークフローを順に説明します。どちらの例を実行する前にも、[前提条件](/ja/inference/prerequisites/) を完了してください。

<div id="basic-example-trace-llama-31-8b-with-weave">
  ## 基本例: Llama 3.1 8B を Weave でトレースする
</div>

この例では、Llama 3.1 8B モデルにプロンプトを送信し、その call を Weave でトレースする方法を示します。トレースでは、LLM call の入力と出力を完全に取得し、パフォーマンスを監視して、Weave UI で結果を分析できます。

<Tip>
  [Weave のトレース](/ja/weave/guides/tracking/tracing)の詳細をご覧ください。
</Tip>

この例では、次のことを行います。

* Chat Completion リクエストを行う `@weave.op()` デコレータ付きの関数を定義します。
* Weave がトレースを記録し、W\&B の entity と project にリンクします。
* Weave が関数を自動的にトレースし、入力、出力、レイテンシ、メタデータをログします。
* 結果はターミナルに出力され、トレースは [https://wandb.ai](https://wandb.ai) の **トレース** タブに表示されます。

```python theme={null}
import weave
import openai

# トレース用の Weave チームとプロジェクトを設定する
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',

    # https://wandb.ai/settings で API キーを作成する
    api_key="[YOUR-API-KEY]",

    # オプション: 使用状況トラッキング用のチームとプロジェクト
    project="wandb/inference-demo",
)

# Weave でモデルの call をトレースする
@weave.op()
def run_chat():
    response = client.chat.completions.create(
        model="meta-llama/Llama-3.1-8B-Instruct",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a joke."}
        ],
    )
    return response.choices[0].message.content

# トレースされた call を実行してログする
output = run_chat()
print(output)
```

コードを実行したら、次のいずれかの方法で Weave のトレースを表示できます。

* ターミナルに出力されたリンクをクリックします。たとえば、`https://wandb.ai/[YOUR-TEAM]/[YOUR-PROJECT]/r/call/01977f8f-839d-7dda-b0c2-27292ef0e04g`。
* [https://wandb.ai](https://wandb.ai) にアクセスして **トレース** タブを選択します。

基本的なトレースが動作したら、個々の call を確認するだけでなく、より高度な workflow に進むことができます。

<div id="advanced-example-use-weave-evaluations-and-leaderboards">
  ## 高度な例: Weave 評価とリーダーボードを使用する
</div>

モデルのcallのトレースに加えて、パフォーマンスを評価し、リーダーボードを公開できます。この例では、質問応答データセット上で2つのモデルを比較し、同じプロンプトに対して Llama 3.1 8B と DeepSeek-V3 がどのようなパフォーマンスを示すかを確認します。

```python theme={null}
import os
import asyncio
import openai
import weave
from weave.flow import leaderboard
from weave.trace.ref_util import get_ref

# トレース用の Weave チームとプロジェクトを設定する
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

dataset = [
    {"input": "What is 2 + 2?", "target": "4"},
    {"input": "Name a primary color.", "target": "red"},
]

@weave.op
def exact_match(target: str, output: str) -> float:
    return float(target.strip().lower() == output.strip().lower())

class WBInferenceModel(weave.Model):
    model: str

    @weave.op
    def predict(self, prompt: str) -> str:
        client = openai.OpenAI(
            base_url="https://api.inference.wandb.ai/v1",
            # https://wandb.ai/settings で APIキーを作成する
            api_key="[YOUR-API-KEY]",
            # オプション: 使用状況トラッキング用のチームとプロジェクト
            project="[YOUR-TEAM]/[YOUR-PROJECT]",
        )
        resp = client.chat.completions.create(
            model=self.model,
            messages=[{"role": "user", "content": prompt}],
        )
        return resp.choices[0].message.content

llama = WBInferenceModel(model="meta-llama/Llama-3.1-8B-Instruct")
deepseek = WBInferenceModel(model="deepseek-ai/DeepSeek-V3-0324")

def preprocess_model_input(example):
    return {"prompt": example["input"]}

evaluation = weave.Evaluation(
    name="QA",
    dataset=dataset,
    scorers=[exact_match],
    preprocess_model_input=preprocess_model_input,
)

async def run_eval():
    await evaluation.evaluate(llama)
    await evaluation.evaluate(deepseek)

asyncio.run(run_eval())

spec = leaderboard.Leaderboard(
    name="Inference Leaderboard",
    description="Compare models on a QA dataset",
    columns=[
        leaderboard.LeaderboardColumn(
            evaluation_object_ref=get_ref(evaluation).uri(),
            scorer_name="exact_match",
            summary_metric_path="mean",
        )
    ],
)

weave.publish(spec)
```

このコードを実行したら、[https://wandb.ai/](https://wandb.ai/) の W\&B アカウントにアクセスし、次の操作を行います。

* **トレース** タブを選択して、[トレースを確認します](/ja/weave/guides/tracking/tracing)。
* **Evals** タブを選択して、[モデルの評価を確認します](/ja/weave/guides/core-types/evaluations)。
* **Leaders** タブを選択して、[生成されたリーダーボードを確認します](/ja/weave/guides/core-types/leaderboards)。

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-sandboxes-integrations-placement/o_NUj-zO1if2NqBx/images/inference/inference-advanced-evals.png?fit=max&auto=format&n=o_NUj-zO1if2NqBx&q=85&s=dfd0fb4bbd4e1637213bf63ed8e9fcd6" alt="モデルの評価を確認" width="3024" height="1194" data-path="images/inference/inference-advanced-evals.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-sandboxes-integrations-placement/o_NUj-zO1if2NqBx/images/inference/inference-advanced-leaderboard.png?fit=max&auto=format&n=o_NUj-zO1if2NqBx&q=85&s=5ac163385dc5996bee9d666892b783ac" alt="リーダーボードを確認" width="3024" height="1194" data-path="images/inference/inference-advanced-leaderboard.png" />
</Frame>

両方の例を完了すると、トレースされたモデルの Call、公開された評価、およびデータセット上でモデルを比較するリーダーボードが揃います。

<div id="next-steps">
  ## 次のステップ
</div>

Serverless Inference の探索を続けるには、次を試してください。

* 利用可能なすべての method は、[API リファレンス](/ja/inference/api-reference/)で確認してください。
* [UI](/ja/inference/ui-guide/)でモデルを試してください。
